Add implementation note regarding server interceptors and thread locals #7482
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There seems to be some confusion regarding the correct usage of thread locals inside
ServerInterceptor
s.In all these examples the thread local is assigned during
interceptCall
/startCall
and only removed on completion/error/close.I try to warn about these broken implementations, but they are still out there after all and even new ones are created. IMO we should add a hint to the
ServerInterceptor
that strongly warns about the wrong usage of thread locals insideServerInterceptor
s.I also considered adding such a hint to
ServerCall.Listener
and the the corresponding client classes, but I would like to ask for opinion first.