Skip to content

Commit eb25e67

Browse files
committed
Update retry logic for trace retrieval.
(cherry picked from commit f47f01a834c80fadf754ed1ceee5179c1bd00deb)
1 parent 8ec9109 commit eb25e67

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITEndToEndTracingTest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,14 @@
3939
import com.google.cloud.spanner.connection.ConnectionOptions;
4040
import com.google.cloud.trace.v1.TraceServiceClient;
4141
import com.google.cloud.trace.v1.TraceServiceSettings;
42-
import com.google.devtools.cloudtrace.v1.Trace;
42+
import com.google.common.base.Stopwatch;
4343
import io.opentelemetry.api.trace.Span;
4444
import io.opentelemetry.api.trace.Tracer;
4545
import io.opentelemetry.context.Scope;
4646
import java.io.IOException;
4747
import java.util.Arrays;
4848
import java.util.Collection;
49+
import java.util.concurrent.TimeUnit;
4950
import org.junit.AfterClass;
5051
import org.junit.BeforeClass;
5152
import org.junit.ClassRule;
@@ -96,23 +97,21 @@ private void assertTrace(String traceId) throws IOException, InterruptedExceptio
9697
env.getTestHelper().getOptions().getCredentials()))
9798
.build();
9899
try (TraceServiceClient client = TraceServiceClient.create(settings)) {
99-
// It can take a few seconds before the trace is visible.
100-
Thread.sleep(10000);
101100
boolean foundTrace = false;
102-
for (int attempts = 0; attempts < 2; attempts++) {
101+
Stopwatch metricsPollingStopwatch = Stopwatch.createStarted();
102+
while (!foundTrace && metricsPollingStopwatch.elapsed(TimeUnit.SECONDS) < 30) {
103+
// Try every 5 seconds
104+
Thread.sleep(5000);
103105
try {
104-
Trace trace = client.getTrace(env.getTestHelper().getInstanceId().getProject(), traceId);
105-
// Assert Spanner Frontend Trace is present
106-
assertTrue(
107-
trace.getSpansList().stream()
108-
.anyMatch(span -> "Spanner.ExecuteStreamingSql".equals(span.getName())));
109-
foundTrace = true;
110-
break;
106+
foundTrace =
107+
client.getTrace(env.getTestHelper().getInstanceId().getProject(), traceId)
108+
.getSpansList().stream()
109+
.anyMatch(span -> "Spanner.ExecuteStreamingSql".equals(span.getName()));
111110
} catch (ApiException apiException) {
112111
assumeTrue(
113112
apiException.getStatusCode() != null
114113
&& StatusCode.Code.NOT_FOUND.equals(apiException.getStatusCode().getCode()));
115-
Thread.sleep(5000L);
114+
System.out.println("Trace NOT_FOUND error ignored");
116115
}
117116
}
118117
assertTrue(foundTrace);

0 commit comments

Comments
 (0)