grpc / grpc/grpc-java

Cannot use Google Cloud Logging and Google Cloud Observability together (`IllegalStateException: Set cannot be called after any get call`)

Open
#11,048 2 comments 0 reactions 1 assignee Claimed by @DNVindhya View on GitHub
enhancement
Dominant language
Java
Stars
12.1k
Forks
4k
Avg merge
2d 17h
Merged PRs (30d)
37

Description

### What version of gRPC-Java are you using?
1.62.2

### What is your environment?
Ubuntu 20.04.6 LTS, openjdk 17.0.10

### What did you expect to see?
Be able to successfully run an application with Google Cloud Logging + Google Cloud Observability

### What did you see instead?
An exception is thrown when running the application:
```
Exception in thread "main" java.lang.IllegalStateException: Set cannot be called after any get call
at io.grpc.GlobalInterceptors.setInterceptorsTracers(GlobalInterceptors.java:61)
at io.grpc.InternalGlobalInterceptors.setInterceptorsTracers(InternalGlobalInterceptors.java:29)
at io.grpc.gcp.observability.GcpObservability.setProducer(GcpObservability.java:164)
at io.grpc.gcp.observability.GcpObservability.grpcInit(GcpObservability.java:116)
at io.grpc.gcp.observability.GcpObservability.grpcInit(GcpObservability.java:98)
```

### Steps to reproduce the bug

Minimal app showing issue: https://github.com/pkbriggs/gcp-logging-observability-issue

1. Create new Java app that uses both Google Cloud Logging (https://cloud.google.com/logging/docs/setup/java) and Google Cloud Observability (https://cloud.google.com/stackdriver/docs/solutions/grpc/set-up-observability)
2. Add a logback.xml as described in the [GCP Logging docs](https://cloud.google.com/logging/docs/setup/java#logback_configuration)
3. Run app (`GRPC_GCP_OBSERVABILITY_CONFIG="{}" ./gradlew run`) and observe that an exception is thrown when `GcpObservability.grpcInit()` is called

If you delete/rename `src/main/resources/logback.xml` and run the app, it will run successfully. This seems to indicate there is some issue with `com.google.cloud.logging.logback.LoggingAppender` and `io.grpc.gcp.observability.GcpObservability`.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.