From d4740894d188fba56981163e6d2f4e1f2d8ca645 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Thu, 19 Mar 2020 13:52:20 -0700 Subject: [PATCH] Follow static import convention (#254) * Follow static import convention * Follow decorator static field name convention --- .../elasticsearch6_4/RestResponseListener.java | 11 ++++++----- .../hibernate/core/v3_3/QueryInstrumentation.java | 4 ++-- .../core/v3_3/SessionFactoryInstrumentation.java | 6 +++--- .../hibernate/core/v3_3/SessionInstrumentation.java | 6 +++--- .../hibernate/core/v4_0/QueryInstrumentation.java | 4 ++-- .../core/v4_0/SessionFactoryInstrumentation.java | 6 +++--- .../hibernate/core/v4_0/SessionInstrumentation.java | 6 +++--- .../hibernate/HibernateDecorator.java | 2 +- .../hibernate/SessionMethodUtils.java | 12 ++++++------ .../servlet/filter/FilterInstrumentation.java | 7 ++++--- .../sparkjava/RoutesInstrumentation.java | 3 ++- .../springdata/SpringDataDecorator.java | 2 +- .../springdata/SpringRepositoryInstrumentation.java | 10 +++++----- .../opentelemetry/auto/test/utils/TraceUtils.groovy | 8 ++++---- 14 files changed, 45 insertions(+), 42 deletions(-) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/src/main/java/io/opentelemetry/auto/instrumentation/elasticsearch6_4/RestResponseListener.java b/instrumentation/elasticsearch/elasticsearch-rest-6.4/src/main/java/io/opentelemetry/auto/instrumentation/elasticsearch6_4/RestResponseListener.java index c943777b6d..cb89675b07 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/src/main/java/io/opentelemetry/auto/instrumentation/elasticsearch6_4/RestResponseListener.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/src/main/java/io/opentelemetry/auto/instrumentation/elasticsearch6_4/RestResponseListener.java @@ -15,7 +15,8 @@ */ package io.opentelemetry.auto.instrumentation.elasticsearch6_4; -import io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchRestClientDecorator; +import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchRestClientDecorator.DECORATE; + import io.opentelemetry.trace.Span; import org.elasticsearch.client.Response; import org.elasticsearch.client.ResponseListener; @@ -33,25 +34,25 @@ public class RestResponseListener implements ResponseListener { @Override public void onSuccess(final Response response) { if (response.getHost() != null) { - ElasticsearchRestClientDecorator.DECORATE.onResponse(span, response); + DECORATE.onResponse(span, response); } try { listener.onSuccess(response); } finally { - ElasticsearchRestClientDecorator.DECORATE.beforeFinish(span); + DECORATE.beforeFinish(span); span.end(); } } @Override public void onFailure(final Exception e) { - ElasticsearchRestClientDecorator.DECORATE.onError(span, e); + DECORATE.onError(span, e); try { listener.onFailure(e); } finally { - ElasticsearchRestClientDecorator.DECORATE.beforeFinish(span); + DECORATE.beforeFinish(span); span.end(); } } diff --git a/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java index 6f6f261927..e661f03ab0 100644 --- a/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate.core.v3_3; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -76,7 +76,7 @@ public class QueryInstrumentation extends AbstractHibernateInstrumentation { SessionMethodUtils.startScopeFrom( contextStore, query, "hibernate.query." + name, null, true); if (spanWithScope != null) { - DECORATOR.onStatement(spanWithScope.getSpan(), query.getQueryString()); + DECORATE.onStatement(spanWithScope.getSpan(), query.getQueryString()); } return spanWithScope; } diff --git a/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java index 1bd7d1ca75..f10ae3efd5 100644 --- a/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate.core.v3_3; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.TRACER; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; @@ -76,8 +76,8 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat public static void openSession(@Advice.Return final Object session) { final Span span = TRACER.spanBuilder("hibernate.session").startSpan(); - DECORATOR.afterStart(span); - DECORATOR.onConnection(span, session); + DECORATE.afterStart(span); + DECORATE.onConnection(span, session); if (session instanceof Session) { final ContextStore contextStore = diff --git a/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java index fc0947b46e..31671e1a87 100644 --- a/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate.core.v3_3; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; @@ -142,8 +142,8 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation { return; } - DECORATOR.onError(sessionSpan, throwable); - DECORATOR.beforeFinish(sessionSpan); + DECORATE.onError(sessionSpan, throwable); + DECORATE.beforeFinish(sessionSpan); sessionSpan.end(); } } diff --git a/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java index 921f77194d..d4b0592801 100644 --- a/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate.core.v4_0; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -76,7 +76,7 @@ public class QueryInstrumentation extends AbstractHibernateInstrumentation { SessionMethodUtils.startScopeFrom( contextStore, query, "hibernate.query." + name, null, true); if (spanWithScope != null) { - DECORATOR.onStatement(spanWithScope.getSpan(), query.getQueryString()); + DECORATE.onStatement(spanWithScope.getSpan(), query.getQueryString()); } return spanWithScope; } diff --git a/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java index 2be3cb6a01..20fb669b9f 100644 --- a/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate.core.v4_0; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.TRACER; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; @@ -67,8 +67,8 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat public static void openSession(@Advice.Return final SharedSessionContract session) { final Span span = TRACER.spanBuilder("hibernate.session").startSpan(); - DECORATOR.afterStart(span); - DECORATOR.onConnection(span, session); + DECORATE.afterStart(span); + DECORATE.onConnection(span, session); final ContextStore contextStore = InstrumentationContext.get(SharedSessionContract.class, Span.class); diff --git a/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java index 89dde9248f..b294519163 100644 --- a/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate.core.v4_0; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; @@ -131,8 +131,8 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation { return; } - DECORATOR.onError(sessionSpan, throwable); - DECORATOR.beforeFinish(sessionSpan); + DECORATE.onError(sessionSpan, throwable); + DECORATE.beforeFinish(sessionSpan); sessionSpan.end(); } } diff --git a/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/HibernateDecorator.java b/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/HibernateDecorator.java index adc97406e6..1a00185c9c 100644 --- a/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/HibernateDecorator.java +++ b/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/HibernateDecorator.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.Set; public class HibernateDecorator extends OrmClientDecorator { - public static final HibernateDecorator DECORATOR = new HibernateDecorator(); + public static final HibernateDecorator DECORATE = new HibernateDecorator(); // TODO use tracer names *.hibernate-3.3, *.hibernate-4.0, *.hibernate-4.3 respectively in each // module public static final Tracer TRACER = diff --git a/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/SessionMethodUtils.java b/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/SessionMethodUtils.java index d4291ad4c9..e2051042d4 100644 --- a/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/SessionMethodUtils.java +++ b/instrumentation/hibernate/hibernate-common/src/main/java/io/opentelemetry/auto/instrumentation/hibernate/SessionMethodUtils.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.hibernate; -import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.hibernate.HibernateDecorator.TRACER; import io.opentelemetry.auto.bootstrap.CallDepthThreadLocalMap; @@ -52,8 +52,8 @@ public class SessionMethodUtils { if (createSpan) { final Span span = TRACER.spanBuilder(operationName).setParent(sessionSpan).startSpan(); - DECORATOR.afterStart(span); - DECORATOR.onOperation(span, entity); + DECORATE.afterStart(span); + DECORATE.onOperation(span, entity); return new SpanWithScope(span, TRACER.withSpan(span)); } else { return new SpanWithScope(null, TRACER.withSpan(sessionSpan)); @@ -73,11 +73,11 @@ public class SessionMethodUtils { final Span span = spanWithScope.getSpan(); if (span != null) { - DECORATOR.onError(span, throwable); + DECORATE.onError(span, throwable); if (entity != null) { - DECORATOR.onOperation(span, entity); + DECORATE.onOperation(span, entity); } - DECORATOR.beforeFinish(span); + DECORATE.beforeFinish(span); span.end(); } spanWithScope.closeScope(); diff --git a/instrumentation/servlet/src/main/java/io/opentelemetry/auto/instrumentation/servlet/filter/FilterInstrumentation.java b/instrumentation/servlet/src/main/java/io/opentelemetry/auto/instrumentation/servlet/filter/FilterInstrumentation.java index 193ebe9991..bb2f393d38 100644 --- a/instrumentation/servlet/src/main/java/io/opentelemetry/auto/instrumentation/servlet/filter/FilterInstrumentation.java +++ b/instrumentation/servlet/src/main/java/io/opentelemetry/auto/instrumentation/servlet/filter/FilterInstrumentation.java @@ -15,6 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.servlet.filter; +import static io.opentelemetry.auto.instrumentation.servlet.filter.FilterDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.servlet.filter.FilterDecorator.TRACER; import static io.opentelemetry.auto.tooling.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; @@ -85,7 +86,7 @@ public final class FilterInstrumentation extends Instrumenter.Default { } final Span span = TRACER.spanBuilder("servlet.filter").startSpan(); - FilterDecorator.DECORATE.afterStart(span); + DECORATE.afterStart(span); // Here we use "this" instead of "the method target" to distinguish abstract filter instances. span.setAttribute(MoreTags.RESOURCE_NAME, filter.getClass().getSimpleName() + ".doFilter"); @@ -100,8 +101,8 @@ public final class FilterInstrumentation extends Instrumenter.Default { return; } final Span span = spanWithScope.getSpan(); - FilterDecorator.DECORATE.onError(span, throwable); - FilterDecorator.DECORATE.beforeFinish(span); + DECORATE.onError(span, throwable); + DECORATE.beforeFinish(span); span.end(); spanWithScope.closeScope(); } diff --git a/instrumentation/sparkjava-2.3/src/main/java/io/opentelemetry/auto/instrumentation/sparkjava/RoutesInstrumentation.java b/instrumentation/sparkjava-2.3/src/main/java/io/opentelemetry/auto/instrumentation/sparkjava/RoutesInstrumentation.java index 5290edc031..bd1d466bd8 100644 --- a/instrumentation/sparkjava-2.3/src/main/java/io/opentelemetry/auto/instrumentation/sparkjava/RoutesInstrumentation.java +++ b/instrumentation/sparkjava-2.3/src/main/java/io/opentelemetry/auto/instrumentation/sparkjava/RoutesInstrumentation.java @@ -15,6 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.sparkjava; +import static io.opentelemetry.auto.instrumentation.sparkjava.RoutesInstrumentation.TracerHolder.TRACER; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -80,7 +81,7 @@ public class RoutesInstrumentation extends Instrumenter.Default { public static void routeMatchEnricher( @Advice.Argument(0) final HttpMethod method, @Advice.Return final RouteMatch routeMatch) { - final Span span = TracerHolder.TRACER.getCurrentSpan(); + final Span span = TRACER.getCurrentSpan(); if (span != null && routeMatch != null) { final String resourceName = method.name().toUpperCase() + " " + routeMatch.getMatchUri(); span.updateName(resourceName); diff --git a/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringDataDecorator.java b/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringDataDecorator.java index a749d8f54b..abda17467f 100644 --- a/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringDataDecorator.java +++ b/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringDataDecorator.java @@ -23,7 +23,7 @@ import io.opentelemetry.trace.Tracer; import java.lang.reflect.Method; public final class SpringDataDecorator extends ClientDecorator { - public static final SpringDataDecorator DECORATOR = new SpringDataDecorator(); + public static final SpringDataDecorator DECORATE = new SpringDataDecorator(); public static final Tracer TRACER = OpenTelemetry.getTracerFactory().get("io.opentelemetry.auto.spring-data-1.8"); diff --git a/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringRepositoryInstrumentation.java b/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringRepositoryInstrumentation.java index 73ea93a3f3..086d69195e 100644 --- a/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringRepositoryInstrumentation.java +++ b/instrumentation/spring-data-1.8/src/main/java/io/opentelemetry/auto/instrumentation/springdata/SpringRepositoryInstrumentation.java @@ -15,7 +15,7 @@ */ package io.opentelemetry.auto.instrumentation.springdata; -import static io.opentelemetry.auto.instrumentation.springdata.SpringDataDecorator.DECORATOR; +import static io.opentelemetry.auto.instrumentation.springdata.SpringDataDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.springdata.SpringDataDecorator.TRACER; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; @@ -119,8 +119,8 @@ public final class SpringRepositoryInstrumentation extends Instrumenter.Default } final Span span = TRACER.spanBuilder("repository.operation").startSpan(); - DECORATOR.afterStart(span); - DECORATOR.onOperation(span, invokedMethod); + DECORATE.afterStart(span); + DECORATE.onOperation(span, invokedMethod); final Scope scope = TRACER.withSpan(span); @@ -128,10 +128,10 @@ public final class SpringRepositoryInstrumentation extends Instrumenter.Default try { result = methodInvocation.proceed(); } catch (final Throwable t) { - DECORATOR.onError(span, t); + DECORATE.onError(span, t); throw t; } finally { - DECORATOR.beforeFinish(span); + DECORATE.beforeFinish(span); span.end(); scope.close(); } diff --git a/testing/src/main/groovy/io/opentelemetry/auto/test/utils/TraceUtils.groovy b/testing/src/main/groovy/io/opentelemetry/auto/test/utils/TraceUtils.groovy index c5fda50cf0..3c2da3fe75 100644 --- a/testing/src/main/groovy/io/opentelemetry/auto/test/utils/TraceUtils.groovy +++ b/testing/src/main/groovy/io/opentelemetry/auto/test/utils/TraceUtils.groovy @@ -29,7 +29,7 @@ import java.util.concurrent.Callable class TraceUtils { - private static final BaseDecorator DECORATOR = new BaseDecorator() { + private static final BaseDecorator DECORATE = new BaseDecorator() { protected String getSpanType() { return null @@ -45,17 +45,17 @@ class TraceUtils { @SneakyThrows static T runUnderTrace(final String rootOperationName, final Callable r) { final Span span = TRACER.spanBuilder(rootOperationName).startSpan() - DECORATOR.afterStart(span) + DECORATE.afterStart(span) Scope scope = TRACER.withSpan(span) try { return r.call() } catch (final Exception e) { - DECORATOR.onError(span, e) + DECORATE.onError(span, e) throw e } finally { - DECORATOR.beforeFinish(span) + DECORATE.beforeFinish(span) span.end() scope.close() }