gloud-java. PERMISSION_DENIED: Google Cloud Pub/Sub API (Experimental)

36 views
Skip to first unread message

vad babushkin via StackOverflow

unread,
Aug 9, 2016, 5:51:04 PM8/9/16
to google-appengin...@googlegroups.com

I use gloud-java experimental library. After update today, error occurred. Run example from library local (This error is automatically appeared in the google cloud flexible engine, although deploy not produced for a week)

public class PullTest {
private static final transient Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());

public static void main(String... args) throws Exception {
    try (PubSub pubsub = PubSubOptions.defaultInstance().service()) {
        String subscriptionName = "subscription-segment";
        Subscription subscription = pubsub.getSubscription(subscriptionName);
    }
}
}

throw exception

Aug 10, 2016 2:19:08 AM io.grpc.internal.ManagedChannelImpl <init>
INFO: [ManagedChannelImpl@131ef10] Created with target pubsub-experimental.googleapis.com:443
Aug 10, 2016 2:19:08 AM io.grpc.internal.ManagedChannelImpl <init>
INFO: [ManagedChannelImpl@394df057] Created with target pubsub-experimental.googleapis.com:443
Aug 10, 2016 2:19:10 AM io.grpc.internal.ManagedChannelImpl maybeTerminateChannel
INFO: [ManagedChannelImpl@131ef10] Terminated
Exception in thread "main" com.google.cloud.pubsub.PubSubException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Google Cloud Pub/Sub API (Experimental) has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/pubsub-experimental.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
at com.google.cloud.pubsub.spi.DefaultPubSubRpc$1.apply(DefaultPubSubRpc.java:183)
at com.google.cloud.pubsub.spi.DefaultPubSubRpc$1.apply(DefaultPubSubRpc.java:177)
at com.google.common.util.concurrent.Futures$CatchingFuture.doFallback(Futures.java:842)
at com.google.common.util.concurrent.Futures$CatchingFuture.doFallback(Futures.java:834)
at com.google.common.util.concurrent.Futures$AbstractCatchingFuture.run(Futures.java:789)
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 com.google.common.util.concurrent.SettableFuture.setException(SettableFuture.java:53)
at com.google.api.gax.grpc.RetryingCallable$Retryer$1.onFailure(RetryingCallable.java:139)
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 com.google.common.util.concurrent.SettableFuture.setException(SettableFuture.java:53)
at com.google.api.gax.grpc.ExceptionTransformingCallable$1.onFailure(ExceptionTransformingCallable.java:90)
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:331)
at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:307)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$3.runInContext(ClientCallImpl.java:462)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:54)
at io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154)
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: com.google.api.gax.grpc.ApiException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Google Cloud Pub/Sub API (Experimental) has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/pubsub-experimental.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
... 18 more
Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Google Cloud Pub/Sub API (Experimental) has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/pubsub-experimental.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
at io.grpc.Status.asRuntimeException(Status.java:503)
... 11 more
Aug 10, 2016 2:19:10 AM io.grpc.internal.ManagedChannelImpl maybeTerminateChannel
INFO: [ManagedChannelImpl@394df057] Terminated

How to get around this problem? The problem arose out of nothing. In the morning it worked :)



Please DO NOT REPLY directly to this email but go to StackOverflow:
http://stackoverflow.com/questions/38860888/gloud-java-permission-denied-google-cloud-pub-sub-api-experimental

Jon Skeet via StackOverflow

unread,
Aug 9, 2016, 5:51:07 PM8/9/16
to google-appengin...@googlegroups.com

(Caveat: I work on the team building the equivalent library for .NET. That means I know a certain amount of the infrastructure involved, but I don't know any Java-specific details.)

If you're just trying to use the PubSub v1 API, I believe the problem is that it's connecting to pubsub-experimental.googleapis.com instead of pubsub.googleapis.com. I'm not sure why it's treating that as the default endpoint - the default host in the code look okay - but I believe you should be able to fix it by setting the host manually:

PubSubOptions options = PubSubOptions.builder().host("pubsub.googleapis.com").build();
try (PubSub pubsub = options.service()) {
    String subscriptionName = "subscription-segment";
    Subscription subscription = pubsub.getSubscription(subscriptionName);
}

Given that the source code in github seems okay, you might also want to check that you're using the latest published version of the library... it may well be that the default host has been fixed in that.



Please DO NOT REPLY directly to this email but go to StackOverflow:
http://stackoverflow.com/questions/38860888/gloud-java-permission-denied-google-cloud-pub-sub-api-experimental/38860983#38860983

vad babushkin via StackOverflow

unread,
Aug 9, 2016, 5:56:05 PM8/9/16
to google-appengin...@googlegroups.com

I use gloud-java experimental library. After update today, error occurred. Run example from library local (This error is automatically appeared in the google cloud flexible engine, although deploy not produced for a week)

public class PullTest {
private static final transient Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());

public static void main(String... args) throws Exception {
    try (PubSub pubsub = PubSubOptions.defaultInstance().service()) {
        String subscriptionName = "subscription-segment";
        Subscription subscription = pubsub.getSubscription(subscriptionName);
    }
}
}

p.s.

$ gcloud info

shows the correct information

$ gcloud auth login

did not help

Jon Skeet via StackOverflow

unread,
Aug 11, 2016, 6:11:10 PM8/11/16
to google-appengin...@googlegroups.com

(Caveat: I work on the team building the equivalent library for .NET. That means I know a certain amount of the infrastructure involved, but I don't know any Java-specific details.)

If you're just trying to use the PubSub v1 API, I believe the problem is that it's connecting to pubsub-experimental.googleapis.com instead of pubsub.googleapis.com. I'm not sure why it's treating that as the default endpoint - the default host in the code look okay - but I believe you should be able to fix it by setting the host manually:

PubSubOptions options = PubSubOptions.builder().host("pubsub.googleapis.com
").build();
try (PubSub pubsub = options.service()) {
    String subscriptionName = "subscription-segment";
    Subscription subscription = pubsub.getSubscription(subscriptionName);
}

Given that the source code in github seems okay, you might also want to check that you're using the latest published version of the library... it may well be that the default host has been fixed in that. As per comments, gcloud-java 0.2.7 uses the correct host by default.



Please DO NOT REPLY directly to this email but go to StackOverflow:
http://stackoverflow.com/questions/38860888/gloud-java-permission-denied-google-cloud-pub-sub-api-experimental/38860983#38860983
Reply all
Reply to author
Forward
0 new messages