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

LoggingHandler is re-entrant when logging FINE #1386

Closed
gregw opened this issue Nov 10, 2016 · 38 comments
Closed

LoggingHandler is re-entrant when logging FINE #1386

gregw opened this issue Nov 10, 2016 · 38 comments
Assignees
Labels
api: logging Issues related to the Cloud Logging API.

Comments

@gregw
Copy link

gregw commented Nov 10, 2016

When using the LoggingHandler with logging turned up to FINE, it becomes re-entrant causing either an error or a stack overflow.

This appears due to the fact that classes used to implement LoggingHandler are themselves instrumented with Java Util Logging! Examples I have found are io.netty (first stack trace below)
and HttpURLConnection (second stack trace using a cut/paste of LoggingHandler to com.google.cloud.runtimes.jetty9.LoggingHandler as I'm working on Issue #1329

Nov 10, 2016 5:57:44 PM com.google.cloud.runtimes.jetty9.StackDriverLogging init
INFO: test info
Nov 10, 2016 5:57:45 PM io.netty.util.internal.logging.InternalLoggerFactory newDefaultFactory
FINE: Using java.util.logging as the default logging framework
Exception in thread "main" java.lang.ExceptionInInitializerError
	at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:36)
	at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
	at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
	at io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:58)
	at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:77)
	at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:72)
	at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:59)
	at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:187)
	at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:171)
	at io.grpc.internal.SharedResourceHolder.getInternal(SharedResourceHolder.java:124)
	at io.grpc.internal.SharedResourceHolder.get(SharedResourceHolder.java:94)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:311)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:280)
	at io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:230)
	at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:239)
	at com.google.api.gax.grpc.ServiceApiSettings$Builder$3.getOrBuildChannel(ServiceApiSettings.java:349)
	at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.<init>(ConfigServiceV2Api.java:155)
	at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.create(ConfigServiceV2Api.java:145)
	at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:140)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:68)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:491)
	at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:478)
	at com.google.cloud.logging.LoggingHandler.getLogging(LoggingHandler.java:276)
	at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
	at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
	at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
	at java.util.logging.Logger.log(Logger.java:738)
	at io.netty.util.internal.logging.JdkLogger.log(JdkLogger.java:606)
	at io.netty.util.internal.logging.JdkLogger.debug(JdkLogger.java:186)
	at io.netty.util.internal.logging.InternalLoggerFactory.newDefaultFactory(InternalLoggerFactory.java:62)
	at io.netty.util.internal.logging.InternalLoggerFactory.<clinit>(InternalLoggerFactory.java:37)
	at io.netty.channel.MultithreadEventLoopGroup.<clinit>(MultithreadEventLoopGroup.java:34)
	at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:187)
	at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:171)
	at io.grpc.internal.SharedResourceHolder.getInternal(SharedResourceHolder.java:124)
	at io.grpc.internal.SharedResourceHolder.get(SharedResourceHolder.java:94)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:311)
	at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:280)
	at io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:230)
	at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:239)
	at com.google.api.gax.grpc.ServiceApiSettings$Builder$3.getOrBuildChannel(ServiceApiSettings.java:349)
	at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.<init>(ConfigServiceV2Api.java:155)
	at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.create(ConfigServiceV2Api.java:145)
	at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:140)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:68)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:491)
	at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
	at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:478)
	at com.google.cloud.logging.LoggingHandler.getLogging(LoggingHandler.java:276)
	at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
	at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
	at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
	at java.util.logging.Logger.log(Logger.java:738)
	at java.util.logging.Logger.doLog(Logger.java:765)
	at java.util.logging.Logger.log(Logger.java:788)
	at java.util.logging.Logger.info(Logger.java:1489)
	at com.google.cloud.runtimes.jetty9.StackDriverLogging.init(StackDriverLogging.java:37)
	at com.google.cloud.runtimes.jetty9.StackDriverLogging.main(StackDriverLogging.java:47)
Caused by: java.lang.NullPointerException
	at io.netty.util.internal.logging.InternalLoggerFactory.getInstance(InternalLoggerFactory.java:97)
	at io.netty.util.internal.logging.InternalLoggerFactory.getInstance(InternalLoggerFactory.java:90)
	at io.netty.util.concurrent.DefaultPromise.<clinit>(DefaultPromise.java:35)
	... 65 more
Exception in thread "main" java.lang.StackOverflowError
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
	at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
	at sun.security.jca.ProviderList.getProvider(ProviderList.java:233)
	at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:434)
	at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:376)
	at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:486)
	at java.security.Signature$Delegate.chooseProvider(Signature.java:1094)
	at java.security.Signature$Delegate.engineInitSign(Signature.java:1176)
	at java.security.Signature.initSign(Signature.java:527)
	at com.google.api.client.util.SecurityUtils.sign(SecurityUtils.java:145)
	at com.google.api.client.json.webtoken.JsonWebSignature.signUsingRsaSha256(JsonWebSignature.java:637)
	at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:208)
	at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
	at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
	at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
	at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
	at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
	at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
	at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
	at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
	at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
	at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
	at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
	at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
	at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
	at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
	at com.google.cloud.runtimes.jetty9.AsyncLoggingHandler.write(AsyncLoggingHandler.java:101)
	at com.google.cloud.runtimes.jetty9.LoggingHandler.flush(LoggingHandler.java:365)
	at com.google.cloud.runtimes.jetty9.LoggingHandler.publish(LoggingHandler.java:298)
	at java.util.logging.Logger.log(Logger.java:738)
	at java.util.logging.Logger.doLog(Logger.java:765)
	at java.util.logging.Logger.log(Logger.java:788)
	at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
	at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
	at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
	at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
	at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
	at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
	at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
	at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
	at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
	at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
	at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
	at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
	at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
	at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
	at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
	at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
	at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
	at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
	at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)

...

	at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
	at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
	at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
	at com.google.cloud.runtimes.jetty9.AsyncLoggingHandler.write(AsyncLoggingHandler.java:101)
	at com.google.cloud.runtimes.jetty9.LoggingHandler.flush(LoggingHandler.java:365)
	at com.google.cloud.runtimes.jetty9.LoggingHandler.publish(LoggingHandler.java:298)
	at java.util.logging.Logger.log(Logger.java:738)
	at java.util.logging.Logger.doLog(Logger.java:765)
	at java.util.logging.Logger.log(Logger.java:788)
	at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
	at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
	at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
	at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
	at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
	at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
	at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
	at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
	at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
	at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
	at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
	at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
	at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
	at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
	at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
	at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
	at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
	at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
	at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
	at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
	at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
	at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
	at com.google.cloud.runtimes.jetty9.AsyncLoggingHandler.write(AsyncLoggingHandler.java:101)
	at com.google.cloud.runtimes.jetty9.LoggingHandler.flush(LoggingHandler.java:365)
	at com.google.cloud.runtimes.jetty9.LoggingHandler.publish(LoggingHandler.java:298)
	at java.util.logging.Logger.log(Logger.java:738)
	at java.util.logging.Logger.doLog(Logger.java:765)
	at java.util.logging.Logger.log(Logger.java:788)
	at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
	at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
	at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
	at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
	at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
	at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
	at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
	at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
	at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
	at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
	at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
@mziccard
Copy link
Contributor

mziccard commented Nov 10, 2016

How are you registering the logging handler?

We are aware of this and documented this behavior in our javadoc. To overcome this issue you should register the handler either using logging.properties or LoggingHandler.addHandler(Logger, LoggingHandler).

To add a LoggingHandler to an existing Logger and be sure to avoid infinite recursion when logging, use the LoggingHandler.addHandler(Logger, LoggingHandler) method. Alternatively you can add the handler via logging.properties. For example using the following line: com.example.mypackage.handlers=com.google.cloud.logging.LoggingHandler

@mziccard mziccard added the api: logging Issues related to the Cloud Logging API. label Nov 10, 2016
@gregw
Copy link
Author

gregw commented Nov 10, 2016

@mziccard The first of those example did incorrectly use addHandler. When I modify to use the static addHandler, that fixes the NPE in initialization, but I still get a stack overflow when actually logging at FINE.

I setup with a combination of logging.properties:

.level = FINE

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

and then code that creates a LoggingHandler with specific JSON auth file:

public class StackDriverLogging {

  static void init() throws Exception {

    final LoggingOptions options;
    String credentials = System.getenv("GOOGLE_OAUTH2_JSON_CREDENTIALS");

    if (credentials == null) {
      options = LoggingOptions.getDefaultInstance();
    } else {
      AuthCredentials authCredentials =
          AuthCredentials.createForJson(new FileInputStream(credentials));
      options = LoggingOptions.newBuilder().setAuthCredentials(authCredentials).build();
    }

    LoggingHandler handler = new LoggingHandler("test.log", options);
    handler.setLevel(Level.FINE);
    LoggingHandler.addHandler(Logger.getLogger(""), handler);

    Logger log = Logger.getLogger(StackDriverLogging.class.getName());
    log.info("test info");
    log.fine("test fine");

    //handler.flush();

  }

This code results in a stack overflow exception, with the following repeated part:

    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.UserCredentials.refreshAccessToken(UserCredentials.java:121)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.UserCredentials.refreshAccessToken(UserCredentials.java:121)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.UserCredentials.refreshAccessToken(UserCredentials.java:121)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)

and the console log issue the repeated log:

FINE: sun.net.www.MessageHeader@65f8f5ae8 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@384671168 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@790da4778 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@57bc27f58 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@4b8d604b8 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@68c9d1798 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@2dfaea868 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@33ecda928 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests
FINE: sun.net.www.MessageHeader@6e2829c78 pairs: {POST /o/oauth2/token HTTP/1.1: null}{Accept-Encoding: gzip}{User-Agent: Google-HTTP-Java-Client/1.21.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: 174}
Nov 11, 2016 9:16:38 AM sun.net.www.protocol.http.HttpURLConnection writeRequests

My second example above is initialized entirely in a logging.properties file, but it uses a cut/paste/extended version of LoggingHandler that does the JSON auth initialization in the constructor and has some extra code in entryFor to add a traceid. I don't think my changes are relevant to this problem, but I created the first example just to see if I could reproduce with the standard LoggingHandler

@mziccard
Copy link
Contributor

mziccard commented Nov 10, 2016

I am not able to reproduce. I tried the following code:

public class AddLoggingHandler {

  public static void main(String... args) throws Exception {

    LoggingOptions options = LoggingOptions.getDefaultInstance();

    LoggingHandler handler = new LoggingHandler("test.log", options);
    handler.setLevel(Level.FINE);
    LoggingHandler.addHandler(Logger.getLogger(""), handler);

    Logger log = Logger.getLogger(AddLoggingHandler.class.getName());
    log.info("test info");
    log.fine("test fine");
  }
}

With the following logging.properties:

.level = FINE

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

I have the GOOGLE_APPLICATION_CREDENTIALS set so my credentials are being loaded from file as in your example. The code works fine, entries are written to Logging and I get the following output:

Nov 10, 2016 11:46:52 PM com.google.cloud.examples.logging.snippets.AddLoggingHandler main
INFO: test info
Nov 10, 2016 11:46:54 PM com.google.cloud.examples.logging.snippets.AddLoggingHandler main
FINE: test fine

@gregw
Copy link
Author

gregw commented Nov 10, 2016

@mziccard I switched to your exact version of the code and moved my credentials to GOOGLE_APPLICATION_CREDENTIALS. I still get the infinite recursion?!?!

I also tried passing in null for the options, to allow the internals to get the default instance and I get the same result.

I'm using the 0.5.1 release.

could it be something about my credentials? I can send them to you privately (they are just for a google test project) if you think it worth trying them?

@gregw
Copy link
Author

gregw commented Nov 10, 2016

@mbrukman I've simplified my test even more. I now just setup logging in logging.properties:

.level = FINE

handlers = com.google.cloud.logging.LoggingHandler
com.google.cloud.logging.LoggingHandler.level = FINE

and my test code is just:

package com.google.cloud.runtimes.jetty9;
import java.util.logging.Logger;
public class StackDriverLogging {
  static void init() throws Exception {
    Logger log = Logger.getLogger(StackDriverLogging.class.getName());
    log.info("test info");
    log.fine("test fine");
  }
  public static void main(String... args) throws Exception {
    init();
  }
}

which gets the following stack overflow (added in full just in case the top or the bottom has something meaningful to you I just edited to take out most of the repeats]):

Exception in thread "main" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
    at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
    at sun.security.jca.ProviderList.getProvider(ProviderList.java:233)
    at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:434)
    at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:376)
    at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:486)
    at java.security.Signature$Delegate.chooseProvider(Signature.java:1094)
    at java.security.Signature$Delegate.engineInitSign(Signature.java:1176)
    at java.security.Signature.initSign(Signature.java:527)
    at com.google.api.client.util.SecurityUtils.sign(SecurityUtils.java:145)
    at com.google.api.client.json.webtoken.JsonWebSignature.signUsingRsaSha256(JsonWebSignature.java:637)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:208)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)

...


    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1292)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)

@gregw
Copy link
Author

gregw commented Nov 10, 2016

I modified the code to printout the state of the loggers:

  static void init() throws Exception {
    Logger log = Logger.getLogger(StackDriverLogging.class.getName());

    for (Logger l : new Logger[]{ log,Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection")}) {
      while (l!=null) {
        System.err.printf("Log '%s' upl=%b %s%n",l.getName(),l.getUseParentHandlers(),Arrays.asList(l.getHandlers()));
        l = l.getParent();
      }
    }

    log.info("test info");
    log.fine("test fine");
  }

which produced:

Log 'com.google.cloud.runtimes.jetty9.StackDriverLogging' upl=true []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@71c7db30]
Log 'sun.net.www.protocol.http.HttpURLConnection' upl=true []
Log 'sun.net.www.protocol.http' upl=false []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@71c7db30]
Exception in thread "main" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
    at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
    at sun.security.jca.ProviderList.getProvider(ProviderList.java:233)
    at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:434)
    at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:376)
    at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:486)
    at java.security.Signature$Delegate.chooseProvider(Signature.java:1094)
    at java.security.Signature$Delegate.engineInitSign(Signature.java:1176)
    at java.security.Signature.initSign(Signature.java:527)
    at com.google.api.client.util.SecurityUtils.sign(SecurityUtils.java:145)
    at com.google.api.client.json.webtoken.JsonWebSignature.signUsingRsaSha256(JsonWebSignature.java:637)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:208)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:657)
...

So the masking of the loggers looks to have worked as sun.net.www.protocol.http has use parent set to false??? I wonder if it is something to do with the LoggingProxyImpl???

@mziccard
Copy link
Contributor

@gregw great, this is what I was about to suggest you to do. You are right, it seems that the masking is working just fine. In fact, if I run an analogous example I get the same output (set aside class names) and no recursion:

Log 'com.google.cloud.examples.logging.snippets.AddLoggingHandler' upl=true []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@48eff760]
Log 'sun.net.www.protocol.http.HttpURLConnection' upl=true []
Log 'sun.net.www.protocol.http' upl=false []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@48eff760]

This is really confusing. How are you running the app? Play java? Which version?

@gregw
Copy link
Author

gregw commented Nov 11, 2016

I'm currently running from within eclipse IDE using java 1.8.0_40. There is definitely something fishy as if I modify the test to do:

    Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection").info("test");
    log.info("test info");
    log.fine("test fine");

The first log line is correctly masked and does not go infinite, but the second one does???

Let me try running from command line....

@gregw
Copy link
Author

gregw commented Nov 11, 2016

Command line gives me same problem:

gregw@Tile440: ~/src/gcloud/flex/jetty-runtime/jetty9-base/target/jetty-base (master-68)
[2130] java -Djava.util.logging.config.file=/tmp/logging.properties -classpath lib/gae/grpc-google-common-protos-0.1.0.jar:lib/gae/google-api-client-appengine-1.21.0.jar:lib/gae/aopalliance-1.0.jar:lib/gae/protobuf-java-util-3.0.0.jar:lib/gae/google-http-client-1.21.0.jar:lib/gae/gson-2.3.1.jar:lib/gae/javax.inject-1.jar:lib/gae/jdo2-api-2.3-eb.jar:lib/gae/grpc-protobuf-1.0.1.jar:lib/gae/grpc-context-1.0.1.jar:lib/gae/google-cloud-logging-0.5.1.jar:lib/gae/grpc-core-1.0.1.jar:lib/gae/google-auth-library-oauth2-http-0.3.1.jar:lib/gae/grpc-auth-1.0.1.jar:lib/gae/netty-codec-http-4.1.3.Final.jar:lib/gae/google-oauth-client-servlet-1.21.0.jar:lib/gae/google-api-client-1.21.0.jar:lib/gae/grpc-netty-1.0.1.jar:lib/gae/google-http-client-jackson2-1.19.0.jar:lib/gae/gax-0.0.21.jar:lib/gae/httpcore-4.0.1.jar:lib/gae/netty-codec-http2-4.1.3.Final.jar:lib/gae/grpc-stub-1.0.1.jar:lib/gae/httpclient-4.0.1.jar:lib/gae/google-cloud-core-0.5.1.jar:lib/gae/google-api-client-servlet-1.21.0.jar:lib/gae/guice-4.0.jar:lib/gae/netty-buffer-4.1.3.Final.jar:lib/gae/commons-codec-1.3.jar:lib/gae/joda-time-2.9.2.jar:lib/gae/transaction-api-1.1.jar:lib/gae/jetty9-base-0.1.0-SNAPSHOT.jar:lib/gae/netty-common-4.1.3.Final.jar:lib/gae/google-oauth-client-1.21.0.jar:lib/gae/google-http-client-jdo-1.21.0.jar:lib/gae/google-http-client-jackson-1.21.0.jar:lib/gae/jackson-core-2.1.3.jar:lib/gae/grpc-google-iam-v1-0.1.0.jar:lib/gae/guava-19.0.jar:lib/gae/google-auth-library-credentials-0.3.1.jar:lib/gae/netty-resolver-4.1.3.Final.jar:lib/gae/jackson-core-asl-1.9.11.jar:lib/gae/google-oauth-client-appengine-1.21.0.jar:lib/gae/commons-logging-1.1.1.jar:lib/gae/json-20151123.jar:lib/gae/protobuf-java-3.0.0.jar:lib/gae/netty-tcnative-boringssl-static-1.1.33.Fork19.jar:lib/gae/jsr305-1.3.9.jar:lib/gae/google-http-client-appengine-1.21.0.jar:lib/gae/netty-handler-4.1.3.Final.jar:lib/gae/grpc-protobuf-lite-1.0.1.jar:lib/gae/auto-value-1.2.jar:lib/gae/grpc-google-logging-v2-0.1.1.jar:lib/gae/netty-codec-4.1.3.Final.jar:lib/gae/netty-transport-4.1.3.Final.jar:lib/slf4j/slf4j-api-1.7.21.jar:lib/slf4j/slf4j-jdk14-1.7.21.jar:lib/slf4j/jcl-over-slf4j-1.7.21.jar com.google.cloud.runtimes.jetty9.StackDriverLogging
Log 'com.google.cloud.runtimes.jetty9.StackDriverLogging' upl=true []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@7f63425a]
Log 'sun.net.www.protocol.http.HttpURLConnection' upl=true []
Log 'sun.net.www.protocol.http' upl=false []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@7f63425a]
httpurl log
log info
Exception in thread "main" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
    at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
    at sun.security.jca.ProviderList.getProvider(ProviderList.java:233)
    at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:434)
    at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:376)
    at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:486)
    at java.security.Signature$Delegate.chooseProvider(Signature.java:1094)
    at java.security.Signature$Delegate.engineInitSign(Signature.java:1176)
    at java.security.Signature.initSign(Signature.java:527)
    at com.google.api.client.util.SecurityUtils.sign(SecurityUtils.java:145)
    at com.google.api.client.json.webtoken.JsonWebSignature.signUsingRsaSha256(JsonWebSignature.java:637)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:208)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
...

@gregw
Copy link
Author

gregw commented Nov 11, 2016

I upgraded to java 1.8.0_77
Modified test code to be:

package com.google.cloud.runtimes.jetty9;

import java.util.Arrays;
import java.util.logging.Logger;

public class StackDriverLogging {

  static void init() throws Exception {
    Logger log = Logger.getLogger(StackDriverLogging.class.getName());

    for (Logger l : new Logger[] {log,
        Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection")}) {
      while (l != null) {
        System.err.printf("Log '%s' upl=%b %s%n", l.getName(), l.getUseParentHandlers(),
            Arrays.asList(l.getHandlers()));
        l = l.getParent();
      }
    }
    System.err.println("httpurl log");
    Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection").info("test");
    System.err.println("some.random.log log");
    Logger.getLogger("some.random.log").info("test");
    System.err.println("com.google.cloud.runtimes.jetty9.StackDriverLogging log info");
    log.info("test info");
    System.err.println("com.google.cloud.runtimes.jetty9.StackDriverLogging log fine");
    log.fine("test fine");
    System.err.println("done");
  }

  public static void main(String... args) throws Exception {
    init();
  }
}

and if fails running from command line on the some.random.log:

[2139] java -Djava.util.logging.config.file=/tmp/logging.properties -classpath $( echo $(find -name '*.jar') | sed 's/ /:/g' ) com.google.cloud.runtimes.jetty9.StackDriverLogging
Log 'com.google.cloud.runtimes.jetty9.StackDriverLogging' upl=true []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@6e8dacdf]
Log 'sun.net.www.protocol.http.HttpURLConnection' upl=true []
Log 'sun.net.www.protocol.http' upl=false []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@6e8dacdf]
httpurl log
some.random.log log
Exception in thread "main" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
    at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
    at sun.security.jca.ProviderList.getProvider(ProviderList.java:233)
    at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:434)
    at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:376)
    at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:486)
    at java.security.Signature$Delegate.chooseProvider(Signature.java:1094)
    at java.security.Signature$Delegate.engineInitSign(Signature.java:1176)
    at java.security.Signature.initSign(Signature.java:527)
    at com.google.api.client.util.SecurityUtils.sign(SecurityUtils.java:145)
    at com.google.api.client.json.webtoken.JsonWebSignature.signUsingRsaSha256(JsonWebSignature.java:637)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:208)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
...

my complete classpath is:

./grpc-google-common-protos-0.1.0.jar
./google-api-client-appengine-1.21.0.jar
./aopalliance-1.0.jar
./protobuf-java-util-3.0.0.jar
./google-http-client-1.21.0.jar
./gson-2.3.1.jar
./javax.inject-1.jar
./jdo2-api-2.3-eb.jar
./grpc-protobuf-1.0.1.jar
./grpc-context-1.0.1.jar
./google-cloud-logging-0.5.1.jar
./grpc-core-1.0.1.jar
./google-auth-library-oauth2-http-0.3.1.jar
./grpc-auth-1.0.1.jar
./netty-codec-http-4.1.3.Final.jar
./google-oauth-client-servlet-1.21.0.jar
./google-api-client-1.21.0.jar
./grpc-netty-1.0.1.jar
./google-http-client-jackson2-1.19.0.jar
./gax-0.0.21.jar
./httpcore-4.0.1.jar
./netty-codec-http2-4.1.3.Final.jar
./grpc-stub-1.0.1.jar
./httpclient-4.0.1.jar
./google-cloud-core-0.5.1.jar
./google-api-client-servlet-1.21.0.jar
./guice-4.0.jar
./netty-buffer-4.1.3.Final.jar
./commons-codec-1.3.jar
./joda-time-2.9.2.jar
./transaction-api-1.1.jar
./jetty9-base-0.1.0-SNAPSHOT.jar
./netty-common-4.1.3.Final.jar
./google-oauth-client-1.21.0.jar
./google-http-client-jdo-1.21.0.jar
./google-http-client-jackson-1.21.0.jar
./jackson-core-2.1.3.jar
./grpc-google-iam-v1-0.1.0.jar
./guava-19.0.jar
./google-auth-library-credentials-0.3.1.jar
./netty-resolver-4.1.3.Final.jar
./jackson-core-asl-1.9.11.jar
./google-oauth-client-appengine-1.21.0.jar
./commons-logging-1.1.1.jar
./json-20151123.jar
./protobuf-java-3.0.0.jar
./netty-tcnative-boringssl-static-1.1.33.Fork19.jar
./jsr305-1.3.9.jar
./google-http-client-appengine-1.21.0.jar
./netty-handler-4.1.3.Final.jar
./grpc-protobuf-lite-1.0.1.jar
./auto-value-1.2.jar
./grpc-google-logging-v2-0.1.1.jar
./netty-codec-4.1.3.Final.jar
./netty-transport-4.1.3.Final.jar

with my classes in ./jetty9-base-0.1.0-SNAPSHOT.jar

@meltsufin
Copy link
Member

@gregw I'm unable to reproduce this either. Are you using OpenJDK? Can you create a minimal maven project that reproduces this problem and share it on your GitHub account?

@gregw
Copy link
Author

gregw commented Nov 16, 2016

I'm using openJDK build 1.8.0_77-b03.

I'll build a mvn project to reproduce shortly.

@gregw
Copy link
Author

gregw commented Nov 17, 2016

@meltsufin I've created a reproduction in a small project. Because it includes credentials, I have not attached it here but posted it a private channel.

You can build it with:

cd stackdriver-loop
mvn install

And run it from the command line with:

GOOGLE_APPLICATION_CREDENTIALS=src/main/resources/jetty9-work-6f1d053125d8.json java -Djava.util.logging.config.file=src/main/resources/logging.properties -classpath $( echo $(find target/lib -name '*.jar') | sed 's/ /:/g' ):target/classes com.google.cloud.runtimes.jetty9.StackDriverLogging

The recursive logs appear in n the jetty9-work log console
The output I get is:

[2142] GOOGLE_APPLICATION_CREDENTIALS=src/main/resources/jetty9-work-6f1d053125d8.json java -Djava.util.logging.config.file=src/main/resources/logging.properties -classpath $( echo $(find target/lib -name '*.jar') | sed 's/ /:/g' ):target/classes com.google.cloud.runtimes.jetty9.StackDriverLogging
Log 'com.google.cloud.runtimes.jetty9.StackDriverLogging' upl=true []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@49e4cb85, java.util.logging.ConsoleHandler@2133c8f8]
Log 'sun.net.www.protocol.http.HttpURLConnection' upl=true []
Log 'sun.net.www.protocol.http' upl=false []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@49e4cb85, java.util.logging.ConsoleHandler@2133c8f8]
Exception in thread "main" java.lang.StackOverflowError
    at java.util.Properties.getProperty(Properties.java:969)
    at sun.net.NetProperties.get(NetProperties.java:90)
    at sun.net.spi.DefaultProxySelector$3.run(DefaultProxySelector.java:224)
    at sun.net.spi.DefaultProxySelector$3.run(DefaultProxySelector.java:208)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.spi.DefaultProxySelector.select(DefaultProxySelector.java:207)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1099)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:199)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:225)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:97)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:74)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)

@gregw
Copy link
Author

gregw commented Nov 17, 2016

Note also that I just deployed a LoggingHandler in the gcloud flex environment, with logging only at INFO and observed a similar loop on start up:

[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:738)
[INFO] GCLOUD:  at java.util.logging.Logger.doLog(Logger.java:765)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:850)
[INFO] GCLOUD:  at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:340)
[INFO] GCLOUD:  at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:260)
[INFO] GCLOUD:  at com.google.api.gax.grpc.ServiceApiSettings$Builder$3.getOrBuildChannel(ServiceApiSettings.java:349)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.<init>(ConfigServiceV2Api.java:155)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.create(ConfigServiceV2Api.java:145)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:140)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:68)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
[INFO] GCLOUD:  at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:491)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
[INFO] GCLOUD:  at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:478)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.getLogging(LoggingHandler.java:282)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.AsyncLoggingHandler.write(AsyncLoggingHandler.java:101)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.flush(LoggingHandler.java:365)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.publish(LoggingHandler.java:298)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:738)
[INFO] GCLOUD:  at java.util.logging.Logger.doLog(Logger.java:765)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:850)
[INFO] GCLOUD:  at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:340)
[INFO] GCLOUD:  at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:260)
[INFO] GCLOUD:  at com.google.api.gax.grpc.ServiceApiSettings$Builder$3.getOrBuildChannel(ServiceApiSettings.java:349)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.<init>(ConfigServiceV2Api.java:155)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.create(ConfigServiceV2Api.java:145)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:140)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:68)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
[INFO] GCLOUD:  at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:491)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
[INFO] GCLOUD:  at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:478)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.getLogging(LoggingHandler.java:282)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.AsyncLoggingHandler.write(AsyncLoggingHandler.java:101)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.flush(LoggingHandler.java:365)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.publish(LoggingHandler.java:298)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:738)
[INFO] GCLOUD:  at java.util.logging.Logger.doLog(Logger.java:765)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:850)
[INFO] GCLOUD:  at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:340)
[INFO] GCLOUD:  at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:260)
[INFO] GCLOUD:  at com.google.api.gax.grpc.ServiceApiSettings$Builder$3.getOrBuildChannel(ServiceApiSettings.java:349)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.<init>(ConfigServiceV2Api.java:155)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.v2.ConfigServiceV2Api.create(ConfigServiceV2Api.java:145)
[INFO] GCLOUD:  at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:140)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:68)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
[INFO] GCLOUD:  at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:491)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
[INFO] GCLOUD:  at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
[INFO] GCLOUD:  at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:478)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.getLogging(LoggingHandler.java:282)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.AsyncLoggingHandler.write(AsyncLoggingHandler.java:101)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.flush(LoggingHandler.java:365)
[INFO] GCLOUD:  at com.google.cloud.runtimes.jetty9.LoggingHandler.publish(LoggingHandler.java:298)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:738)
[INFO] GCLOUD:  at java.util.logging.Logger.doLog(Logger.java:765)
[INFO] GCLOUD:  at java.util.logging.Logger.log(Logger.java:850)
[INFO] GCLOUD:  at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:340)

Note this is using my copy/paste/modify of LoggingHandler #1329.

@gregw
Copy link
Author

gregw commented Nov 17, 2016

Has any consideration been given to using a threadlocal rather than masking to avoid such looping? Essentially any thread inside flush would set a threadlocal that would cause all log records generated by that thread to be ignored. I will give that approach a trial in my copy.

@gregw
Copy link
Author

gregw commented Nov 17, 2016

I tried the thread local approach. It does stop the looping, but the netty service itself is so verbose outside of any write call that turning on FINE logging is not practicable anyway. But if you explicitly dial down the netty service this approach at least works for me.

@meltsufin
Copy link
Member

@gregw @mziccard I was able to reproduce the issue with Greg's sample app. The key was to set the GOOGLE_APPLICATION_CREDENTIALS env variable, which I wasn't doing before. However, it didn't work from the commandline - I was getting a segmentation fault. I had to use an IntelliJ run configuration.

@lesv
Copy link
Contributor

lesv commented Nov 18, 2016

Just wondering, are you on the latest 0.6.0 version of logging. There was a change recently that put in the correct google auth, so it should no longer require a JSON or setting GOOGLE_APPLICATION_CREDENTIALS for deployed apps. For local apps, you should be setting gcloud auth application-default login

@gregw
Copy link
Author

gregw commented Nov 18, 2016

@lesv - No, I'm on 0.5.1, Will try 0.6.0 now...

@gregw
Copy link
Author

gregw commented Nov 18, 2016

Using 0.6.0 and the gcloud auth command, I still get infinite loop:

Log 'com.google.cloud.runtimes.jetty9.StackDriverLogging' upl=true []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@16c0663d, java.util.logging.ConsoleHandler@23223dd8]
Log 'sun.net.www.protocol.http.HttpURLConnection' upl=true []
Log 'sun.net.www.protocol.http' upl=false []
Log '' upl=true [com.google.cloud.logging.LoggingHandler@16c0663d, java.util.logging.ConsoleHandler@23223dd8]
Exception in thread "main" java.lang.StackOverflowError
    at sun.reflect.GeneratedConstructorAccessor15.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.security.Provider$Service.newInstance(Provider.java:1595)
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
    at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:227)
    at sun.security.ssl.JsseJce.getKeyPairGenerator(JsseJce.java:281)
    at sun.security.ssl.JsseJce.isEcAvailable(JsseJce.java:205)
    at sun.security.ssl.CipherSuite$KeyExchange.isAvailable(CipherSuite.java:378)
    at sun.security.ssl.CipherSuite.isAvailable(CipherSuite.java:194)
    at sun.security.ssl.SSLContextImpl.getApplicableCipherSuiteList(SSLContextImpl.java:346)
    at sun.security.ssl.SSLContextImpl.getDefaultCipherSuiteList(SSLContextImpl.java:304)
    at sun.security.ssl.SSLSocketImpl.init(SSLSocketImpl.java:626)
    at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:537)
    at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:72)
    at sun.net.www.protocol.https.HttpsClient.createSocket(HttpsClient.java:405)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:162)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.UserCredentials.refreshAccessToken(UserCredentials.java:207)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:149)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:135)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:202)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
    at java.util.logging.LoggingProxyImpl.log(LoggingProxyImpl.java:61)
    at sun.util.logging.LoggingSupport.log(LoggingSupport.java:120)
    at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:610)
    at sun.util.logging.PlatformLogger.fine(PlatformLogger.java:364)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:658)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1293)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.auth.oauth2.UserCredentials.refreshAccessToken(UserCredentials.java:207)
    at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:149)
    at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:135)
    at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:150)
    at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:64)
    at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:96)
    at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
    at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
    at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:273)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:252)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:189)
    at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
    at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
    at com.google.api.gax.grpc.RetryingCallable$RetryingResultFuture.issueCall(RetryingCallable.java:222)
    at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:90)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:242)
    at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:253)
    at com.google.cloud.logging.spi.DefaultLoggingRpc.write(DefaultLoggingRpc.java:202)
    at com.google.cloud.logging.LoggingImpl.writeAsync(LoggingImpl.java:503)
    at com.google.cloud.logging.LoggingImpl.write(LoggingImpl.java:499)
    at com.google.cloud.logging.LoggingHandler.write(LoggingHandler.java:351)
    at com.google.cloud.logging.LoggingHandler.flush(LoggingHandler.java:357)
    at com.google.cloud.logging.LoggingHandler.publish(LoggingHandler.java:292)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.log(Logger.java:788)
        ...

@gregw
Copy link
Author

gregw commented Nov 18, 2016

Since with 0.6.0, credentials are no longer needed, I have zipped up the reproduction project here:
stackdriver-loop.zip

@meltsufin
Copy link
Member

@garrettjonesgoogle Is this something you can look at? Greg is working on a workaround that uses a thread-local flag instead of masking, but we would like to get to the bottom of this. Thanks!

@garrettjonesgoogle
Copy link
Member

I will take a look.

@gregw
Copy link
Author

gregw commented Dec 2, 2016

Just tested 0.7.0 and got the same stack overflow.

@garrettjonesgoogle
Copy link
Member

The root cause is this:

  1. Someone logs something.
  2. The logging handler calls the service layer
  3. This is the first call, so the service layer makes an http call for auth
  4. The http layer writes a FINE log
  5. The logging handler calls the service layer
    (repeat forever)

My current plan is to add a thread-local in the GAX layer for all service calls, and throw an exception if the same service call occurs multiple times in the stack frame. The logging handler will catch this exception and defer the flush until later (which will happen anyway at the top-level flush invocation). This ends up preserving all FINE logs in the end.

I have gotten this working on my machine - I will clean it up and get it pushed later.

@gregw
Copy link
Author

gregw commented Dec 13, 2016

@garrettjonesgoogle FYI You can see the work around we have currently used in the flex jetty-runtime here. We use a thread local that simply discards all the logs generated by a thread during a flush.

I would be a bit concerned that the exception thrown would consume additional memory and CPU to log something that is just an artefact of logging.

While it would be nice to get the logs from the logging, I don't think it is essential, plus I'm concerned that once FINE logging is turned on, then we will essentially be in an infinite loop of logging, flushing, flushings the logs from the flush, flushing the logs from the flush of the logs of the flush.... ie will the server ever return to idle?

Finally, is this threadlocal to be a replacement for the current approach that removes handlers from loggers? Or will it be in addition?

@garrettjonesgoogle
Copy link
Member

You won't be in an infinite loop of logging, because the secondary flush becomes a no-op.

Do you want http and grpc logs not related to logging when you turn on FINE logging?

I don't intend on implementing an approach that removes handlers from loggers, so in that sense it's a "replacement".

@meltsufin
Copy link
Member

@garrettjonesgoogle I think we do want the clients to be able to see grpc logs, especially when they're using grpc for their own purposes. Even our own use of grpc for logging could generate logs, if users select that level of logging. We just want to make sure that there isn't an infinite loop or a serious performance impact for supporting it.

@garrettjonesgoogle
Copy link
Member

I did a test, and it does turn out that when the logging call generates a log, it causes an infinite logging chain. It's not an infinite loop per se; it just means that each flush will queue up another log for the next flush, ad infinitum. I will change my approach so that logs generated as part of a logging call are not sent in the next logging call. It probably makes sense for them to still be logged locally though.

@garrettjonesgoogle
Copy link
Member

This has taken a gnarly turn. It turns out that gRPC executes its remote calls within worker threads, which means that a ThreadLocal won't stop the worker thread from logging when it isn't supposed to.

@gregw
Copy link
Author

gregw commented Dec 14, 2016

That is indeed gnarly. I'm struggling to think of a suggestion other than implementing a extremely simple client just for logging that itself does not log.

@lesv
Copy link
Contributor

lesv commented Dec 14, 2016

Can't we start with a standard logging properties that doesn't use the google appender for JUL for grpc and only logs to console ??

@garrettjonesgoogle
Copy link
Member

garrettjonesgoogle commented Dec 14, 2016

@lesv the current LoggingHandler essentially does that already (it tries to ignore io.grpc, io.netty, com.google.api.client.http, and sun.net.www.protocol.http), but as @meltsufin says, they would like to be capable of getting grpc logs through the Logging service, as long as they're not for Logging grpc calls.

Incidentally I don't know why HttpURLConnection is still logging despite attempts to turn it off. It might be because it goes through sun.util.logging.PlatformLogger, and consequently ignores the logging levels in JUL. If it could be turned off, the recursive trace posted by @gregw wouldn't have happened.

@garrettjonesgoogle
Copy link
Member

I filed issue grpc/grpc-java#2515 to get help from the gRPC team.

@gregw
Copy link
Author

gregw commented Dec 14, 2016

Note also that we have tried to avoid the issue with a logging.properties like:

.level = FINE
io.netty.level = INFO
io.gcr.level = INFO

But the global FINE configuration appears to take effect instead of the specific INFO configurations, at least for some log events like:

loggerName=io.grpc.netty.NettyClientHandler 
SourceClassName=io.netty.util.internal.logging.Slf4JLogger 
SourceClassMethod=debug

Not yet investigated why this is so, but we have tried just the don't turn it on approach.

@garrettjonesgoogle
Copy link
Member

gRPC has noted that we can set a Context in one thread which will be accessible in the gRPC thread that handles the service call. I will try out this approach.

@garrettjonesgoogle
Copy link
Member

The approach didn't work. Filed another issue to gRPC: grpc/grpc-java#2535

@garrettjonesgoogle
Copy link
Member

I sent out a PR to fix this.

github-actions bot pushed a commit that referenced this issue Jun 21, 2022
…datatransfer to v2.2.3 (#1386)

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.cloud:google-cloud-bigquerydatatransfer](https://togithub.com/googleapis/java-bigquerydatatransfer) | `2.2.2` -> `2.2.3` | [![age](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquerydatatransfer/2.2.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquerydatatransfer/2.2.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquerydatatransfer/2.2.3/compatibility-slim/2.2.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquerydatatransfer/2.2.3/confidence-slim/2.2.2)](https://docs.renovatebot.com/merge-confidence/) |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Renovate will not automatically rebase this PR, because other commits have been found.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. ⚠ **Warning**: custom changes will be lost.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/java-bigquerydatatransfer).
github-actions bot pushed a commit to yoshi-code-bot/google-cloud-java that referenced this issue Oct 6, 2022
…17.0 (googleapis#1386)

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.cloud:google-cloud-bigquery](https://togithub.com/googleapis/java-bigquery) | `2.16.1` -> `2.17.0` | [![age](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.17.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.17.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.17.0/compatibility-slim/2.16.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.17.0/confidence-slim/2.16.1)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/java-bigquery</summary>

### [`v2.17.0`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2170-httpsgithubcomgoogleapisjava-bigquerycomparev2161v2170-2022-10-03)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.16.1...v2.17.0)

##### Features

-   Add remote function options to routine metadata ([#&googleapis#8203;2291](https://togithub.com/googleapis/java-bigquery/issues/2291)) ([d30670e](https://togithub.com/googleapis/java-bigquery/commit/d30670ee2edf498b0335f3dfdec3487f5627a9f3))

##### Dependencies

-   Update dependency com.google.api.grpc:proto-google-cloud-bigqueryconnection-v1 to v2.5.5 ([#&googleapis#8203;2328](https://togithub.com/googleapis/java-bigquery/issues/2328)) ([6e48ec2](https://togithub.com/googleapis/java-bigquery/commit/6e48ec22f98f95cc93a6a0e2a068d8a4d8c822ca))
-   Update dependency com.google.apis:google-api-services-bigquery to v2-rev20220913-2.0.0 ([#&googleapis#8203;2287](https://togithub.com/googleapis/java-bigquery/issues/2287)) ([fa33184](https://togithub.com/googleapis/java-bigquery/commit/fa331844dc1862120867d73ad87d87587a388576))
-   Update dependency com.google.apis:google-api-services-bigquery to v2-rev20220924-2.0.0 ([#&googleapis#8203;2325](https://togithub.com/googleapis/java-bigquery/issues/2325)) ([82c2097](https://togithub.com/googleapis/java-bigquery/commit/82c2097a866804ffb95a871087438fc163e8b77c))
-   Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.4 ([#&googleapis#8203;2327](https://togithub.com/googleapis/java-bigquery/issues/2327)) ([188c779](https://togithub.com/googleapis/java-bigquery/commit/188c77995cad31b328cfbf745df164f4ac70b692))
-   Update dependency gcp-releasetool to v1.8.9 ([#&googleapis#8203;2326](https://togithub.com/googleapis/java-bigquery/issues/2326)) ([52dfd13](https://togithub.com/googleapis/java-bigquery/commit/52dfd13a4d311526c784397f50ca5cf45b60f2a5))
-   Update dependency importlib-metadata to v4.13.0 ([#&googleapis#8203;2323](https://togithub.com/googleapis/java-bigquery/issues/2323)) ([4c7e089](https://togithub.com/googleapis/java-bigquery/commit/4c7e089f281c7147cd468fbdbd19cd7238b49be3))
-   Update dependency importlib-metadata to v5 ([#&googleapis#8203;2324](https://togithub.com/googleapis/java-bigquery/issues/2324)) ([bd43cf4](https://togithub.com/googleapis/java-bigquery/commit/bd43cf42443feba02d7970d3dd17c11d1b64872c))
-   Update dependency org.graalvm.buildtools:junit-platform-native to v0.9.14 ([#&googleapis#8203;2288](https://togithub.com/googleapis/java-bigquery/issues/2288)) ([959519c](https://togithub.com/googleapis/java-bigquery/commit/959519cd9e5910ba7d93cce00c318ed322dcaf23))
-   Update dependency org.graalvm.buildtools:native-maven-plugin to v0.9.14 ([#&googleapis#8203;2289](https://togithub.com/googleapis/java-bigquery/issues/2289)) ([3cf7ef8](https://togithub.com/googleapis/java-bigquery/commit/3cf7ef83d891480bf80fcb1879ca86e9e053304e))
-   Update dependency org.junit.vintage:junit-vintage-engine to v5.9.1 ([#&googleapis#8203;2285](https://togithub.com/googleapis/java-bigquery/issues/2285)) ([65fac18](https://togithub.com/googleapis/java-bigquery/commit/65fac188db2514ae620fb5146055591cfe6ac995))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/java-asset).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yMTQuMCIsInVwZGF0ZWRJblZlciI6IjMyLjIxNy4wIn0=-->
github-actions bot pushed a commit to renovate-bot/google-cloud-java that referenced this issue Oct 8, 2022
🤖 I have created a release *beep* *boop*
---


## [3.7.1](https://togithub.com/googleapis/java-asset/compare/v3.7.0...v3.7.1) (2022-10-07)


### Dependencies

* Update dependency com.google.api.grpc:proto-google-cloud-orgpolicy-v1 to v2.3.6 ([googleapis#1390](https://togithub.com/googleapis/java-asset/issues/1390)) ([4219b66](https://togithub.com/googleapis/java-asset/commit/4219b66da58325f5a133caa84243dc0958d90149))
* Update dependency com.google.api.grpc:proto-google-cloud-os-config-v1 to v2.5.6 ([googleapis#1382](https://togithub.com/googleapis/java-asset/issues/1382)) ([3abde9e](https://togithub.com/googleapis/java-asset/commit/3abde9e4130d62d9e6857dd3b016be88691bd7f4))
* Update dependency com.google.api.grpc:proto-google-cloud-pubsub-v1 to v1.102.20 ([googleapis#1384](https://togithub.com/googleapis/java-asset/issues/1384)) ([5904111](https://togithub.com/googleapis/java-asset/commit/5904111205fc7c698703eb8db805b159a6513389))
* Update dependency com.google.api.grpc:proto-google-identity-accesscontextmanager-v1 to v1.4.5 ([googleapis#1383](https://togithub.com/googleapis/java-asset/issues/1383)) ([48f2dd8](https://togithub.com/googleapis/java-asset/commit/48f2dd863c23ec3fffb24970046cab6795a64045))
* Update dependency com.google.cloud:google-cloud-bigquery to v2.17.0 ([googleapis#1386](https://togithub.com/googleapis/java-asset/issues/1386)) ([d3cf534](https://togithub.com/googleapis/java-asset/commit/d3cf534180a8b0c4a421ff52a998b43edd502e6c))
* Update dependency com.google.cloud:google-cloud-core to v2.8.20 ([googleapis#1380](https://togithub.com/googleapis/java-asset/issues/1380)) ([113b74e](https://togithub.com/googleapis/java-asset/commit/113b74e29f05047ba3eb22cee370b2b35b133991))
* Update dependency com.google.cloud:google-cloud-pubsub to v1.120.20 ([googleapis#1385](https://togithub.com/googleapis/java-asset/issues/1385)) ([792d9a2](https://togithub.com/googleapis/java-asset/commit/792d9a2aa2253e4cb6541c587810aab936aa9d81))
* Update dependency com.google.cloud:google-cloud-resourcemanager to v1.5.6 ([googleapis#1391](https://togithub.com/googleapis/java-asset/issues/1391)) ([9afc924](https://togithub.com/googleapis/java-asset/commit/9afc924fbe87b481dc3b731935d3dc021e1bae00))
* Update dependency com.google.cloud:google-cloud-storage to v2.13.0 ([googleapis#1392](https://togithub.com/googleapis/java-asset/issues/1392)) ([9660ee4](https://togithub.com/googleapis/java-asset/commit/9660ee42c68e7cb88e0d6867ac46f2cd6056ca17))

---
This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: logging Issues related to the Cloud Logging API.
Projects
None yet
Development

No branches or pull requests

5 participants