Skip to content
This repository has been archived by the owner on Sep 26, 2023. It is now read-only.

Commit

Permalink
Merge branch 'master' into sijun_mtls
Browse files Browse the repository at this point in the history
  • Loading branch information
arithmetic1728 committed May 6, 2021
2 parents 8814ba9 + 3bae27c commit c23acbd
Show file tree
Hide file tree
Showing 17 changed files with 121 additions and 141 deletions.
4 changes: 4 additions & 0 deletions .github/release-please.yml
@@ -1,2 +1,6 @@
releaseType: java-yoshi
bumpMinorPreMajor: true
branches:
- releaseType: java-lts
bumpMinorPreMajor: true
branch: 1.63.0-sp
80 changes: 36 additions & 44 deletions .github/sync-repo-settings.yaml
@@ -1,49 +1,41 @@
# Whether or not rebase-merging is enabled on this repository.
# Defaults to `true`
rebaseMergeAllowed: false

# Whether or not squash-merging is enabled on this repository.
# Defaults to `true`
squashMergeAllowed: true

# Whether or not PRs are merged with a merge commit on this repository.
# Defaults to `false`
mergeCommitAllowed: false

# Rules for master branch protection
branchProtectionRules:
# Identifies the protection rule pattern. Name of the branch to be protected.
# Defaults to `master`
- pattern: master
# Can admins overwrite branch protection.
# Defaults to `true`
isAdminEnforced: true
# Number of approving reviews required to update matching branches.
# Defaults to `1`
requiredApprovingReviewCount: 1
# Are reviews from code owners required to update matching branches.
# Defaults to `false`
requiresCodeOwnerReviews: true
# Require up to date branches
requiresStrictStatusChecks: true
# List of required status check contexts that must pass for commits to be accepted to matching branches.
requiredStatusCheckContexts:
- "bazel"
- "linkage-monitor (8)"
- "linkage-monitor (11)"
- "units (7)"
- "units (8)"
- "units (11)"
- "cla/google"
# List of explicit permissions to add (additive only)
- pattern: master
isAdminEnforced: true
requiredApprovingReviewCount: 1
requiresCodeOwnerReviews: true
requiresStrictStatusChecks: true
requiredStatusCheckContexts:
- bazel
- linkage-monitor (8)
- linkage-monitor (11)
- units (7)
- units (8)
- units (11)
- cla/google
- pattern: 1.63.0-sp
isAdminEnforced: true
requiredApprovingReviewCount: 1
requiresCodeOwnerReviews: true
requiresStrictStatusChecks: true
requiredStatusCheckContexts:
- bazel
- linkage-monitor (8)
- linkage-monitor (11)
- units (7)
- units (8)
- units (11)
- cla/google
permissionRules:
- team: yoshi-admins
permission: admin
- team: yoshi-java-admins
permission: admin
- team: yoshi-java
permission: push
- team: actools
permission: admin
- team: actools-java
permission: push
- team: yoshi-admins
permission: admin
- team: yoshi-java-admins
permission: admin
- team: yoshi-java
permission: push
- team: actools
permission: admin
- team: actools-java
permission: push
8 changes: 8 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog

### [1.63.3](https://www.github.com/googleapis/gax-java/compare/v1.63.2...v1.63.3) (2021-05-04)


### Bug Fixes

* fix flaky tests and non blocking semaphore ([#1365](https://www.github.com/googleapis/gax-java/issues/1365)) ([fc8e520](https://www.github.com/googleapis/gax-java/commit/fc8e520acfaf843ac61e806bdb4b5fe393d0b447))
* Remove a flacky test in FlowControllerTest ([#1360](https://www.github.com/googleapis/gax-java/issues/1360)) ([2cca0bf](https://www.github.com/googleapis/gax-java/commit/2cca0bf9e96271dd52e8bffa00b8f2d45d358d35))

### [1.63.2](https://www.github.com/googleapis/gax-java/compare/v1.63.1...v1.63.2) (2021-04-30)


Expand Down
12 changes: 6 additions & 6 deletions README.md
Expand Up @@ -29,27 +29,27 @@ If you are using Maven, add this to your pom.xml file
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax</artifactId>
<version>1.63.2</version>
<version>1.63.3</version>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
<version>1.63.2</version>
<version>1.63.3</version>
</dependency>
```

If you are using Gradle, add this to your dependencies

```Groovy
compile 'com.google.api:gax:1.63.2',
'com.google.api:gax-grpc:1.63.2'
compile 'com.google.api:gax:1.63.3',
'com.google.api:gax-grpc:1.63.3'
```

If you are using SBT, add this to your dependencies

```Scala
libraryDependencies += "com.google.api" % "gax" % "1.63.2"
libraryDependencies += "com.google.api" % "gax-grpc" % "1.63.2"
libraryDependencies += "com.google.api" % "gax" % "1.63.3"
libraryDependencies += "com.google.api" % "gax-grpc" % "1.63.3"
```
[//]: # ({x-version-update-end})

Expand Down
4 changes: 2 additions & 2 deletions benchmark/build.gradle
@@ -1,4 +1,4 @@
project.version = "0.65.3-SNAPSHOT" // {x-version-update:benchmark:current}
project.version = "0.65.4-SNAPSHOT" // {x-version-update:benchmark:current}

buildscript {
repositories {
Expand All @@ -23,7 +23,7 @@ dependencies {
compile project(':gax-grpc')
compile "io.grpc:grpc-netty:${libraries['version.io_grpc']}"

compile 'com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.21.0'
compile 'com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.24.0'
compile 'com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.86.0'
}

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Expand Up @@ -24,7 +24,7 @@ apply plugin: 'com.github.sherter.google-java-format'
apply plugin: 'io.codearte.nexus-staging'

// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync)
project.version = "1.63.3-SNAPSHOT" // {x-version-update:gax:current}
project.version = "1.63.4-SNAPSHOT" // {x-version-update:gax:current}

ext {
// Project names not used for release
Expand Down
8 changes: 4 additions & 4 deletions dependencies.properties
Expand Up @@ -8,16 +8,16 @@

# Versions of oneself
# {x-version-update-start:gax:current}
version.gax=1.63.3-SNAPSHOT
version.gax=1.63.4-SNAPSHOT
# {x-version-update-end}
# {x-version-update-start:gax:current}
version.gax_grpc=1.63.3-SNAPSHOT
version.gax_grpc=1.63.4-SNAPSHOT
# {x-version-update-end}
# {x-version-update-start:gax:current}
version.gax_bom=1.63.3-SNAPSHOT
version.gax_bom=1.63.4-SNAPSHOT
# {x-version-update-end}
# {x-version-update-start:gax-httpjson:current}
version.gax_httpjson=0.80.3-SNAPSHOT
version.gax_httpjson=0.80.4-SNAPSHOT
# {x-version-update-end}

# Versions for dependencies which actual artifacts differ between Bazel and Gradle.
Expand Down
2 changes: 1 addition & 1 deletion gax-bom/build.gradle
Expand Up @@ -12,7 +12,7 @@ buildscript {

archivesBaseName = "gax-bom"

project.version = "1.63.3-SNAPSHOT" // {x-version-update:gax-bom:current}
project.version = "1.63.4-SNAPSHOT" // {x-version-update:gax-bom:current}

ext {
mavenJavaDir = "$project.buildDir/publications/mavenJava"
Expand Down
14 changes: 7 additions & 7 deletions gax-bom/pom.xml
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.api</groupId>
<artifactId>gax-bom</artifactId>
<version>1.63.3-SNAPSHOT</version><!-- {x-version-update:gax-bom:current} -->
<version>1.63.4-SNAPSHOT</version><!-- {x-version-update:gax-bom:current} -->
<packaging>pom</packaging>
<name>GAX (Google Api eXtensions) for Java</name>
<description>Google Api eXtensions for Java</description>
Expand Down Expand Up @@ -33,34 +33,34 @@
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax</artifactId>
<version>1.63.3-SNAPSHOT</version><!-- {x-version-update:gax:current} -->
<version>1.63.4-SNAPSHOT</version><!-- {x-version-update:gax:current} -->
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax</artifactId>
<version>1.63.3-SNAPSHOT</version><!-- {x-version-update:gax:current} -->
<version>1.63.4-SNAPSHOT</version><!-- {x-version-update:gax:current} -->
<classifier>testlib</classifier>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
<version>1.63.3-SNAPSHOT</version><!-- {x-version-update:gax-grpc:current} -->
<version>1.63.4-SNAPSHOT</version><!-- {x-version-update:gax-grpc:current} -->
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
<version>1.63.3-SNAPSHOT</version><!-- {x-version-update:gax-grpc:current} -->
<version>1.63.4-SNAPSHOT</version><!-- {x-version-update:gax-grpc:current} -->
<classifier>testlib</classifier>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-httpjson</artifactId>
<version>0.80.3-SNAPSHOT</version><!-- {x-version-update:gax-httpjson:current} -->
<version>0.80.4-SNAPSHOT</version><!-- {x-version-update:gax-httpjson:current} -->
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-httpjson</artifactId>
<version>0.80.3-SNAPSHOT</version><!-- {x-version-update:gax-httpjson:current} -->
<version>0.80.4-SNAPSHOT</version><!-- {x-version-update:gax-httpjson:current} -->
<classifier>testlib</classifier>
</dependency>
</dependencies>
Expand Down
2 changes: 1 addition & 1 deletion gax-grpc/build.gradle
@@ -1,7 +1,7 @@
archivesBaseName = "gax-grpc"

// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync)
project.version = "1.63.3-SNAPSHOT" // {x-version-update:gax-grpc:current}
project.version = "1.63.4-SNAPSHOT" // {x-version-update:gax-grpc:current}

dependencies {
compile project(':gax'),
Expand Down
2 changes: 1 addition & 1 deletion gax-httpjson/build.gradle
@@ -1,7 +1,7 @@
archivesBaseName = "gax-httpjson"

// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync)
project.version = "0.80.3-SNAPSHOT" // {x-version-update:gax-httpjson:current}
project.version = "0.80.4-SNAPSHOT" // {x-version-update:gax-httpjson:current}

dependencies {
compile project(':gax'),
Expand Down
2 changes: 1 addition & 1 deletion gax/build.gradle
@@ -1,7 +1,7 @@
archivesBaseName = "gax"

// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync)
project.version = "1.63.3-SNAPSHOT" // {x-version-update:gax:current}
project.version = "1.63.4-SNAPSHOT" // {x-version-update:gax:current}

dependencies {
compile libraries['maven.com_google_guava_guava'],
Expand Down
Expand Up @@ -35,7 +35,7 @@

/** A {@link Semaphore64} that immediately returns with failure if permits are not available. */
class NonBlockingSemaphore implements Semaphore64 {
private AtomicLong availablePermits;
private AtomicLong acquiredPermits;
private AtomicLong limit;

private static void checkNotNegative(long l) {
Expand All @@ -44,17 +44,18 @@ private static void checkNotNegative(long l) {

NonBlockingSemaphore(long permits) {
checkNotNegative(permits);
this.availablePermits = new AtomicLong(permits);
this.acquiredPermits = new AtomicLong(0);
this.limit = new AtomicLong(permits);
}

@Override
public void release(long permits) {
checkNotNegative(permits);
while (true) {
long old = availablePermits.get();
long old = acquiredPermits.get();
// TODO: throw exceptions when the permits overflow
if (availablePermits.compareAndSet(old, Math.min(old + permits, limit.get()))) {
long newAcquired = Math.max(0, old - permits);
if (acquiredPermits.compareAndSet(old, newAcquired)) {
return;
}
}
Expand All @@ -64,11 +65,11 @@ public void release(long permits) {
public boolean acquire(long permits) {
checkNotNegative(permits);
while (true) {
long old = availablePermits.get();
if (old < permits) {
long old = acquiredPermits.get();
if (old + permits > limit.get()) {
return false;
}
if (availablePermits.compareAndSet(old, old - permits)) {
if (acquiredPermits.compareAndSet(old, old + permits)) {
return true;
}
}
Expand All @@ -79,13 +80,13 @@ public boolean acquirePartial(long permits) {
checkNotNegative(permits);
// To allow individual oversized requests to be sent, clamp the requested permits to the maximum
// limit. This will allow individual large requests to be sent. Please note that this behavior
// will result in availablePermits going negative.
// will result in acquiredPermits going over limit.
while (true) {
long old = availablePermits.get();
if (old < Math.min(limit.get(), permits)) {
long old = acquiredPermits.get();
if (old + permits > limit.get() && old > 0) {
return false;
}
if (availablePermits.compareAndSet(old, old - permits)) {
if (acquiredPermits.compareAndSet(old, old + permits)) {
return true;
}
}
Expand All @@ -94,7 +95,6 @@ public boolean acquirePartial(long permits) {
@Override
public void increasePermitLimit(long permits) {
checkNotNegative(permits);
availablePermits.addAndGet(permits);
limit.addAndGet(permits);
}

Expand All @@ -106,7 +106,6 @@ public void reducePermitLimit(long reduction) {
long oldLimit = limit.get();
Preconditions.checkState(oldLimit - reduction > 0, "permit limit underflow");
if (limit.compareAndSet(oldLimit, oldLimit - reduction)) {
availablePermits.addAndGet(-reduction);
return;
}
}
Expand Down
Expand Up @@ -36,8 +36,6 @@

import com.google.api.gax.batching.FlowControlEventStats.FlowControlEvent;
import com.google.api.gax.batching.FlowController.MaxOutstandingRequestBytesReachedException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down Expand Up @@ -71,27 +69,14 @@ public void testCreateEvent() {
}

@Test
public void testGetLastEvent() throws InterruptedException {
final FlowControlEventStats stats = new FlowControlEventStats();
final long currentTime = System.currentTimeMillis();
public void testGetLastEvent() {
FlowControlEventStats stats = new FlowControlEventStats();
long currentTime = System.currentTimeMillis();

List<Thread> threads = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
final int timeElapsed = i;
Thread t =
new Thread() {
@Override
public void run() {
stats.recordFlowControlEvent(
FlowControlEvent.createReserveDelayed(currentTime + timeElapsed, timeElapsed));
}
};
threads.add(t);
t.start();
}

for (Thread t : threads) {
t.join(10);
int timeElapsed = i;
stats.recordFlowControlEvent(
FlowControlEvent.createReserveDelayed(currentTime + timeElapsed, timeElapsed));
}

assertEquals(currentTime + 10, stats.getLastFlowControlEvent().getTimestampMs());
Expand Down

0 comments on commit c23acbd

Please sign in to comment.