After upgrading my PubSub client to 0.20.3-beta (as well as a few other Google dependencies) and switching from the Java8 flexible environment to the Java8 standard environment I'm no longer able to publish messages to my PubSub topic. I'm seeing this error in the logs for my AppEngine standard Java8 environment after publishing a message and get()ing the Future:
io.grpc.internal.ChannelExecutor drain: Runnable threw exception in ChannelExecutor (ChannelExecutor.java:89)
java.lang.NullPointerException
at com.google.apphosting.runtime.ApiProxyImpl$CurrentRequestThreadFactory.newThread(ApiProxyImpl.java:1267)
at com.google.common.util.concurrent.ThreadFactoryBuilder$1.newThread(ThreadFactoryBuilder.java:162)
at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:612)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:925)
at java.util.concurrent.ThreadPoolExecutor.ensurePrestart(ThreadPoolExecutor.java:1587)
at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:336)
at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:555)
at io.grpc.internal.ManagedChannelImpl.rescheduleIdleTimer(ManagedChannelImpl.java:334)
at io.grpc.internal.ManagedChannelImpl.exitIdleMode(ManagedChannelImpl.java:299)
at io.grpc.internal.ManagedChannelImpl$4$1.run(ManagedChannelImpl.java:357)
at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:87)
at io.grpc.internal.ManagedChannelImpl$4.get(ManagedChannelImpl.java:359)
at io.grpc.internal.ClientCallImpl.start(ClientCallImpl.java:218)
at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:62)
at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:276)
at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:186)
at com.google.pubsub.v1.PublisherGrpc$PublisherFutureStub.publish(PublisherGrpc.java:460)
at com.google.cloud.pubsub.v1.Publisher.publishOutstandingBatch(Publisher.java:329)
at com.google.cloud.pubsub.v1.Publisher.publishAllOutstanding(Publisher.java:304)
at com.google.cloud.pubsub.v1.Publisher.access$500(Publisher.java:79)
at com.google.cloud.pubsub.v1.Publisher$5.run(Publisher.java:283)
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:295)
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)
I'm using a Gradle build with the following relevant dependencies:
dependencies {
providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
providedCompile 'com.google.appengine:appengine:+'
testCompile 'org.eclipse.jetty:jetty-server:9.+'
testCompile 'org.eclipse.jetty:jetty-servlet:9.+'
compile group: 'com.google.guava', name: 'guava', version: '19.+'
compile group: 'com.google.inject', name: 'guice', version: '4.+'
compile 'com.google.appengine:appengine-api-1.0-sdk:1.+'
compile 'com.google.cloud:google-cloud-storage:1.2+'
compile group: 'com.google.cloud', name: 'google-cloud-pubsub', version: '0.20+'
compile ('com.google.cloud:google-cloud-datastore:1.2+')
compile('com.google.apis:google-api-services-cloudkms:v1-rev15-1.22.0') {
exclude(group: 'com.google.guava', module: 'guava-jdk5')
}
compile(group: 'com.google.api-client', name: 'google-api-client', version: '1.+') {
exclude(group: 'com.google.guava', module: 'guava-jdk5')
}
compile(group: 'com.google.api-client', name: 'google-api-client-appengine', version: '1.+') {
exclude(group: 'com.google.guava', module: 'guava-jdk5')
}
}
The deployment environment is AppEngine standard java8. I haven't been able to find the source code for ApiProxyImpl.java anywhere, so I'm unable to do much more debugging here. I guess I'll try downgrading the dependency and hope it works.
After upgrading my PubSub client to
0.20.3-beta(as well as a few other Google dependencies) and switching from the Java8 flexible environment to the Java8 standard environment I'm no longer able to publish messages to my PubSub topic. I'm seeing this error in the logs for my AppEngine standard Java8 environment after publishing a message andget()ing theFuture:I'm using a Gradle build with the following relevant dependencies:
The deployment environment is AppEngine standard java8. I haven't been able to find the source code for
ApiProxyImpl.javaanywhere, so I'm unable to do much more debugging here. I guess I'll try downgrading the dependency and hope it works.