Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 10, 2025

Description

Addresses feedback from #47211 where a static initialization block for CosmosNettyLeakDetectorFactory.ingestIntoNetty() was incorrectly placed within a nested class structure at the end of the file (lines 1487-1489).

Changes

  • Moved CosmosNettyLeakDetectorFactory.ingestIntoNetty() call to the existing class-level static block (line 173)
  • Removed misplaced static block from end of file
  • Aligns with pattern in sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/rx/TestSuiteBase.java

This ensures the Netty leak detector is initialized at class load time rather than in an invalid nested context.

All SDK Contribution checklist:

  • The pull request does not introduce [breaking changes]
  • CHANGELOG is updated for new features, bug fixes or other significant changes.
  • I have read the contribution guidelines.

General Guidelines and Best Practices

  • Title of the pull request is clear and informative.
  • There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

  • Pull request includes test coverage for the included changes.

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

…static block

Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix Netty Buffer and RxDocumentClientImpl leaks Move static block to class level in cosmos-encryption TestSuiteBase Nov 10, 2025
Copilot finished work on behalf of FabianMeiswinkel November 10, 2025 13:54
@FabianMeiswinkel FabianMeiswinkel marked this pull request as ready for review November 10, 2025 14:01
@FabianMeiswinkel FabianMeiswinkel merged commit 68bb25e into users/fabianm/NettyBufferLeakFixes Nov 10, 2025
7 checks passed
@FabianMeiswinkel FabianMeiswinkel deleted the copilot/sub-pr-47211-yet-again branch November 10, 2025 14:01
FabianMeiswinkel added a commit that referenced this pull request Nov 20, 2025
…ent instance detection during test execution (#47211)

* Test changes to add leak detection

* Update Configs.java

* Update CosmosNettyLeakDetectorFactory.java

* Update sdk/cosmos/azure-cosmos-encryption/src/test/java/com/azure/cosmos/encryption/CosmosNettyLeakDetectorFactory.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update CosmosNettyLeakDetectorFactory.java

* Fixes

* Fixes

* Update CosmosNettyLeakDetectorFactory.java

* Update RxDocumentClientImpl.java

* Fixes

* Update CosmosNettyLeakDetectorFactory.java

* Fixes

* Fixes

* Iterating on tests

* Fixing build warning

* Fixing memory leak

* Reverting production changes

* Iterating on test tools

* Cleaning-up dummy QueryFeedRangeState properly

* Update test-resources.json

* Update sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/CosmosDiagnosticsE2ETest.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* [WIP] Fix Netty buffer and RxDocumentClientImpl leaks (#47213)

* Initial plan

* Improve JavaDoc phrasing in RxDocumentClientImpl

Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>
Co-authored-by: Fabian Meiswinkel <fabianm@microsoft.com>

* NITs

* Move static block to class level in cosmos-encryption TestSuiteBase (#47216)

* Initial plan

* Move CosmosNettyLeakDetectorFactory.ingestIntoNetty() to class-level static block

Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

* Update SessionTest.java

* Update tests.yml

* Update CosmosNettyLeakDetectorFactory.java

* Test config

* Update CosmosNettyLeakDetectorFactory.java

* Updating TestNG

* Reverting TestNG to 7.9.0 (highest version still supporting Java8)

* Switching back to TestNG 7.5.1

* Enabling leak detection in unit tests

* Iterating on tests

* Update pom.xml

* Test changes (#47233)

* Update RntbdTransportClientTest.java

* Updating netty leak detection system properties

* Update CosmosNettyLeakDetectorFactory.java

* Test changes

* Prod memory leak fixes

* Test fixes

* Test fixes

* Users/fabianm/portfixes (#47252)

* Update WebExceptionRetryPolicy.java

* Update ThinClientStoreModel.java

* Test fixes

* Fix Netty ByteBuf leaks in StoreResponse and RetryContextOnDiagnosticTest (#47266)

* Initial plan

* Improve logging for ByteBufInputStream close failures

Change log level from debug to warn and catch Throwable instead of just IOException to make potential ByteBuf leak issues more visible.

Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

* Fix ByteBuf leak in RetryContextOnDiagnosticTest

Changed from Mono.just() to Mono.fromCallable() to defer StoreResponse creation, ensuring ByteBuf lifecycle is properly managed within each subscription rather than eagerly at mock setup time.

Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

* Update EncryptionAsyncApiCrudTest.java

* Fix ByteBuf memory leak in TcpServerMock request decoders (#47269)

* Initial plan

* Fix memory leak in ServerRntbdRequestDecoder and ServerRntbdContextRequestDecoder

When overriding channelRead() in ByteToMessageDecoder and bypassing the parent's
decode logic by calling context.fireChannelRead() directly, the ByteBuf reference
must be explicitly released to prevent memory leaks. Added ReferenceCountUtil.release()
in try-finally blocks to properly manage buffer lifecycle.

Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>

* Replace ReferenceCountUtil.release with safeRelease

* Replace ReferenceCountUtil.release with safeRelease

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>
Co-authored-by: Fabian Meiswinkel <fabianm@microsoft.com>

* Update ThinClientStoreModel.java

* Fixing test issues

* Disable netty leak detection in RetrycontextOnDiagnosticTest

* Test and diagnostics improvements

* Test fixes and more breadcrumbs

* Test fixes

* Test fixes

* Test fixes

* Update OrderbyDocumentQueryTest.java

* Test fixes

* Reverting too noisy logs

* Test fixes

* Fixing POMs

* React to code review feedback

* Update pom.xml

* Addresses code review feedback

* Update sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdRequestDecoder.java

Co-authored-by: Annie Liang <64233642+xinlian12@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FabianMeiswinkel <19165014+FabianMeiswinkel@users.noreply.github.com>
Co-authored-by: Annie Liang <64233642+xinlian12@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants