This is an automated email from the ASF dual-hosted git repository.

maciej pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git


The following commit(s) were added to refs/heads/master by this push:
     new 9ff670b5f ci(java): detect Netty ByteBuf memory leaks in CI tests 
(#2755)
9ff670b5f is described below

commit 9ff670b5fbcbc31bda84dfc9185c83a95118377a
Author: Maciej Modzelewski <[email protected]>
AuthorDate: Tue Feb 17 12:11:40 2026 +0100

    ci(java): detect Netty ByteBuf memory leaks in CI tests (#2755)
    
    The Java SDK uses Netty ByteBuf for network I/O, but
    leaks were not being caught during testing. Leaked
    buffers can cause OOM failures in long-running
    processes.
    
    Enable Netty's PARANOID leak detector in integration
    tests and add a CI step that scans test output for
    LEAK markers, failing the build if any are found.
---
 .github/actions/java-gradle/pre-merge/action.yml               | 10 ++++++++++
 .../test/java/org/apache/iggy/client/BaseIntegrationTest.java  |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/.github/actions/java-gradle/pre-merge/action.yml 
b/.github/actions/java-gradle/pre-merge/action.yml
index 7c76044f4..55f0bcf59 100644
--- a/.github/actions/java-gradle/pre-merge/action.yml
+++ b/.github/actions/java-gradle/pre-merge/action.yml
@@ -93,6 +93,16 @@ runs:
         USE_EXTERNAL_SERVER: true
       run: ./gradlew test
 
+    - name: Check for ByteBuf leaks
+      if: ${{ !cancelled() && inputs.task == 'test' }}
+      shell: bash
+      run: |
+        if grep -r "LEAK:" foreign/java/java-sdk/build/test-results/ 
2>/dev/null; then
+          echo "::error::Netty ByteBuf memory leaks detected in test output!"
+          exit 1
+        fi
+        echo "No ByteBuf leaks detected"
+
     - name: Generate coverage report
       if: inputs.task == 'test'
       shell: bash
diff --git 
a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/BaseIntegrationTest.java
 
b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/BaseIntegrationTest.java
index bc8d6d8c0..ad1d3f164 100644
--- 
a/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/BaseIntegrationTest.java
+++ 
b/foreign/java/java-sdk/src/test/java/org/apache/iggy/client/BaseIntegrationTest.java
@@ -21,6 +21,7 @@ package org.apache.iggy.client;
 
 import com.github.dockerjava.api.model.Capability;
 import com.github.dockerjava.api.model.Ulimit;
+import io.netty.util.ResourceLeakDetector;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.slf4j.Logger;
@@ -55,6 +56,7 @@ public abstract class BaseIntegrationTest {
 
     @BeforeAll
     static void setupContainer() {
+        ResourceLeakDetector.setLevel(ResourceLeakDetector.Level.PARANOID);
         if (!USE_EXTERNAL_SERVER) {
             log.info("Starting Iggy Server Container...");
             iggyServer = new 
GenericContainer<>(DockerImageName.parse("apache/iggy:edge"))

Reply via email to