-
Notifications
You must be signed in to change notification settings - Fork 3.9k
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
since grpc-java 1.68.1, pekko-grpc has issues with RetryingNameResolver (throwIfNotInThisSynchronizationContext) #11662
Comments
@kannanjgithub, the old Listener didn't require using the synchronization context. But the new stuff does. We probably messed up one of the adapting methods with onResult2 and didn't take that into account. @pjfanning, NameResolvers can access the SynchronizationContext from |
@ejona86 Thanks for your quick response. Apache Pekko is quite modular and pekko-grpc relies on other pekko modules including a pekko-discovery module. pekko-discovery has async APIs using Scala Futures. We won't be able to change this. The custom NameResolver in pekko-grpc uses the pekko-discovery APIs. |
…ization context to call it from inside of the synchronization context. Fixes grpc#11662.
The problem was with the gRPC code NameResolver.Listener.onAddresses abstract base class implementation calling onResult2 outside of the synchronization context. In the first part of the changes for onResult2 it was calling onResult like it should but the later PR for ResolutionResult introduced this regression. |
@pjfanning, I don't see what substantial changes you are talking about. Somewhere between |
We also encountered this issue when upgrading Our system is in Scala 2.13. Reverting back to |
@hacetin 1.68.0 has been marked as a mistaken release. I am switching to v1.67.1 in pekko-grpc. |
Fixed by #11666 |
Similar to #10407 but has started affecting us with grpc-java 1.68.1
pekko-grpc PR: apache/pekko-grpc#397
pekko-grpc is written in Scala and we are using Scala Futures when doing lookups asynchronously. grpc-java seems now to require that we use your SynchronizationContext instead.
I added an experimental change to pekko-grpc name resolution to add blocking code. This allowed me to avoid this issue but I discovered that we have some tests that still fail because io.grpc is unhappy that we are using Scala Futures. I wouldn't be delighted about the hack in our name resolver either.
The text was updated successfully, but these errors were encountered: