Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoClassDefFoundError: com/google/api/gax/retrying/RetrySettings at LanguageServiceSettings #2141

Closed
scraly opened this issue Jun 12, 2017 · 16 comments
Assignees
Labels
api: language Issues related to the Cloud Natural Language API API. dependencies priority: p1 Important issue which blocks shipping the next release. Will be fixed prior to next release. type: question Request for information or clarification. Not an issue.

Comments

@scraly
Copy link

scraly commented Jun 12, 2017

Hi I've created a java class with a main method in order to test NLP API.

Extract of my pom.xml:

	<!-- Google Cloud Natural Language API -->
	<dependency>
		<groupId>com.google.cloud</groupId>
		<artifactId>google-cloud-language</artifactId>
		<version>0.19.0-beta</version>
	</dependency>

In my GoogleTest java class I test others google APIs.

My method:

public static void myNaturalLanguageTest() throws IOException {
	
	//Instanciate a client
	LanguageServiceClient language = LanguageServiceClient.create();

	//Text to analyze
	String text = "Hello world";
	Document doc = Document.newBuilder().setContent(text).setType(Type.PLAIN_TEXT).build();

	//Detect the sentiment
	//TODO we obtained an error for the moment - 29-03-2017
	//java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
	Sentiment sentiment = language.analyzeSentiment(doc).getDocumentSentiment();

	System.out.printf("Text: %s%n", text);
	System.out.printf("Sentiment: %s, %s%n", sentiment.getScore(), sentiment.getMagnitude());
}

When I execute my java class, I obtain a NoCLassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/api/gax/retrying/RetrySettings
	at com.google.cloud.language.spi.v1.LanguageServiceSettings$Builder.<clinit>(LanguageServiceSettings.java:245)
	at com.google.cloud.language.spi.v1.LanguageServiceSettings.defaultBuilder(LanguageServiceSettings.java:189)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.create(LanguageServiceClient.java:114)
	at com.xxx.product.xxx.google.test.GoogleTest.myNaturalLanguageTest(GoogleTest.java:396)
	at com.xxx.product.moderation.google.test.GoogleTest.main(GoogleTest.java:259)
Caused by: java.lang.ClassNotFoundException: com.google.api.gax.retrying.RetrySettings
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 5 more

Thanks.

@garrettjonesgoogle
Copy link
Member

It is very likely you are using versions that aren't compatible with each other. Are you able to post the results of mvn dependency:tree? You'll probably see that multiple versions of gax are being pulled in by different versions of google-cloud-* packages. Your google-cloud-* packages all need to be from the same release.

@scraly
Copy link
Author

scraly commented Jun 13, 2017

Thanks @garrettjonesgoogle for the reply,
I had

    <!--Google Cloud Translation API -->
    <dependency>
	<groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-translate</artifactId>
	<version>0.10.0-alpha</version>
    </dependency>

I removed it, and know I have another error:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/auth/ServiceAccountSigner
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at com.google.api.gax.core.GoogleCredentialsProvider.getCredentials(GoogleCredentialsProvider.java:54)
	at com.google.api.gax.grpc.InstantiatingChannelProvider.createChannel(InstantiatingChannelProvider.java:122)
	at com.google.api.gax.grpc.InstantiatingChannelProvider.getChannel(InstantiatingChannelProvider.java:116)
	at com.google.api.gax.grpc.ChannelAndExecutor.create(ChannelAndExecutor.java:66)
	at com.google.api.gax.grpc.ClientSettings.getChannelAndExecutor(ClientSettings.java:92)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.<init>(LanguageServiceClient.java:132)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.create(LanguageServiceClient.java:123)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.create(LanguageServiceClient.java:114)
	at com.xxx.product.xxx.google.test.GoogleTest.myNaturalLanguageTest(GoogleTest.java:392)
	at com.xxx.product.xx.google.test.GoogleTest.main(GoogleTest.java:255)
Caused by: java.lang.ClassNotFoundException: com.google.auth.ServiceAccountSigner
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 22 more

My dependency tree is huge, I read it and now I have only one version for gax and one version for gax-grpc:

[INFO]    |  +- com.google.cloud:google-cloud-language:jar:0.19.0-beta:compile
[INFO]    |  |  +- io.netty:netty-tcnative-boringssl-static:jar:1.1.33.Fork26:compile
[INFO]    |  |  +- com.google.cloud:google-cloud-core:jar:1.1.0:compile
[INFO]    |  |  |  +- joda-time:joda-time:jar:2.9.2:compile
[INFO]    |  |  |  +- com.google.api:api-common:jar:1.1.0:compile
**[INFO]    |  |  |  +- com.google.api:gax:jar:1.3.0:compile**
[INFO]    |  |  |  |  +- com.google.auto.value:auto-value:jar:1.2:compile
[INFO]    |  |  |  |  +- com.google.auth:google-auth-library-oauth2-http:jar:0.7.0:compile
[INFO]    |  |  |  |  \- org.threeten:threetenbp:jar:1.3.3:compile
[INFO]    |  |  |  +- com.google.protobuf:protobuf-java-util:jar:3.2.0:compile
[INFO]    |  |  |  +- com.google.api.grpc:proto-google-common-protos:jar:0.1.11:compile
[INFO]    |  |  |  \- com.google.api.grpc:proto-google-iam-v1:jar:0.1.11:compile
[INFO]    |  |  +- com.google.cloud:google-cloud-core-grpc:jar:1.1.0:compile
[INFO]    |  |  |  +- com.google.protobuf:protobuf-java:jar:3.2.0:compile
[INFO]    |  |  |  +- io.grpc:grpc-protobuf:jar:1.2.0:compile
[INFO]    |  |  |  |  \- io.grpc:grpc-protobuf-lite:jar:1.2.0:compile
**[INFO]    |  |  |  \- com.google.api:gax-grpc:jar:0.19.0:compile**

And you can find here an extract of one of my pom.xml file:

        <com.google.version>1.22.0</com.google.version>

		<dependency>
			<groupId>com.google.apis</groupId>
			<artifactId>google-api-services-youtube</artifactId>
			<version>v3-rev182-${com.google.version}</version>
		</dependency>

		<dependency>
			<groupId>com.google.apis</groupId>
			<artifactId>google-api-services-bigquery</artifactId>
			<version>v2-rev334-${com.google.version}</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.google.apis/google-api-services-vision -->
		<dependency>
			<groupId>com.google.apis</groupId>
			<artifactId>google-api-services-vision</artifactId>
			<version>v1-rev347-${com.google.version}</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.google.apis/google-api-services-plus -->
		<dependency>
			<groupId>com.google.apis</groupId>
			<artifactId>google-api-services-plus</artifactId>
			<version>v1-rev501-${com.google.version}</version>
		</dependency>

		<!-- Private Google API -->
		<dependency>
			<groupId>com.google.apis</groupId>
			<artifactId>google-api-services-mybusiness</artifactId>
			<version>v3-java-rev20160505-1</version>
		</dependency>

		<dependency>
			<groupId>com.google.apis</groupId>
			<artifactId>google-api-services-calendar</artifactId>
			<version>v3-rev233-${com.google.version}</version>
		</dependency>

		<!--Google Cloud Translation API -->
<!-- 		<dependency>
			<groupId>com.google.cloud</groupId>
			<artifactId>google-cloud-translate</artifactId>
			<version>0.19.0-beta</version>
		</dependency> -->

		<!-- Google Cloud Natural Language API -->
		<dependency>
			<groupId>com.google.cloud</groupId>
			<artifactId>google-cloud-language</artifactId>
			<version>0.19.0-beta</version>
		</dependency>

		<dependency>
			<groupId>com.google.api-client</groupId>
			<artifactId>google-api-client</artifactId>
			<version>${com.google.version}</version>
		</dependency>

		<dependency>
			<groupId>com.google.http-client</groupId>
			<artifactId>google-http-client-jackson</artifactId>
			<version>${com.google.version}</version>
		</dependency>

		<dependency>
			<groupId>com.google.oauth-client</groupId>
			<artifactId>google-oauth-client-java6</artifactId>
			<version>${com.google.version}</version>
		</dependency>

Thanks.

@garrettjonesgoogle
Copy link
Member

Now I think you are seeing the issue noted in #2050 . Add an explicit declaration of the versions of google-auth-library-credentials and google-auth-library-oauth2-http (they need to be at least 0.6.0 to avoid the ServiceAccountSigner problem).

@scraly
Copy link
Author

scraly commented Jun 14, 2017

Hi,
thanks for your reply.

Google Cloud Natural Language API version 0.19.0-beta come with library credentials version 0.4.0:

[INFO] |  |  |  +- com.google.auth:google-auth-library-oauth2-http:jar:0.7.0:compile
[INFO] |     \- com.google.auth:google-auth-library-credentials:jar:0.4.0:compile

I edited my pom.xml file:

	<dependency>
		<groupId>com.google.cloud</groupId>
		<artifactId>google-cloud-language</artifactId>
		<version>0.19.0-beta</version>
		<exclusions>
			<exclusion>
				<groupId>com.google.auth</groupId>
				<artifactId>google-auth-library-credentials</artifactId>
			</exclusion>
		</exclusions>
	</dependency>

	<dependency>
		<groupId>com.google.auth</groupId>
		<artifactId>google-auth-library-credentials</artifactId>
		<version>0.7.0</version>
	</dependency>

And I got new errors:

AVERTISSEMENT: Runnable threw exception in ChannelExecutor
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
	at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
	at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448)
	at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61)
	at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)
	at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186)
	at io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806)
	at io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568)
	at io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724)
	at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715)
	at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752)
	at io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Thanks :-).

@garrettjonesgoogle
Copy link
Member

This means there is a problem with loading netty-tcnative-boringssl-static. Can you turn up your logging level to FINE? You should see logs from tcnative.

What platform are you running on? It's possible it's not a platform supported by tcnative yet. (tcnative is a native library.)

@scraly
Copy link
Author

scraly commented Jun 15, 2017

I'm simply executing a main method from a Java class from Eclipse with Run As...Java Application and executing this:

	public static void myNaturalLanguageTest() throws IOException {
		
		System.out.println("- start -");
		
		//Instanciate a client
		System.out.println("instanciate LanguageServiceClient step");
		LanguageServiceClient language = LanguageServiceClient.create();

		//Text to analyze
		String text = "Hello world";
		System.out.println("text to analyze step");
		Document doc = Document.newBuilder().setContent(text).setType(Type.PLAIN_TEXT).build();
		System.out.println("We want to analyze text: " + doc.getContent());

		//Detect the sentiment
		//TODO we obtained an error for the moment - 29-03-2017
		//java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
		System.out.println("sentiment analyzing step");
		Sentiment sentiment = language.analyzeSentiment(doc).getDocumentSentiment();

		System.out.printf("Text: %s%n", text);
		System.out.printf("Sentiment: %s, %s%n", sentiment.getScore(), sentiment.getMagnitude());
		
		System.out.println("- end -");
	}

And here the logs:

- start -
instanciate LanguageServiceClient step
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
text to analyze step
We want to analyze text: Hello world
sentiment analyzing step
juin 15, 2017 9:36:01 AM io.grpc.internal.ChannelExecutor drain
AVERTISSEMENT: Runnable threw exception in ChannelExecutor
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
	at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
	at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448)
	at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61)
	at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)
	at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186)
	at io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806)
	at io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568)
	at io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724)
	at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715)
	at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752)
	at io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Thanks.

@garrettjonesgoogle
Copy link
Member

To turn your logging level up to FINE, add this line at the beginning:

Logger.getLogger("").setLevel(Level.FINE);

When I'm asking about platform, I mean: Are you running on Linux, Windows, Mac, other? What specific version are you using?

@scraly
Copy link
Author

scraly commented Jun 15, 2017

I am running on Linux: Ubuntu 16.04 LTS.

@scraly
Copy link
Author

scraly commented Jun 15, 2017

And here the logs:

- start -
instanciate LanguageServiceClient step
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
text to analyze step
We want to analyze text: Hello world
sentiment analyzing step
io.grpc.Context: Storage override doesn't exist. Using default.
java.lang.ClassNotFoundException: io.grpc.override.ContextStorageOverride
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at io.grpc.Context.<clinit>(Context.java:131)
	at io.grpc.internal.ClientCallImpl.<init>(ClientCallImpl.java:109)
	at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:560)
	at com.google.api.gax.grpc.AuthInterceptor.interceptCall(AuthInterceptor.java:55)
	at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:119)
	at com.google.api.gax.grpc.HeaderInterceptor.interceptCall(HeaderInterceptor.java:57)
	at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:119)
	at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:536)
	at com.google.api.gax.grpc.DescriptorClientCallFactory.newCall(DescriptorClientCallFactory.java:54)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:61)
	at com.google.api.gax.grpc.RetryingCallable$GrpcRetryCallable.call(RetryingCallable.java:138)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:83)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:280)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:291)
	at com.google.api.gax.grpc.UnaryCallable.call(UnaryCallable.java:319)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.analyzeSentiment(LanguageServiceClient.java:213)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.analyzeSentiment(LanguageServiceClient.java:190)
	at com.xxx.product.xx.google.test.GoogleTest.myNaturalLanguageTest(GoogleTest.java:409)
	at com.xxx.product.xx.google.test.GoogleTest.main(GoogleTest.java:257)
juin 15, 2017 2:01:39 PM io.grpc.internal.ChannelExecutor drain
AVERTISSEMENT: Runnable threw exception in ChannelExecutor
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
	at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
	at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448)
	at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61)
	at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)
	at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186)
	at io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806)
	at io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568)
	at io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724)
	at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715)
	at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752)
	at io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

@garrettjonesgoogle
Copy link
Member

Hmm you probably have to create a logging.properties file too to get FINE logs. Create such a file with this content:

.level = FINE

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = FINE

(i.e. the file at https://github.com/garrettjonesgoogle/gcloud-java/blob/deadline-exceeded-issue/google-cloud-example-docker-gradle/logging.properties )

Maybe somehow the tcnative dependency isn't being pulled in right? You could try explicitly declaring a dependency on it:

If you're using Maven:

    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-tcnative-boringssl-static</artifactId>
      <version>1.1.33.Fork26</version>
    </dependency>

If you're using Gradle:

compile io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26

@scraly
Copy link
Author

scraly commented Jun 16, 2017

About tcnative, now, I have only one version in my dependencies, the one you told me to add:

[INFO] +- io.netty:netty-tcnative-boringssl-static:jar:1.1.33.Fork26:compile

And i've still the issue:

sentiment analyzing step
io.grpc.Context: Storage override doesn't exist. Using default.
java.lang.ClassNotFoundException: io.grpc.override.ContextStorageOverride
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at io.grpc.Context.<clinit>(Context.java:131)
	at io.grpc.internal.ClientCallImpl.<init>(ClientCallImpl.java:109)
	at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:560)
	at com.google.api.gax.grpc.AuthInterceptor.interceptCall(AuthInterceptor.java:55)
	at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:119)
	at com.google.api.gax.grpc.HeaderInterceptor.interceptCall(HeaderInterceptor.java:57)
	at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:119)
	at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:536)
	at com.google.api.gax.grpc.DescriptorClientCallFactory.newCall(DescriptorClientCallFactory.java:54)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:61)
	at com.google.api.gax.grpc.RetryingCallable$GrpcRetryCallable.call(RetryingCallable.java:138)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:83)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:280)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:291)
	at com.google.api.gax.grpc.UnaryCallable.call(UnaryCallable.java:319)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.analyzeSentiment(LanguageServiceClient.java:213)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.analyzeSentiment(LanguageServiceClient.java:190)
	at com.xxx.product.xx.google.test.GoogleTest.myNaturalLanguageTest(GoogleTest.java:409)
	at com.xxx.product.xx.google.test.GoogleTest.main(GoogleTest.java:257)
juin 16, 2017 3:34:05 PM io.grpc.internal.ChannelExecutor drain
AVERTISSEMENT: Runnable threw exception in ChannelExecutor
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
	at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
	at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448)
	at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61)
	at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)
	at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186)
	at io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806)
	at io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568)
	at io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724)
	at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715)
	at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752)
	at io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Exception in thread "main" com.google.api.gax.grpc.ApiException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED
	at com.google.api.gax.grpc.ExceptionTransformingCallable$ExceptionTransformingFuture.onFailure(ExceptionTransformingCallable.java:108)
	at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:53)
	at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:753)
	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:634)
	at io.grpc.stub.ClientCalls$GrpcFuture.setException(ClientCalls.java:463)
	at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:439)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:428)
	at io.grpc.internal.ClientCallImpl.access$100(ClientCallImpl.java:76)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:514)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$700(ClientCallImpl.java:431)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:546)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52)
	at io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:152)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED
	at io.grpc.Status.asRuntimeException(Status.java:540)
	... 15 more

@scraly
Copy link
Author

scraly commented Jun 16, 2017

And here the entire logs with logging.properties set to FINE log level:

juin 16, 2017 4:22:37 PM com.google.api.client.http.HttpRequest execute
CONFIG: -------------- REQUEST  --------------
POST https://accounts.google.com/o/oauth2/token
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.19.0 (gzip)
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 175

juin 16, 2017 4:22:37 PM com.google.api.client.http.HttpRequest execute
CONFIG: curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'User-Agent: Google-HTTP-Java-Client/1.19.0 (gzip)' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -d '@-' -- 'https://accounts.google.com/o/oauth2/token' << $$$
juin 16, 2017 4:22:38 PM sun.net.www.protocol.http.HttpURLConnection writeRequests
PRÉCIS: sun.net.www.MessageHeader@38d7a38 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.19.0 (gzip)}{Content-Type: application/x-www-form-urlencoded; charset=UTF-8}{Host: accounts.google.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}{Content-Length: 175}
juin 16, 2017 4:22:38 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: Total: 175 bytes
juin 16, 2017 4:22:38 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: grant_type=refresh_token&refresh_token=tata&client_id=toto.apps.googleusercontent.com&client_secret=titi
juin 16, 2017 4:22:38 PM sun.net.www.protocol.http.HttpURLConnection getInputStream0
PRÉCIS: sun.net.www.MessageHeader@a3e29714 pairs: {null: HTTP/1.1 200 OK}{Content-Type: application/json; charset=utf-8}{X-Content-Type-Options: nosniff}{Cache-Control: no-cache, no-store, max-age=0, must-revalidate}{Pragma: no-cache}{Expires: Mon, 01 Jan 1990 00:00:00 GMT}{Date: Fri, 16 Jun 2017 14:22:38 GMT}{Content-Disposition: attachment; filename="json.txt"; filename*=UTF-8''json.txt}{Content-Encoding: gzip}{Server: ESF}{X-XSS-Protection: 1; mode=block}{X-Frame-Options: SAMEORIGIN}{Alt-Svc: quic=":443"; ma=2592000; v="38,37,36,35"}{Transfer-Encoding: chunked}
juin 16, 2017 4:22:38 PM com.google.api.client.http.HttpResponse <init>
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Alt-Svc: quic=":443"; ma=2592000; v="38,37,36,35"
Server: ESF
X-Content-Type-Options: nosniff
Pragma: no-cache
Date: Fri, 16 Jun 2017 14:22:38 GMT
X-Frame-Options: SAMEORIGIN
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Disposition: attachment; filename="json.txt"; filename*=UTF-8''json.txt
Content-Encoding: gzip
Expires: Mon, 01 Jan 1990 00:00:00 GMT
X-XSS-Protection: 1; mode=block
Content-Type: application/json; charset=utf-8

juin 16, 2017 4:22:38 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: Total: 954 bytes
juin 16, 2017 4:22:38 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: {
  "access_token" : "toto",
  "expires_in" : 3600,
  "id_token" : "tutu",
  "token_type" : "Bearer"
}
access token (readKey) = ya29.GlxrBAdhGxStHinzHSOnjFByVfnxge1pxAFDrZ9QhKR75o72N9TMmuKOfCOmpg2o3aU4iK-2OTSsoNw0i8cj6lmgoev1PsttRZ2DnHb-Q73n_EvC1g_TTQCdMNtFZA
refresh token (deleteKey) = 1/kGbbO_jy-mZogV1IY7VGU1BhwmOqJZGhuqynq4GHiAU
- start -
instanciate LanguageServiceClient step
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
juin 16, 2017 4:22:38 PM io.grpc.internal.ManagedChannelImpl <init>
PRÉCIS: [io.grpc.internal.ManagedChannelImpl-1] Created with target language.googleapis.com:443
text to analyze step
We want to analyze text: Hello world
sentiment analyzing step
io.grpc.Context: Storage override doesn't exist. Using default.
java.lang.ClassNotFoundException: io.grpc.override.ContextStorageOverride
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at io.grpc.Context.<clinit>(Context.java:131)
	at io.grpc.internal.ClientCallImpl.<init>(ClientCallImpl.java:109)
	at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:560)
	at com.google.api.gax.grpc.AuthInterceptor.interceptCall(AuthInterceptor.java:55)
	at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:119)
	at com.google.api.gax.grpc.HeaderInterceptor.interceptCall(HeaderInterceptor.java:57)
	at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:119)
	at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:536)
	at com.google.api.gax.grpc.DescriptorClientCallFactory.newCall(DescriptorClientCallFactory.java:54)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:61)
	at com.google.api.gax.grpc.RetryingCallable$GrpcRetryCallable.call(RetryingCallable.java:138)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:83)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:280)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:291)
	at com.google.api.gax.grpc.UnaryCallable.call(UnaryCallable.java:319)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.analyzeSentiment(LanguageServiceClient.java:213)
	at com.google.cloud.language.spi.v1.LanguageServiceClient.analyzeSentiment(LanguageServiceClient.java:190)
	at com.xxx.product.xx.google.test.GoogleTest.myNaturalLanguageTest(GoogleTest.java:409)
	at com.xxx.product.xx.google.test.GoogleTest.main(GoogleTest.java:257)
juin 16, 2017 4:22:38 PM io.grpc.internal.ManagedChannelImpl exitIdleMode
PRÉCIS: [io.grpc.internal.ManagedChannelImpl-1] Exiting idle mode
juin 16, 2017 4:22:38 PM io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl onUpdate
PRÉCIS: [io.grpc.internal.ManagedChannelImpl-1] resolved address: [[servers=[[address=language.googleapis.com/216.58.208.234:443, attrs={}], [address=language.googleapis.com/216.58.198.202:443, attrs={}], [address=language.googleapis.com/216.58.204.106:443, attrs={}], [address=language.googleapis.com/216.58.209.234:443, attrs={}], [address=language.googleapis.com/216.58.201.234:443, attrs={}], [address=language.googleapis.com/216.58.206.234:443, attrs={}], [address=language.googleapis.com/216.58.213.138:443, attrs={}], [address=language.googleapis.com/216.58.213.170:443, attrs={}], [address=language.googleapis.com/216.58.204.138:443, attrs={}], [address=language.googleapis.com/216.58.204.234:443, attrs={}], [address=language.googleapis.com/172.217.19.234:443, attrs={}], [address=language.googleapis.com/172.217.22.138:443, attrs={}], [address=language.googleapis.com/2a00:1450:4007:811:0:0:0:200a:443, attrs={}]], attrs={}]], config={}
juin 16, 2017 4:22:38 PM io.grpc.internal.ManagedChannelImpl$LbHelperImpl createSubchannel
PRÉCIS: [io.grpc.internal.ManagedChannelImpl-1] io.grpc.internal.InternalSubchannel-3 created for [language.googleapis.com/216.58.208.234:443, language.googleapis.com/216.58.198.202:443, language.googleapis.com/216.58.204.106:443, language.googleapis.com/216.58.209.234:443, language.googleapis.com/216.58.201.234:443, language.googleapis.com/216.58.206.234:443, language.googleapis.com/216.58.213.138:443, language.googleapis.com/216.58.213.170:443, language.googleapis.com/216.58.204.138:443, language.googleapis.com/216.58.204.234:443, language.googleapis.com/172.217.19.234:443, language.googleapis.com/172.217.22.138:443, language.googleapis.com/2a00:1450:4007:811:0:0:0:200a:443]
juin 16, 2017 4:22:38 PM io.grpc.internal.ChannelExecutor drain
AVERTISSEMENT: Runnable threw exception in ChannelExecutor
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
	at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
	at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
	at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiatorByType(NettyChannelBuilder.java:335)
	at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:308)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DynamicNettyTransportParams.getProtocolNegotiator(NettyChannelBuilder.java:499)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:448)
	at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:61)
	at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)
	at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:186)
	at io.grpc.internal.ManagedChannelImpl$SubchannelImplImpl.obtainActiveTransport(ManagedChannelImpl.java:806)
	at io.grpc.internal.GrpcUtil.getTransportFromPickResult(GrpcUtil.java:568)
	at io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:296)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl$5.run(ManagedChannelImpl.java:724)
	at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)
	at io.grpc.internal.ManagedChannelImpl$LbHelperImpl.runSerialized(ManagedChannelImpl.java:715)
	at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl.onUpdate(ManagedChannelImpl.java:752)
	at io.grpc.internal.DnsNameResolver$1.run(DnsNameResolver.java:174)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

@pupimvictor
Copy link

Have you figured out the right setup for netty? I'm having the same issue here trying to use Pubsub

@garrettjonesgoogle
Copy link
Member

Could you try updating to the latest version now (0.20.1)? We have updated the grpc dependency since 19.0, and also the tcnative dependency (now: 2.0.3.Final ). This upgrade fixes conflicts with some other Netty usages (e.g. Tomcat).

@garrettjonesgoogle garrettjonesgoogle added api: language Issues related to the Cloud Natural Language API API. dependencies priority: p1 Important issue which blocks shipping the next release. Will be fixed prior to next release. type: question Request for information or clarification. Not an issue. labels Jul 17, 2017
@frankyaorenjie
Copy link

frankyaorenjie commented Jul 18, 2017

try to remove unused dependencies in pom, such as those artifactId is google-cloud

@garrettjonesgoogle
Copy link
Member

No response from the issue filer (after 3 weeks), so I'm going to close this out. I am going to consolidate issues related to the Jetty ALPN/NPN error in #2266 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: language Issues related to the Cloud Natural Language API API. dependencies priority: p1 Important issue which blocks shipping the next release. Will be fixed prior to next release. type: question Request for information or clarification. Not an issue.
Projects
None yet
Development

No branches or pull requests

4 participants