diff --git a/core-java/src/main/java/org/commonjava/indy/client/core/Indy.java b/core-java/src/main/java/org/commonjava/indy/client/core/Indy.java index 5c0a2b3..ba90769 100644 --- a/core-java/src/main/java/org/commonjava/indy/client/core/Indy.java +++ b/core-java/src/main/java/org/commonjava/indy/client/core/Indy.java @@ -22,6 +22,7 @@ import org.commonjava.indy.inject.IndyVersioningProvider; import org.commonjava.indy.model.core.io.IndyObjectMapper; import org.commonjava.indy.stats.IndyVersioning; +import org.commonjava.o11yphant.trace.TraceManager; import org.commonjava.o11yphant.trace.TracerConfiguration; import org.commonjava.util.jhttpc.auth.PasswordManager; import org.commonjava.util.jhttpc.model.SiteConfig; @@ -214,6 +215,8 @@ public static final class Builder private TracerConfiguration existedTraceConfig; + private TraceManager existedTraceManager; + private Builder() { } @@ -255,6 +258,12 @@ public Builder setExistedTraceConfig( TracerConfiguration existedTraceConfig ) return this; } + public Builder setExistedTraceManager( TraceManager traceManager ) + { + this.existedTraceManager = traceManager; + return this; + } + public Builder setAuthenticator( IndyClientAuthenticator authenticator ) { this.authenticator = authenticator; @@ -283,6 +292,7 @@ public Indy build() .setLocation( this.location ) .setPasswordManager( this.passwordManager ) .setExistedTraceConfig( this.existedTraceConfig ) + .setExistedTraceManager( this.existedTraceManager ) .setMdcCopyMappings( this.mdcCopyMappings ) .setObjectMapper( this.objectMapper ) .build(); diff --git a/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java b/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java index 6123dd9..4eb5599 100644 --- a/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java +++ b/core-java/src/main/java/org/commonjava/indy/client/core/IndyClientHttp.java @@ -47,6 +47,7 @@ import org.commonjava.indy.model.core.ArtifactStore; import org.commonjava.indy.model.core.io.IndyObjectMapper; import org.commonjava.o11yphant.jhttpc.SpanningHttpFactory; +import org.commonjava.o11yphant.trace.TraceManager; import org.commonjava.o11yphant.trace.TracerConfiguration; import org.commonjava.util.jhttpc.HttpFactory; import org.commonjava.util.jhttpc.HttpFactoryIfc; @@ -167,6 +168,8 @@ public static final class Builder private TracerConfiguration existedTraceConfig; + private TraceManager existedTraceManager; + private Map mdcCopyMappings; private Builder() @@ -209,6 +212,11 @@ public Builder setExistedTraceConfig( TracerConfiguration existedTraceConfig ) return this; } + public Builder setExistedTraceManager( TraceManager traceManager ) + { + this.existedTraceManager = traceManager; + return this; + } public Builder setMdcCopyMappings( Map mdcCopyMappings ) { @@ -250,7 +258,11 @@ public IndyClientHttp build() } ClientMetricManager metricManager; - if ( this.existedTraceConfig != null ) + if ( this.existedTraceManager != null ) + { + metricManager = new ClientMetricManager( this.existedTraceManager ); + } + else if ( this.existedTraceConfig != null ) { metricManager = new ClientMetricManager( this.existedTraceConfig ); } diff --git a/core-java/src/main/java/org/commonjava/indy/client/core/metric/ClientMetricManager.java b/core-java/src/main/java/org/commonjava/indy/client/core/metric/ClientMetricManager.java index 8d42c84..6e2fdf5 100644 --- a/core-java/src/main/java/org/commonjava/indy/client/core/metric/ClientMetricManager.java +++ b/core-java/src/main/java/org/commonjava/indy/client/core/metric/ClientMetricManager.java @@ -34,7 +34,7 @@ import static org.apache.commons.lang3.StringUtils.isBlank; -@SuppressWarnings( { "rawtypes", "unused" } ) +@SuppressWarnings( { "unused" } ) public class ClientMetricManager { @@ -55,11 +55,23 @@ public ClientMetricManager() public ClientMetricManager( SiteConfig siteConfig ) { - this.configuration = buildConfig( siteConfig ); + buildConfig( siteConfig ); buildTraceManager(); } public ClientMetricManager( TracerConfiguration existedTraceConfig ) + { + buildTraceConfig( existedTraceConfig ); + buildTraceManager(); + } + + public ClientMetricManager( TraceManager traceManager ) + { + buildTraceConfig( traceManager.getConfig() ); + this.traceManager = traceManager; + } + + private void buildTraceConfig( TracerConfiguration existedTraceConfig ) { this.configuration = new ClientTracerConfiguration(); this.configuration.setEnabled( existedTraceConfig.isEnabled() ); @@ -75,7 +87,6 @@ public ClientMetricManager( TracerConfiguration existedTraceConfig ) this.configuration.setGrpcHeaders( existedOtelConfig.getGrpcHeaders() ); this.configuration.setGrpcResources( existedOtelConfig.getResources() ); } - buildTraceManager(); } private void buildTraceManager() @@ -89,7 +100,7 @@ private void buildTraceManager() } this.traceManager = new TraceManager( plugin, new SpanFieldsDecorator( Collections.singletonList( new ClientGoldenSignalsSpanFieldsInjector( metricSet ) ) ), - configuration ); + configuration ); } } @@ -101,12 +112,11 @@ public ClientMetrics register( HttpUriRequest request ) return new ClientMetrics( configuration.isEnabled(), request, functions, metricSet ); } - private ClientTracerConfiguration buildConfig( SiteConfig siteConfig ) + private void buildConfig( SiteConfig siteConfig ) { - ClientTracerConfiguration config = new ClientTracerConfiguration(); - config.setEnabled( siteConfig.isMetricEnabled() ); - config.setBaseSampleRate( siteConfig.getBaseSampleRate() ); - return config; + this.configuration = new ClientTracerConfiguration(); + this.configuration.setEnabled( siteConfig.isMetricEnabled() ); + this.configuration.setBaseSampleRate( siteConfig.getBaseSampleRate() ); } private String getEndpointName( String method, String pathInfo ) diff --git a/pom.xml b/pom.xml index 8d84d00..f6882d9 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ 1.12 1.1.1 - 1.9 + 1.9.1-SNAPSHOT 4.5.9 1.7.36 2.11.0