Skip to content
This repository was archived by the owner on Apr 7, 2026. It is now read-only.

Commit d80428a

Browse files
authored
fix: create filter in correct order (#180)
* fix: create filter in correct order * tests: fix flaky test * tests: fix another flaky test
1 parent 060a81a commit d80428a

4 files changed

Lines changed: 19 additions & 31 deletions

File tree

β€Žgoogle-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.javaβ€Ž

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -703,9 +703,9 @@ public Paginated<Operation> listOperations(String nextPageToken) {
703703
instanceName,
704704
0,
705705
String.format(
706-
"(name:%s/operations/) AND (metadata.@type:type.googleapis.com/%s)",
707-
String.format("%s/databases/%s", instanceName, databaseId),
708-
CreateDatabaseMetadata.getDescriptor().getFullName()),
706+
"(metadata.@type:type.googleapis.com/%s) AND (name:%s/operations/)",
707+
CreateDatabaseMetadata.getDescriptor().getFullName(),
708+
String.format("%s/databases/%s", instanceName, databaseId)),
709709
nextPageToken);
710710
}
711711
},
@@ -822,9 +822,9 @@ public Paginated<Operation> listOperations(String nextPageToken) {
822822
instanceName,
823823
0,
824824
String.format(
825-
"(metadata.name:%s) AND (metadata.@type:type.googleapis.com/%s)",
826-
String.format("%s/backups/%s", instanceName, backupId),
827-
CreateBackupMetadata.getDescriptor().getFullName()),
825+
"(metadata.@type:type.googleapis.com/%s) AND (metadata.name:%s)",
826+
CreateBackupMetadata.getDescriptor().getFullName(),
827+
String.format("%s/backups/%s", instanceName, backupId)),
828828
nextPageToken);
829829
}
830830
},
@@ -874,9 +874,9 @@ public Paginated<Operation> listOperations(String nextPageToken) {
874874
databaseInstanceName,
875875
0,
876876
String.format(
877-
"(metadata.name:%s) AND (metadata.@type:type.googleapis.com/%s)",
878-
String.format("%s/databases/%s", databaseInstanceName, databaseId),
879-
RestoreDatabaseMetadata.getDescriptor().getFullName()),
877+
"(metadata.@type:type.googleapis.com/%s) AND (metadata.name:%s)",
878+
RestoreDatabaseMetadata.getDescriptor().getFullName(),
879+
String.format("%s/databases/%s", databaseInstanceName, databaseId)),
880880
nextPageToken);
881881
}
882882
},

β€Žgoogle-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseAdminGaxTest.javaβ€Ž

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.google.cloud.spanner.admin.database.v1.MockDatabaseAdminImpl;
2828
import com.google.common.base.Throwables;
2929
import com.google.common.collect.Lists;
30+
import com.google.common.util.concurrent.Uninterruptibles;
3031
import com.google.protobuf.AbstractMessage;
3132
import com.google.protobuf.Any;
3233
import com.google.protobuf.Empty;
@@ -45,6 +46,7 @@
4546
import java.util.List;
4647
import java.util.concurrent.ExecutionException;
4748
import java.util.concurrent.ScheduledThreadPoolExecutor;
49+
import java.util.concurrent.TimeUnit;
4850
import org.junit.After;
4951
import org.junit.AfterClass;
5052
import org.junit.Assert;
@@ -63,7 +65,6 @@
6365
public class DatabaseAdminGaxTest {
6466
public static class DelayedStatusRuntimeException extends RuntimeException {
6567
private final long millis;
66-
private boolean hasWaited = false;
6768

6869
public DelayedStatusRuntimeException(StatusRuntimeException cause, long millis) {
6970
super(cause);
@@ -72,14 +73,7 @@ public DelayedStatusRuntimeException(StatusRuntimeException cause, long millis)
7273

7374
@Override
7475
public synchronized Throwable getCause() {
75-
if (!hasWaited) {
76-
try {
77-
Thread.sleep(millis);
78-
hasWaited = true;
79-
} catch (InterruptedException e) {
80-
Thread.currentThread().interrupt();
81-
}
82-
}
76+
Uninterruptibles.sleepUninterruptibly(millis, TimeUnit.MILLISECONDS);
8377
return super.getCause();
8478
}
8579
}

β€Žgoogle-cloud-spanner/src/test/java/com/google/cloud/spanner/InstanceAdminGaxTest.javaβ€Ž

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.cloud.spanner.admin.instance.v1.MockInstanceAdminImpl;
3030
import com.google.common.base.Throwables;
3131
import com.google.common.collect.Lists;
32+
import com.google.common.util.concurrent.Uninterruptibles;
3233
import com.google.protobuf.AbstractMessage;
3334
import com.google.protobuf.Any;
3435
import com.google.protobuf.Empty;
@@ -52,6 +53,7 @@
5253
import java.util.List;
5354
import java.util.concurrent.ExecutionException;
5455
import java.util.concurrent.ScheduledThreadPoolExecutor;
56+
import java.util.concurrent.TimeUnit;
5557
import org.junit.After;
5658
import org.junit.AfterClass;
5759
import org.junit.Assert;
@@ -70,7 +72,6 @@
7072
public class InstanceAdminGaxTest {
7173
public static class DelayedStatusRuntimeException extends RuntimeException {
7274
private final long millis;
73-
private boolean hasWaited = false;
7475

7576
public DelayedStatusRuntimeException(StatusRuntimeException cause, long millis) {
7677
super(cause);
@@ -79,14 +80,7 @@ public DelayedStatusRuntimeException(StatusRuntimeException cause, long millis)
7980

8081
@Override
8182
public synchronized Throwable getCause() {
82-
if (!hasWaited) {
83-
try {
84-
Thread.sleep(millis);
85-
hasWaited = true;
86-
} catch (InterruptedException e) {
87-
Thread.currentThread().interrupt();
88-
}
89-
}
83+
Uninterruptibles.sleepUninterruptibly(millis, TimeUnit.MILLISECONDS);
9084
return super.getCause();
9185
}
9286
}

β€Žgoogle-cloud-spanner/src/test/java/com/google/cloud/spanner/MockDatabaseAdminServiceImpl.javaβ€Ž

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -588,14 +588,14 @@ private boolean matchesFilter(Object obj, String filter) throws Exception {
588588
Operation operation = (Operation) obj;
589589
Pattern pattern =
590590
Pattern.compile(
591-
"(?:\\(metadata.(?:name|database):(.*)\\)|\\(name:(.*)/operations/\\)) AND \\(metadata.@type:type.googleapis.com/(.*)\\)");
591+
"(?:\\(metadata.@type:type.googleapis.com/(.*)\\)) AND (?:\\(metadata.(?:name|database):(.*)\\)|\\(name:(.*)/operations/\\))");
592592
Matcher matcher = pattern.matcher(filter);
593593
if (matcher.matches()) {
594-
String objectName = matcher.group(1);
594+
String type = matcher.group(1);
595+
String objectName = matcher.group(2);
595596
if (objectName == null) {
596-
objectName = matcher.group(2);
597+
objectName = matcher.group(3);
597598
}
598-
String type = matcher.group(3);
599599
Any anyMetadata = operation.getMetadata();
600600
if (anyMetadata.getTypeUrl().endsWith(type)) {
601601
if (type.equals(CreateBackupMetadata.getDescriptor().getFullName())) {

0 commit comments

Comments
 (0)