From bb968891e9f6feaa8cd17d60f247a19d13e5727a Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Tue, 17 Feb 2026 23:30:12 -0800 Subject: [PATCH 1/5] Make NettyByteBuf share parent reference count. --- .../com/mongodb/internal/connection/netty/NettyByteBuf.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/driver-core/src/main/com/mongodb/internal/connection/netty/NettyByteBuf.java b/driver-core/src/main/com/mongodb/internal/connection/netty/NettyByteBuf.java index 48bd0eb77d..99233dcc77 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/netty/NettyByteBuf.java +++ b/driver-core/src/main/com/mongodb/internal/connection/netty/NettyByteBuf.java @@ -256,7 +256,7 @@ public ByteBuf asReadOnly() { @Override public ByteBuf duplicate() { - return new NettyByteBuf(proxied.retainedDuplicate(), isWriting); + return new NettyByteBuf(proxied.duplicate().retain(), isWriting); } @Override From eb839145fd5a143767855dfed9941bb9890ec0cf Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Wed, 18 Feb 2026 20:57:55 -0800 Subject: [PATCH 2/5] Use readSlice().retain(). --- .../com/mongodb/internal/connection/netty/NettyStream.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java b/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java index 76e1065345..e1866f608f 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java +++ b/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java @@ -307,7 +307,9 @@ private void readAsync(final int numBytes, final AsyncCompletionHandler composite.addComponent(next); iter.remove(); } else { - composite.addComponent(next.readRetainedSlice(bytesNeededFromCurrentBuffer)); + io.netty.buffer.ByteBuf readSlice = next.readSlice(bytesNeededFromCurrentBuffer); + readSlice.retain(); + composite.addComponent(readSlice); } composite.writerIndex(composite.writerIndex() + bytesNeededFromCurrentBuffer); bytesNeeded -= bytesNeededFromCurrentBuffer; From 4e8b5f9dfa3048671cde191369d7cb081ae88f39 Mon Sep 17 00:00:00 2001 From: Viacheslav Babanin Date: Thu, 19 Feb 2026 13:05:14 -0800 Subject: [PATCH 3/5] Update driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java Co-authored-by: Ross Lawley --- .../com/mongodb/internal/connection/netty/NettyStream.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java b/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java index e1866f608f..e480363fc8 100644 --- a/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java +++ b/driver-core/src/main/com/mongodb/internal/connection/netty/NettyStream.java @@ -307,9 +307,8 @@ private void readAsync(final int numBytes, final AsyncCompletionHandler composite.addComponent(next); iter.remove(); } else { - io.netty.buffer.ByteBuf readSlice = next.readSlice(bytesNeededFromCurrentBuffer); - readSlice.retain(); - composite.addComponent(readSlice); + next.retain(); + composite.addComponent(next.readSlice(bytesNeededFromCurrentBuffer)); } composite.writerIndex(composite.writerIndex() + bytesNeededFromCurrentBuffer); bytesNeeded -= bytesNeededFromCurrentBuffer; From 500b463669e4162a375449d98c3e7bbd037fc88d Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Thu, 19 Feb 2026 13:07:04 -0800 Subject: [PATCH 4/5] Enable tests. --- .../internal/connection/CommandHelperSpecification.groovy | 2 -- 1 file changed, 2 deletions(-) diff --git a/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy b/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy index d1b4a15cdb..3120213924 100644 --- a/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy +++ b/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy @@ -57,7 +57,6 @@ class CommandHelperSpecification extends Specification { connection?.close() } - @Ignore("JAVA-5982") def 'should execute command asynchronously'() { when: BsonDocument receivedDocument = null @@ -84,5 +83,4 @@ class CommandHelperSpecification extends Specification { !receivedDocument receivedException instanceof MongoCommandException } - } From 6f00611de6ae9ebe8e447bdc81ea1d0e24887513 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Mon, 16 Feb 2026 14:18:28 -0800 Subject: [PATCH 5/5] Fix static checks. --- .../internal/connection/CommandHelperSpecification.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy b/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy index 3120213924..f1585f8259 100644 --- a/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy +++ b/driver-core/src/test/functional/com/mongodb/internal/connection/CommandHelperSpecification.groovy @@ -25,7 +25,6 @@ import com.mongodb.connection.SocketSettings import com.mongodb.internal.connection.netty.NettyStreamFactory import org.bson.BsonDocument import org.bson.BsonInt32 -import spock.lang.Ignore import spock.lang.Specification import java.util.concurrent.CountDownLatch