Closed Alos closed 3 years ago
I can't reproduce this. There's probably something here with version conflicts, but we'll need a complete pom.xml
to debug.
Here is the parent POM:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<java.version>11</java.version>
<!-- Dependency versions -->
<versions.errorprone>2.3.3</versions.errorprone>
<versions.gracefulshutdown>2.0</versions.gracefulshutdown>
<versions.guava>27.1-jre</versions.guava>
<versions.jacoco>0.8.2</versions.jacoco>
<versions.jib>1.0.2</versions.jib>
<versions.lombok>1.18.8</versions.lombok>
<versions.spring-cloud-gcp>1.2.0.M1</versions.spring-cloud-gcp>
<versions.spring-cloud>Greenwich.RELEASE</versions.spring-cloud>
<versions.swagger>2.9.2</versions.swagger>
<versions.truth>0.44</versions.truth>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-trace</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>ch.sbb</groupId>
<artifactId>springboot-graceful-shutdown</artifactId>
<version>${versions.gracefulshutdown}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${versions.swagger}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${versions.swagger}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${versions.guava}</version>
</dependency>
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<version>${versions.truth}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.truth.extensions</groupId>
<artifactId>truth-java8-extension</artifactId>
<version>${versions.truth}</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${versions.spring-cloud}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>${versions.spring-cloud-gcp}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
The <build>
does not have anything fancy except for some Jib and error prone configuration. The application is running in GKE. Here is the child pom.xml:
<properties>
<versions.objectify>6.0.2</versions.objectify>
<versions.kms>1.2.0</versions.kms>
<versions.containeranalysis>0.98.0-beta</versions.containeranalysis>
</properties>
<dependencies>
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>${versions.objectify}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-containeranalysis</artifactId>
<version>${versions.containeranalysis}</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-kms</artifactId>
<version>${versions.kms}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-storage</artifactId>
</dependency>
</dependencies>
I tried reproducing the dependency tree (github repository). Here is the dependency tree that gets opencensus-api 0.15.
So objectify is bringing in an old version of datastore and open census.
Negative. Objectify was already in my POM long before any changes. I think the changes are related to the google-cloud-containeranalysis
To solve this problem for now I added:
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-api</artifactId>
<version>0.23.0</version>
to my POM file.
@Alos Would you share the output of "mvn dependency:tree" as a gist for the problematic case? Is it possible for you to create a GitHub repository that reproduces the issue?
(I've been thinking about Maven dependency resolution as the culprit, but it could be Jib that picks up the dependency (link); I may need to learn how Jib resolves dependencies. Note that Jib's latest version is 1.3.0.)
Here is the portion of the relevant dependency tree:
[INFO] com.google.cloud.releng.louhi:artifact-service:jar:0.0.1-SNAPSHOT
[INFO] +- com.googlecode.objectify:objectify:jar:6.0.2:compile
[INFO] | \- com.google.cloud:google-cloud-datastore:jar:1.59.0:compile
[INFO] | \- com.google.cloud:google-cloud-core-http:jar:1.59.0:compile
[INFO] | \- io.opencensus:opencensus-contrib-http-util:jar:0.15.0:compile
[INFO] +- com.google.cloud:google-cloud-containeranalysis:jar:0.98.0-beta:compile
[INFO] | \- io.grpc:grpc-netty-shaded:jar:1.21.0:compile
[INFO] | \- io.grpc:grpc-core:jar:1.21.0:compile (version selected from constraint [1.21.0,1.21.0])
[INFO] | \- io.opencensus:opencensus-contrib-grpc-metrics:jar:0.21.0:compile
[INFO] \- io.opencensus:opencensus-api:jar:0.23.0:compile
@Alos I assume it's not a problematic case because it picks up opencensus-api 0.23.0 as a direct dependency. Would you share the entire output of "mvn dependency:tree" as a gist for the problematic case where you did not explicitly specify io.opencensus:opencensus-api:jar:0.23.0
?
I took the pom snippets verbatim and see a very different from mvn dependency:tree. spring-cloud-gcp-dependencies 1.2.0.M1 doesn't exist on Maven central, so I used 1.0.0 instead, since it was said it failed too. I copied from the grpc example project for the missing parts of the pom.xml, so that's why you see io.grpc:example in there.
Lots of downgrades in the output. At a very quick glance grpc-context is being downgraded and I see io.opencensus:opencensus-api:jar:0.15.0:compile
downgraded from 0.21. Adding in requireUpperBoundDeps
shows lots of issues. Please add requireUpperBoundDeps
and resolve any issues first.
I don't know why you see opencensus-api 0.23 in your output.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireUpperBoundDeps/>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< io.grpc:example-gauth >------------------------
[INFO] Building example-gauth 1.21.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:3.1.1:tree (default-cli) @ example-gauth ---
[INFO] io.grpc:example-gauth:jar:1.21.0
[INFO] +- com.googlecode.objectify:objectify:jar:6.0.2:compile
[INFO] | +- net.spy:spymemcached:jar:2.12.3:compile
[INFO] | +- com.google.cloud:google-cloud-datastore:jar:1.59.0:compile
[INFO] | | +- com.google.cloud:google-cloud-core-http:jar:1.59.0:compile
[INFO] | | | +- com.google.auth:google-auth-library-oauth2-http:jar:0.12.0:compile
[INFO] | | | +- com.google.oauth-client:google-oauth-client:jar:1.27.0:compile
[INFO] | | | +- com.google.api-client:google-api-client:jar:1.27.0:compile
[INFO] | | | +- com.google.http-client:google-http-client-appengine:jar:1.27.0:compile
[INFO] | | | +- com.google.http-client:google-http-client-jackson2:jar:1.27.0:compile
[INFO] | | | +- com.google.api:gax-httpjson:jar:0.52.1:compile
[INFO] | | | +- io.opencensus:opencensus-api:jar:0.15.0:compile
[INFO] | | | \- io.opencensus:opencensus-contrib-http-util:jar:0.15.0:compile
[INFO] | | +- com.google.api.grpc:proto-google-cloud-datastore-v1:jar:0.42.0:compile
[INFO] | | \- com.google.cloud.datastore:datastore-v1-proto-client:jar:1.6.0:compile
[INFO] | | +- com.google.http-client:google-http-client-protobuf:jar:1.20.0:compile
[INFO] | | \- com.google.http-client:google-http-client-jackson:jar:1.20.0:compile
[INFO] | | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.11:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- org.springframework.cloud:spring-cloud-gcp-starter-pubsub:jar:1.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-gcp-starter:jar:1.1.0.RELEASE:compile
[INFO] | | +- org.springframework.cloud:spring-cloud-gcp-core:jar:1.1.0.RELEASE:compile
[INFO] | | \- org.springframework.cloud:spring-cloud-gcp-autoconfigure:jar:1.1.0.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-gcp-pubsub:jar:1.1.0.RELEASE:compile
[INFO] | \- com.google.cloud:google-cloud-pubsub:jar:1.59.0:compile
[INFO] | +- com.google.api.grpc:proto-google-cloud-pubsub-v1:jar:1.41.0:compile
[INFO] | +- com.google.api.grpc:grpc-google-cloud-pubsub-v1:jar:1.41.0:compile
[INFO] | \- com.google.auto.value:auto-value:jar:1.4:compile
[INFO] +- org.springframework.integration:spring-integration-core:jar:5.1.1.RELEASE:compile
[INFO] | +- org.springframework:spring-core:jar:5.1.3.RELEASE:compile
[INFO] | | \- org.springframework:spring-jcl:jar:5.1.3.RELEASE:compile
[INFO] | +- org.springframework:spring-aop:jar:5.1.3.RELEASE:compile
[INFO] | | \- org.springframework:spring-beans:jar:5.1.3.RELEASE:compile
[INFO] | +- org.springframework:spring-context:jar:5.1.3.RELEASE:compile
[INFO] | | \- org.springframework:spring-expression:jar:5.1.3.RELEASE:compile
[INFO] | +- org.springframework:spring-messaging:jar:5.1.3.RELEASE:compile
[INFO] | +- org.springframework:spring-tx:jar:5.1.3.RELEASE:compile
[INFO] | +- org.springframework.retry:spring-retry:jar:1.2.2.RELEASE:compile
[INFO] | \- io.projectreactor:reactor-core:jar:3.2.3.RELEASE:compile
[INFO] | \- org.reactivestreams:reactive-streams:jar:1.0.2:compile
[INFO] +- com.google.cloud:google-cloud-containeranalysis:jar:0.98.0-beta:compile
[INFO] | +- com.google.cloud:google-cloud-core:jar:1.59.0:compile
[INFO] | | +- joda-time:joda-time:jar:2.10.1:compile
[INFO] | | +- com.google.http-client:google-http-client:jar:1.27.0:compile
[INFO] | | +- com.google.api:api-common:jar:1.7.0:compile
[INFO] | | +- com.google.api:gax:jar:1.35.1:compile
[INFO] | | | \- org.threeten:threetenbp:jar:1.3.3:compile
[INFO] | | +- com.google.protobuf:protobuf-java-util:jar:3.6.1:compile
[INFO] | | | \- com.google.code.gson:gson:jar:2.8.5:compile
[INFO] | | +- com.google.api.grpc:proto-google-common-protos:jar:1.12.0:compile
[INFO] | | \- com.google.api.grpc:proto-google-iam-v1:jar:0.12.0:compile
[INFO] | +- com.google.cloud:google-cloud-core-grpc:jar:1.59.0:compile
[INFO] | | +- com.google.auth:google-auth-library-credentials:jar:0.12.0:compile
[INFO] | | +- com.google.protobuf:protobuf-java:jar:3.6.1:compile
[INFO] | | +- io.grpc:grpc-protobuf:jar:1.16.1:compile
[INFO] | | | \- io.grpc:grpc-protobuf-lite:jar:1.16.1:compile
[INFO] | | +- io.grpc:grpc-context:jar:1.16.1:compile
[INFO] | | \- com.google.api:gax-grpc:jar:1.35.1:compile
[INFO] | +- com.google.api.grpc:proto-google-cloud-containeranalysis-v1:jar:0.63.0:compile
[INFO] | +- com.google.api.grpc:proto-google-cloud-containeranalysis-v1beta1:jar:0.42.0:compile
[INFO] | +- io.grafeas:grafeas:jar:0.1.0:compile
[INFO] | +- io.grpc:grpc-netty-shaded:jar:1.21.0:compile
[INFO] | | \- io.grpc:grpc-core:jar:1.21.0:compile (version selected from constraint [1.21.0,1.21.0])
[INFO] | | +- com.google.android:annotations:jar:4.1.1.4:compile
[INFO] | | \- io.opencensus:opencensus-contrib-grpc-metrics:jar:0.21.0:compile
[INFO] | +- io.grpc:grpc-stub:jar:1.21.0:compile
[INFO] | | \- io.grpc:grpc-api:jar:1.21.0:compile
[INFO] | +- io.grpc:grpc-auth:jar:1.21.0:compile
[INFO] | \- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO] +- com.google.cloud:google-cloud-kms:jar:1.2.0:compile
[INFO] | \- com.google.api.grpc:proto-google-cloud-kms-v1:jar:0.42.0:compile
[INFO] +- org.springframework.cloud:spring-cloud-gcp-starter-storage:jar:1.1.0.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-gcp-storage:jar:1.1.0.RELEASE:compile
[INFO] | \- com.google.cloud:google-cloud-storage:jar:1.59.0:compile
[INFO] | \- com.google.apis:google-api-services-storage:jar:v1-rev20181013-1.27.0:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.1.1.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.1.1.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.1.1.RELEASE:compile
[INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.1:compile
[INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.11.1:compile
[INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.23:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.1.1.RELEASE:compile
[INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.7:compile
[INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.7:compile
[INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.7:compile
[INFO] | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.7:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.1.RELEASE:compile
[INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.13:compile
[INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.13:compile
[INFO] | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.13:compile
[INFO] | +- org.hibernate.validator:hibernate-validator:jar:6.0.13.Final:compile
[INFO] | | +- javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO] | | \- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
[INFO] | +- org.springframework:spring-web:jar:5.1.3.RELEASE:compile
[INFO] | \- org.springframework:spring-webmvc:jar:5.1.3.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.1.1.RELEASE:test
[INFO] | +- org.springframework.boot:spring-boot-test:jar:2.1.1.RELEASE:test
[INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.1.1.RELEASE:test
[INFO] | +- com.jayway.jsonpath:json-path:jar:2.4.0:test
[INFO] | | \- net.minidev:json-smart:jar:2.3:test
[INFO] | | \- net.minidev:accessors-smart:jar:1.2:test
[INFO] | +- junit:junit:jar:4.12:test
[INFO] | +- org.assertj:assertj-core:jar:3.11.1:test
[INFO] | +- org.mockito:mockito-core:jar:2.23.4:test
[INFO] | | +- net.bytebuddy:byte-buddy:jar:1.9.5:compile
[INFO] | | +- net.bytebuddy:byte-buddy-agent:jar:1.9.5:test
[INFO] | | \- org.objenesis:objenesis:jar:2.6:test
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] | +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] | +- org.skyscreamer:jsonassert:jar:1.5.0:test
[INFO] | | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] | +- org.springframework:spring-test:jar:5.1.3.RELEASE:test
[INFO] | \- org.xmlunit:xmlunit-core:jar:2.6.2:test
[INFO] +- org.projectlombok:lombok:jar:1.18.4:compile
[INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:2.1.1.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.1.1.RELEASE:compile
[INFO] | | \- org.springframework.boot:spring-boot-actuator:jar:2.1.1.RELEASE:compile
[INFO] | \- io.micrometer:micrometer-core:jar:1.1.1:compile
[INFO] | +- org.hdrhistogram:HdrHistogram:jar:2.1.9:compile
[INFO] | \- org.latencyutils:LatencyUtils:jar:2.0.3:compile
[INFO] +- io.micrometer:micrometer-registry-prometheus:jar:1.1.1:compile
[INFO] | \- io.prometheus:simpleclient_common:jar:0.5.0:compile
[INFO] | \- io.prometheus:simpleclient:jar:0.5.0:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-kubernetes:jar:1.0.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-kubernetes-core:jar:1.0.0.RELEASE:compile
[INFO] | | +- io.fabric8:kubernetes-client:jar:4.1.0:compile
[INFO] | | | +- io.fabric8:kubernetes-model:jar:4.1.0:compile
[INFO] | | | | \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.7:compile
[INFO] | | | +- com.squareup.okhttp3:okhttp:jar:3.8.1:compile
[INFO] | | | | \- com.squareup.okio:okio:jar:1.13.0:compile
[INFO] | | | +- com.squareup.okhttp3:logging-interceptor:jar:3.8.1:compile
[INFO] | | | +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.9.7:compile
[INFO] | | | +- io.fabric8:zjsonpatch:jar:0.3.0:compile
[INFO] | | | \- com.github.mifmif:generex:jar:1.0.1:compile
[INFO] | | | \- dk.brics.automaton:automaton:jar:1.11-8:compile
[INFO] | | \- org.springframework.cloud:spring-cloud-context:jar:2.1.0.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-kubernetes-discovery:jar:1.0.0.RELEASE:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-kubernetes-config:jar:1.0.0.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-kubernetes-config:jar:1.0.0.RELEASE:compile
[INFO] | \- org.springframework.security:spring-security-rsa:jar:1.0.7.RELEASE:compile
[INFO] | \- org.bouncycastle:bcpkix-jdk15on:jar:1.60:compile
[INFO] | \- org.bouncycastle:bcprov-jdk15on:jar:1.60:compile
[INFO] +- org.springframework.cloud:spring-cloud-gcp-starter-trace:jar:1.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-starter-sleuth:jar:2.1.0.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-aop:jar:2.1.1.RELEASE:compile
[INFO] | | \- org.springframework.cloud:spring-cloud-sleuth-core:jar:2.1.0.RELEASE:compile
[INFO] | | +- org.aspectj:aspectjrt:jar:1.9.2:compile
[INFO] | | +- io.zipkin.brave:brave-context-log4j2:jar:5.6.1:compile
[INFO] | | +- io.zipkin.brave:brave-instrumentation-spring-web:jar:5.6.1:compile
[INFO] | | | \- io.zipkin.brave:brave-instrumentation-http:jar:5.6.1:compile
[INFO] | | +- io.zipkin.brave:brave-instrumentation-spring-rabbit:jar:5.6.1:compile
[INFO] | | +- io.zipkin.brave:brave-instrumentation-kafka-clients:jar:5.6.1:compile
[INFO] | | +- io.zipkin.brave:brave-instrumentation-httpclient:jar:5.6.1:compile
[INFO] | | +- io.zipkin.brave:brave-instrumentation-httpasyncclient:jar:5.6.1:compile
[INFO] | | +- io.zipkin.brave:brave-instrumentation-spring-webmvc:jar:5.6.1:compile
[INFO] | | | \- io.zipkin.brave:brave-instrumentation-servlet:jar:5.6.1:compile
[INFO] | | \- io.zipkin.brave:brave-instrumentation-jms:jar:5.6.1:compile
[INFO] | +- io.zipkin.gcp:zipkin-sender-stackdriver:jar:0.9.0:compile
[INFO] | | +- io.zipkin.gcp:zipkin-translation-stackdriver:jar:0.9.0:compile
[INFO] | | +- io.zipkin.reporter2:zipkin-reporter:jar:2.7.13:compile
[INFO] | | +- com.google.api.grpc:grpc-google-devtools-cloudtrace-v1:jar:0.1.1:compile
[INFO] | | | \- com.google.api.grpc:grpc-google-common-protos:jar:1.12.0:compile
[INFO] | | +- io.zipkin.zipkin2:zipkin:test-jar:tests:2.11.11:compile
[INFO] | | \- io.zipkin.zipkin2:zipkin:jar:2.11.11:compile
[INFO] | +- io.zipkin.gcp:brave-propagation-stackdriver:jar:0.9.0:compile
[INFO] | | \- io.zipkin.brave:brave:jar:5.5.2:compile
[INFO] | \- org.springframework.cloud:spring-cloud-sleuth-zipkin:jar:2.1.0.RELEASE:compile
[INFO] | +- io.zipkin.reporter2:zipkin-sender-kafka11:jar:2.7.14:compile
[INFO] | \- io.zipkin.reporter2:zipkin-sender-amqp-client:jar:2.7.14:compile
[INFO] +- org.springframework.cloud:spring-cloud-gcp-starter-logging:jar:1.1.0.RELEASE:compile
[INFO] | +- ch.qos.logback.contrib:logback-json-classic:jar:0.1.5:compile
[INFO] | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] | | | \- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] | | \- ch.qos.logback.contrib:logback-json-core:jar:0.1.5:compile
[INFO] | \- com.google.cloud:google-cloud-logging-logback:jar:0.77.0-alpha:compile
[INFO] | \- com.google.cloud:google-cloud-logging:jar:1.59.0:compile
[INFO] | \- com.google.api.grpc:proto-google-cloud-logging-v2:jar:0.42.0:compile
[INFO] +- ch.sbb:springboot-graceful-shutdown:jar:2.0:compile
[INFO] | +- org.springframework.boot:spring-boot:jar:2.1.1.RELEASE:compile
[INFO] | \- org.springframework.boot:spring-boot-autoconfigure:jar:2.1.1.RELEASE:compile
[INFO] +- io.springfox:springfox-swagger2:jar:2.9.2:compile
[INFO] | +- io.swagger:swagger-annotations:jar:1.5.20:compile
[INFO] | +- io.swagger:swagger-models:jar:1.5.20:compile
[INFO] | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO] | +- io.springfox:springfox-spi:jar:2.9.2:compile
[INFO] | | \- io.springfox:springfox-core:jar:2.9.2:compile
[INFO] | +- io.springfox:springfox-schema:jar:2.9.2:compile
[INFO] | +- io.springfox:springfox-swagger-common:jar:2.9.2:compile
[INFO] | +- io.springfox:springfox-spring-web:jar:2.9.2:compile
[INFO] | +- com.fasterxml:classmate:jar:1.4.0:compile
[INFO] | +- org.springframework.plugin:spring-plugin-core:jar:1.2.0.RELEASE:compile
[INFO] | +- org.springframework.plugin:spring-plugin-metadata:jar:1.2.0.RELEASE:compile
[INFO] | \- org.mapstruct:mapstruct:jar:1.2.0.Final:compile
[INFO] +- io.springfox:springfox-swagger-ui:jar:2.9.2:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-netflix-hystrix:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-starter:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-netflix-hystrix:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-netflix-ribbon:jar:2.1.0.RELEASE:compile
[INFO] | | \- org.springframework.cloud:spring-cloud-netflix-archaius:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-starter-netflix-archaius:jar:2.1.0.RELEASE:compile
[INFO] | | +- com.netflix.archaius:archaius-core:jar:0.7.6:compile
[INFO] | | \- commons-configuration:commons-configuration:jar:1.8:compile
[INFO] | +- com.netflix.hystrix:hystrix-core:jar:1.5.18:compile
[INFO] | +- com.netflix.hystrix:hystrix-serialization:jar:1.5.18:compile
[INFO] | | +- com.fasterxml.jackson.module:jackson-module-afterburner:jar:2.9.7:runtime
[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.9.7:compile
[INFO] | +- com.netflix.hystrix:hystrix-metrics-event-stream:jar:1.5.18:compile
[INFO] | +- com.netflix.hystrix:hystrix-javanica:jar:1.5.18:compile
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.8.1:runtime
[INFO] | | +- org.ow2.asm:asm:jar:5.0.4:runtime
[INFO] | | \- org.aspectj:aspectjweaver:jar:1.9.2:compile
[INFO] | \- io.reactivex:rxjava-reactive-streams:jar:1.2.1:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-kubernetes-ribbon:jar:1.0.0.RELEASE:compile
[INFO] | \- org.springframework.cloud:spring-cloud-kubernetes-ribbon:jar:1.0.0.RELEASE:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-netflix-ribbon:jar:2.1.0.RELEASE:compile
[INFO] | +- com.netflix.ribbon:ribbon:jar:2.3.0:compile
[INFO] | | +- com.netflix.ribbon:ribbon-transport:jar:2.3.0:runtime
[INFO] | | | +- io.reactivex:rxnetty-contexts:jar:0.4.9:runtime
[INFO] | | | \- io.reactivex:rxnetty-servo:jar:0.4.9:runtime
[INFO] | | +- javax.inject:javax.inject:jar:1:runtime
[INFO] | | \- io.reactivex:rxnetty:jar:0.4.9:runtime
[INFO] | +- com.netflix.ribbon:ribbon-core:jar:2.3.0:compile
[INFO] | | \- commons-lang:commons-lang:jar:2.6:compile
[INFO] | +- com.netflix.ribbon:ribbon-httpclient:jar:2.3.0:compile
[INFO] | | +- commons-collections:commons-collections:jar:3.2.2:runtime
[INFO] | | +- org.apache.httpcomponents:httpclient:jar:4.5.6:compile
[INFO] | | | +- org.apache.httpcomponents:httpcore:jar:4.4.10:compile
[INFO] | | | \- commons-codec:commons-codec:jar:1.11:compile
[INFO] | | +- com.sun.jersey:jersey-client:jar:1.19.1:runtime
[INFO] | | | \- com.sun.jersey:jersey-core:jar:1.19.1:runtime
[INFO] | | | \- javax.ws.rs:jsr311-api:jar:1.1.1:runtime
[INFO] | | +- com.sun.jersey.contribs:jersey-apache-client4:jar:1.19.1:runtime
[INFO] | | +- com.netflix.servo:servo-core:jar:0.12.21:runtime
[INFO] | | \- com.netflix.netflix-commons:netflix-commons-util:jar:0.3.0:runtime
[INFO] | +- com.netflix.ribbon:ribbon-loadbalancer:jar:2.3.0:compile
[INFO] | | \- com.netflix.netflix-commons:netflix-statistics:jar:0.1.1:runtime
[INFO] | \- io.reactivex:rxjava:jar:1.3.8:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-openfeign:jar:2.1.0.RELEASE:compile
[INFO] | +- org.springframework.cloud:spring-cloud-openfeign-core:jar:2.1.0.RELEASE:compile
[INFO] | | \- io.github.openfeign.form:feign-form-spring:jar:3.5.0:compile
[INFO] | | +- io.github.openfeign.form:feign-form:jar:3.5.0:compile
[INFO] | | \- commons-fileupload:commons-fileupload:jar:1.3.3:compile
[INFO] | | \- commons-io:commons-io:jar:2.2:compile
[INFO] | +- org.springframework.cloud:spring-cloud-commons:jar:2.1.0.RELEASE:compile
[INFO] | | \- org.springframework.security:spring-security-crypto:jar:5.1.2.RELEASE:compile
[INFO] | +- io.github.openfeign:feign-core:jar:10.1.0:compile
[INFO] | +- io.github.openfeign:feign-slf4j:jar:10.1.0:compile
[INFO] | \- io.github.openfeign:feign-hystrix:jar:10.1.0:compile
[INFO] +- com.google.guava:guava:jar:27.1-jre:compile
[INFO] | +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] | +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] | +- org.checkerframework:checker-qual:jar:2.5.2:compile
[INFO] | +- com.google.errorprone:error_prone_annotations:jar:2.2.0:compile
[INFO] | +- com.google.j2objc:j2objc-annotations:jar:1.1:compile
[INFO] | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.17:compile
[INFO] +- com.google.truth:truth:jar:0.44:test
[INFO] | +- org.checkerframework:checker-compat-qual:jar:2.5.5:test
[INFO] | +- com.googlecode.java-diff-utils:diffutils:jar:1.3.0:test
[INFO] | \- com.google.auto.value:auto-value-annotations:jar:1.6.3:test
[INFO] \- com.google.truth.extensions:truth-java8-extension:jar:0.44:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.455 s
[INFO] Finished at: 2019-07-15T17:12:33-07:00
[INFO] ------------------------------------------------------------------------
For completeness, these are the pom's I used. Parent:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.grpc</groupId>
<artifactId>examples</artifactId>
<packaging>pom</packaging>
<!-- Feel free to delete the comment at the end of these lines. It is just
for safely updating the version in our release process. -->
<version>1.21.0</version><!-- CURRENT_GRPC_VERSION -->
<name>examples</name>
<url>https://github.com/grpc/grpc-java</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<java.version>11</java.version>
<!-- Dependency versions -->
<versions.errorprone>2.3.3</versions.errorprone>
<versions.gracefulshutdown>2.0</versions.gracefulshutdown>
<versions.guava>27.1-jre</versions.guava>
<versions.jacoco>0.8.2</versions.jacoco>
<versions.jib>1.0.2</versions.jib>
<versions.lombok>1.18.8</versions.lombok>
<versions.spring-cloud-gcp>1.0.0.RELEASE</versions.spring-cloud-gcp>
<versions.spring-cloud>Greenwich.RELEASE</versions.spring-cloud>
<versions.swagger>2.9.2</versions.swagger>
<versions.truth>0.44</versions.truth>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-trace</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>ch.sbb</groupId>
<artifactId>springboot-graceful-shutdown</artifactId>
<version>${versions.gracefulshutdown}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${versions.swagger}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${versions.swagger}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${versions.guava}</version>
</dependency>
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<version>${versions.truth}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.truth.extensions</groupId>
<artifactId>truth-java8-extension</artifactId>
<version>${versions.truth}</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${versions.spring-cloud}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>${versions.spring-cloud-gcp}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
Child:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.grpc</groupId>
<artifactId>example-gauth</artifactId>
<packaging>jar</packaging>
<version>1.21.0</version><!-- CURRENT_GRPC_VERSION -->
<name>example-gauth</name>
<url>https://github.com/grpc/grpc-java</url>
<parent>
<groupId>io.grpc</groupId>
<artifactId>examples</artifactId>
<version>1.21.0</version>
</parent>
<properties>
<versions.objectify>6.0.2</versions.objectify>
<versions.kms>1.2.0</versions.kms>
<versions.containeranalysis>0.98.0-beta</versions.containeranalysis>
</properties>
<dependencies>
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>${versions.objectify}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-containeranalysis</artifactId>
<version>${versions.containeranalysis}</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-kms</artifactId>
<version>${versions.kms}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-storage</artifactId>
</dependency>
</dependencies>
</project>
@ejona86 1.2.0.M1
has much newer dependencies and is almost identical to current master
. You can pull it from spring-milestones
repository.
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone-local</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-releases</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/release</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
@meltsufin, in any case, it is clear that opencensus was being downgraded. An old version is getting pulled in via google-cloud-core-http via google-cloud-datastore. Updating to a newer google-cloud-datastore (1.82.0 transitively depends on opencensus-api 0.21.0) or explicitly depending on a newer version of opencensus-api seems the appropriate fix. Also adding requireUpperBoundDeps
would detect other similar problems to this at compile time.
There is no bug or incompatibility here. It's just Maven downgrading dependencies, which is obviously prone to breakage.
@ejona86 I thought that the use of BOMs should prevent this situation. We rely on the google-cloud-bom
, but it doesn't manage the version of opencensus-api
.
@suztomo @elharo WDYT?
A BOM only manages what's listed in the BOM. google-cloud-bom covers the GCP orbit: guava, protobuf, grpc, google-http-java-client, and google-gcloud-java. It doesn't cover all the transitive dependencies, just makes sure they're compatible. opencensus wasn't a thing when we first started the BOM. We could add it now if it seems to fit, though I'm not convinced it does.
IN any case, I don't see a BOM being imported in this sample.
Closing as obsolete.
I've started to see the following when I start my applications:
My applications use:
I saw this with
spring-cloud-gcp-dependencies
1.0.0 and with 1.2.0.M1