core: fix false-positive orphan warning in ManagedChannelOrphanWrapper by themechbro · Pull Request #12705 · grpc/grpc-java (original) (raw)
added 4 commits
Add a reachability fence in shutdown() and shutdownNow() to ensure the wrapper is not garbage collected while shutdown logic is executing. This prevents a race condition when using directExecutor() where a warning could be logged despite a proper shutdown.
Fixes grpc#12641
grpc-kokoro removed the kokoro:run
Add this label to a PR to tell Kokoro the code is safe and tests can be run
label
grpc-kokoro removed the kokoro:run
Add this label to a PR to tell Kokoro the code is safe and tests can be run
label
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
…, since super.shutdown() is never expected to throw.
Also remove redundant unit test.
Rework of PR grpc#12705.
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
…, since super.shutdown() is never expected to throw.
Also remove redundant unit test.
Rework of PR grpc#12705.
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
…, since super.shutdown() is never expected to throw.
Also remove redundant unit test.
Rework of PR grpc#12705.
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
…, since super.shutdown() is never expected to throw.
Also remove redundant unit test.
Rework of PR grpc#12705.
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
…, since super.shutdown() is never expected to throw.
Also remove redundant unit test.
Rework of PR grpc#12705.
kannanjgithub added a commit that referenced this pull request
super.shutdown() is never expected to throw, so some of the changes were not required. Also removing the redundant unit test.
Rework of PR #12705.
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
This PR addresses a race condition where ManagedChannelOrphanWrapper could incorrectly log a "not shutdown properly" warning during garbage collection when using directExecutor().
Changes:
Reference Management: Moved phantom.clearSafely() to execute after the super.shutdown() calls to ensure the orphan tracker isn't detached prematurely.
Reachability Fence: Added a reachability fence in shutdown() and shutdownNow() to ensure the wrapper remains alive until the methods return, preventing the JIT from marking it for early collection.
Regression Test: Added a test case that simulates a reference being held on the stack to verify the fix and prevent future regressions.
Testing: Verified with ./gradlew :grpc-core:test --tests ManagedChannelOrphanWrapperTest -PskipAndroid=true.
Fixes grpc#12641
Co-authored-by: Kannan J kannanjgithub@google.com
kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request
super.shutdown() is never expected to throw, so some of the changes were not required. Also removing the redundant unit test.
Rework of PR grpc#12705.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})