This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0b38b054636327f1ac6e5dcebefbe08877954e04 Author: Adrian Cole <ac...@pivotal.io> AuthorDate: Wed Dec 20 12:26:09 2017 +0800 Updates to brave libraries that are OSGi friendly This moves to latest brave, which backports span v2 format to the old api. It also corrects some OSGi and packaging glitches. Fixes CAMEL-12088 --- components/camel-zipkin/pom.xml | 17 +++++-- .../camel/zipkin/ZipkinLegacyReporterAdapter.java | 48 ------------------- .../java/org/apache/camel/zipkin/ZipkinTracer.java | 55 ++++++++++------------ parent/pom.xml | 6 +-- .../karaf/features/src/main/resources/features.xml | 5 +- 5 files changed, 43 insertions(+), 88 deletions(-) diff --git a/components/camel-zipkin/pom.xml b/components/camel-zipkin/pom.xml index 1e77677..28b1f24 100644 --- a/components/camel-zipkin/pom.xml +++ b/components/camel-zipkin/pom.xml @@ -54,11 +54,6 @@ <artifactId>brave-core</artifactId> <version>${brave-zipkin-version}</version> </dependency> - <dependency> - <groupId>io.zipkin.brave</groupId> - <artifactId>brave</artifactId> - <version>${brave-zipkin-version}</version> - </dependency> <!-- to send to zipkin server --> <dependency> <groupId>io.zipkin.reporter2</groupId> @@ -107,6 +102,18 @@ </environmentVariables> </configuration> </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> + <Export-Package>org.apache.camel.zipkin*</Export-Package> + <Import-Package>!com.github.kristofa.brave.internal,!zipkin2.internal,!zipkin.internal,*</Import-Package> + </instructions> + </configuration> + </plugin> </plugins> </build> diff --git a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinLegacyReporterAdapter.java b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinLegacyReporterAdapter.java deleted file mode 100644 index c5ebcdb..0000000 --- a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinLegacyReporterAdapter.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.zipkin; - -import com.github.kristofa.brave.SpanCollector; -import com.github.kristofa.brave.internal.DefaultSpanCodec; -import com.twitter.zipkin.gen.Span; -import zipkin.internal.V2SpanConverter; -import zipkin2.reporter.Reporter; - -final class ZipkinLegacyReporterAdapter implements SpanCollector, Reporter<zipkin2.Span> { - - final SpanCollector delegate; - - ZipkinLegacyReporterAdapter(SpanCollector delegate) { - this.delegate = delegate; - } - - @Override - public void report(zipkin2.Span span) { - collect(DefaultSpanCodec.fromZipkin(V2SpanConverter.toSpan(span))); - } - - @Override - public void collect(Span span) { - delegate.collect(span); - } - - @Deprecated - @Override - public void addDefaultAnnotation(String key, String value) { - delegate.addDefaultAnnotation(key, value); - } -} diff --git a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java index 7f507c9..4e238f4 100644 --- a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java +++ b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java @@ -16,23 +16,19 @@ */ package org.apache.camel.zipkin; -import java.io.Closeable; -import java.util.EventObject; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import brave.Tracing; -import brave.sampler.Sampler; import com.github.kristofa.brave.Brave; import com.github.kristofa.brave.ClientSpanThreadBinder; import com.github.kristofa.brave.ServerSpan; import com.github.kristofa.brave.ServerSpanThreadBinder; import com.github.kristofa.brave.SpanCollector; -import com.github.kristofa.brave.TracerAdapter; import com.github.kristofa.brave.scribe.ScribeSpanCollector; import com.twitter.zipkin.gen.Span; +import java.io.Closeable; +import java.util.EventObject; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Endpoint; @@ -232,7 +228,6 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory, /** @deprecated use {@link #setSpanReporter(Reporter)} */ @Deprecated public void setSpanCollector(SpanCollector spanCollector) { - this.spanReporter = new ZipkinLegacyReporterAdapter(spanCollector); this.spanCollector = spanCollector; } @@ -351,13 +346,12 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory, if (spanReporter == null) { if (spanCollector != null) { // possible via setter - spanReporter = new ZipkinLegacyReporterAdapter(spanCollector); } else if (endpoint != null) { LOG.info("Configuring Zipkin URLConnectionSender using endpoint: {} ", endpoint); spanReporter = AsyncReporter.create(URLConnectionSender.create(endpoint)); } else if (hostName != null && port > 0) { LOG.info("Configuring Zipkin ScribeSpanCollector using host: {} and port: {}", hostName, port); - spanReporter = new ZipkinLegacyReporterAdapter(new ScribeSpanCollector(hostName, port)); + spanCollector = new ScribeSpanCollector(hostName, port); } else { // is there a zipkin service setup as ENV variable to auto register a span reporter String host = new ServiceHostPropertiesFunction().apply(ZIPKIN_COLLECTOR_HTTP_SERVICE); @@ -373,13 +367,13 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory, if (ObjectHelper.isNotEmpty(host) && ObjectHelper.isNotEmpty(port)) { LOG.info("Auto-configuring Zipkin ScribeSpanCollector using host: {} and port: {}", host, port); int num = camelContext.getTypeConverter().mandatoryConvertTo(Integer.class, port); - spanReporter = new ZipkinLegacyReporterAdapter(new ScribeSpanCollector(host, num)); + spanCollector = new ScribeSpanCollector(host, num); } } } } - if (spanReporter == null) { + if (spanReporter == null && spanCollector == null) { // Try to lookup the span reporter from the registry if only one instance is present Set<Reporter> reporters = camelContext.getRegistry().findByType(Reporter.class); if (reporters.size() == 1) { @@ -387,7 +381,9 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory, } } - ObjectHelper.notNull(spanReporter, "Reporter<zipkin2.Span>", this); + if (spanCollector == null) { + ObjectHelper.notNull(spanReporter, "Reporter<zipkin2.Span>", this); + } if (clientServiceMappings.isEmpty() && serverServiceMappings.isEmpty()) { LOG.warn("No service name(s) has been mapped in clientServiceMappings or serverServiceMappings. Camel will fallback and use endpoint uris as service names."); @@ -526,29 +522,30 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory, private void createBraveForService(String pattern, String serviceName) { Brave brave = braves.get(pattern); if (brave == null && !braves.containsKey(serviceName)) { - Tracing.Builder builder = Tracing.newBuilder().localServiceName(serviceName); - builder = builder.sampler(Sampler.create(rate)); - if (spanReporter != null) { - builder = builder.spanReporter(spanReporter); - } - brave = TracerAdapter.newBrave(builder.build().tracer()); + brave = newBrave(serviceName); braves.put(serviceName, brave); } } + private Brave newBrave(String serviceName) { + Brave.Builder builder = new Brave.Builder(serviceName) + .traceSampler(com.github.kristofa.brave.Sampler.create(rate)); + if (spanReporter != null) { + builder = builder.spanReporter(spanReporter); + } else if (spanCollector != null) { + builder.spanCollector(spanCollector); + } + return builder.build(); + } + private Brave getBrave(String serviceName) { Brave brave = null; if (serviceName != null) { brave = braves.get(serviceName); if (brave == null && useFallbackServiceNames) { - LOG.debug("Creating Tracing assigned to serviceName: {}", serviceName + " as fallback"); - Tracing.Builder builder = Tracing.newBuilder().localServiceName(serviceName); - builder = builder.sampler(Sampler.create(rate)); - if (spanReporter != null) { - builder = builder.spanReporter(spanReporter); - } - brave = TracerAdapter.newBrave(builder.build().tracer()); + LOG.debug("Creating Brave assigned to serviceName: {}", serviceName + " as fallback"); + brave = newBrave(serviceName); braves.put(serviceName, brave); } } diff --git a/parent/pom.xml b/parent/pom.xml index eb93453..c71dd41 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -98,7 +98,7 @@ <boxjavalibv2.version>3.2.1</boxjavalibv2.version> <box-java-sdk-version>2.8.2</box-java-sdk-version> <braintree-gateway-version>2.63.0</braintree-gateway-version> - <brave-zipkin-version>4.12.0</brave-zipkin-version> + <brave-zipkin-version>4.13.1</brave-zipkin-version> <build-helper-maven-plugin-version>1.10</build-helper-maven-plugin-version> <c3p0-version>0.9.5.2</c3p0-version> <c3p0-bundle-version>0.9.5.2_1</c3p0-bundle-version> @@ -742,8 +742,8 @@ <yammer-metrics-version>2.2.0</yammer-metrics-version> <zendesk-client-version>0.5.4</zendesk-client-version> <zipkin-libthrift-version>0.9.3</zipkin-libthrift-version> - <zipkin-reporter-version>2.2.1</zipkin-reporter-version> - <zipkin-version>2.4.1</zipkin-version> + <zipkin-reporter-version>2.2.2</zipkin-reporter-version> + <zipkin-version>2.4.2</zipkin-version> <zjsonpatch-version>0.3.0</zjsonpatch-version> <zookeeper-version>3.4.10</zookeeper-version> <zookeeper-guava-version>16.0</zookeeper-guava-version> diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml index 8f78ec5..9d0352a 100644 --- a/platforms/karaf/features/src/main/resources/features.xml +++ b/platforms/karaf/features/src/main/resources/features.xml @@ -2412,14 +2412,13 @@ <feature version='${project.version}'>camel-core</feature> <bundle>mvn:org.apache.camel/camel-zipfile/${project.version}</bundle> </feature> - <!-- TODO: camel-zipkin does not work in OSGi: CAMEL-12088 --> <feature name='camel-zipkin' version='${project.version}' resolver='(obr)' start-level='50'> - <details>camel-zipkin does not work in OSGi, see more at CAMEL-12088</details> <feature version='${project.version}'>camel-core</feature> - <bundle dependency='true'>mvn:io.zipkin.brave/brave/${brave-zipkin-version}</bundle> <bundle dependency='true'>mvn:io.zipkin.brave/brave-core/${brave-zipkin-version}</bundle> <bundle dependency='true'>mvn:io.zipkin.brave/brave-spancollector-scribe/${brave-zipkin-version}</bundle> + <!-- io.zipkin.brave/brave-core depends on both versions of zipkin, io.zipkin.brave/brave does not --> <bundle dependency='true'>mvn:io.zipkin.java/zipkin/${zipkin-version}</bundle> + <bundle dependency='true'>mvn:io.zipkin.zipkin2/zipkin/${zipkin-version}</bundle> <bundle dependency='true'>mvn:io.zipkin.reporter2/zipkin-reporter/${zipkin-reporter-version}</bundle> <bundle dependency='true'>mvn:io.zipkin.reporter2/zipkin-sender-urlconnection/${zipkin-reporter-version}</bundle> <bundle dependency='true'>mvn:org.apache.thrift/libthrift/${zipkin-libthrift-version}</bundle> -- To stop receiving notification emails like this one, please contact "commits@camel.apache.org" <commits@camel.apache.org>.