From 1a86e4fd5b6198c300c13eba4d3d9d91c12c43f7 Mon Sep 17 00:00:00 2001 From: Thiago Nunes Date: Fri, 15 Jan 2021 09:22:00 +1100 Subject: [PATCH] fix: blanks span for session keepAlive traces (#797) The keepAlive traces were being tracked along with the parent span set by the client, which clutters the tracing stack. Here, we set the tracing to blank before issueing the keepAlive query. --- .../src/main/java/com/google/cloud/spanner/SessionImpl.java | 4 ++++ .../src/main/java/com/google/cloud/spanner/SessionPool.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java index a24742dbfd..a20a6b7b24 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java @@ -113,6 +113,10 @@ void setCurrentSpan(Span span) { currentSpan = span; } + Span getCurrentSpan() { + return currentSpan; + } + @Override public long executePartitionedUpdate(Statement stmt, UpdateOption... options) { setActive(null); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java index cc431b52a5..c9e1b72e77 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java @@ -77,6 +77,7 @@ import io.opencensus.metrics.Metrics; import io.opencensus.trace.Annotation; import io.opencensus.trace.AttributeValue; +import io.opencensus.trace.BlankSpan; import io.opencensus.trace.Span; import io.opencensus.trace.Status; import io.opencensus.trace.Tracer; @@ -1472,11 +1473,15 @@ public void prepareReadWriteTransaction() { private void keepAlive() { markUsed(); + final Span previousSpan = delegate.getCurrentSpan(); + delegate.setCurrentSpan(BlankSpan.INSTANCE); try (ResultSet resultSet = delegate .singleUse(TimestampBound.ofMaxStaleness(60, TimeUnit.SECONDS)) .executeQuery(Statement.newBuilder("SELECT 1").build())) { resultSet.next(); + } finally { + delegate.setCurrentSpan(previousSpan); } }