core: fix false-positive orphan warning in ManagedChannelOrphanWrapper by themechbro · Pull Request #12705 · grpc/grpc-java (original) (raw)

added 4 commits

March 18, 2026 22:51

@themechbro

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

@themechbro

@themechbro

@themechbro

kannanjgithub

@grpc-kokoro 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

Mar 23, 2026

@kannanjgithub

@grpc-kokoro 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

Mar 23, 2026

ejona86

kannanjgithub added a commit to kannanjgithub/grpc-java that referenced this pull request

Mar 25, 2026

@kannanjgithub

…, 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

Mar 26, 2026

@kannanjgithub

…, 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

Mar 26, 2026

@kannanjgithub

…, 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

Mar 26, 2026

@kannanjgithub

…, 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

Mar 26, 2026

@kannanjgithub

…, 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

Mar 26, 2026

@kannanjgithub

…#12731)

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

May 4, 2026

@themechbro @kannanjgithub

grpc#12705)

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

May 4, 2026

@kannanjgithub

…grpc#12731)

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 }})