From 54f3f5add09f919fce0fc96d4c6e0e4054811c9c Mon Sep 17 00:00:00 2001 From: Valentin Kovalenko Date: Fri, 3 Jul 2026 10:29:54 -0600 Subject: [PATCH 1/2] Fix reactive streams `MongoClient.getTimeout` always returning `null` JAVA-6246 --- .../reactivestreams/client/internal/MongoClientImpl.java | 3 ++- .../reactivestreams/client/internal/MongoClusterImpl.java | 3 ++- .../src/main/com/mongodb/client/internal/MongoClientImpl.java | 1 + .../src/main/com/mongodb/client/internal/MongoClusterImpl.java | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClientImpl.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClientImpl.java index 8fda2e9294d..3796e8f3a44 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClientImpl.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClientImpl.java @@ -291,8 +291,9 @@ public ReadConcern getReadConcern() { } @Override + @Nullable public Long getTimeout(final TimeUnit timeUnit) { - return null; + return delegate.getTimeout(timeUnit); } @Override diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java index 04028ecc684..be905f661c0 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java @@ -91,9 +91,10 @@ public ReadConcern getReadConcern() { } @Override + @Nullable public Long getTimeout(final TimeUnit timeUnit) { Long timeoutMS = mongoOperationPublisher.getTimeoutMS(); - return timeoutMS != null ? MILLISECONDS.convert(timeoutMS, timeUnit) : null; + return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); } @Override diff --git a/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java b/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java index bbeb7419bc7..cefee9af461 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java +++ b/driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java @@ -167,6 +167,7 @@ public ReadConcern getReadConcern() { } @Override + @Nullable public Long getTimeout(final TimeUnit timeUnit) { return delegate.getTimeout(timeUnit); } diff --git a/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java b/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java index 8cd885f646b..5ba058069f3 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java +++ b/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java @@ -78,6 +78,7 @@ import static com.mongodb.assertions.Assertions.isTrueArgument; import static com.mongodb.assertions.Assertions.notNull; import static com.mongodb.internal.TimeoutContext.createTimeoutContext; +import static java.util.concurrent.TimeUnit.MILLISECONDS; final class MongoClusterImpl implements MongoCluster { @Nullable @@ -164,7 +165,7 @@ public ReadConcern getReadConcern() { @Nullable public Long getTimeout(final TimeUnit timeUnit) { Long timeoutMS = timeoutSettings.getTimeoutMS(); - return timeoutMS == null ? null : timeUnit.convert(timeoutMS, TimeUnit.MILLISECONDS); + return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); } @Override From 0acc7ec08c2bd085f98c6c99f257968c88179916 Mon Sep 17 00:00:00 2001 From: Valentin Kovalenko Date: Mon, 6 Jul 2026 08:16:37 -0600 Subject: [PATCH 2/2] Add `notNull` checks JAVA-6246 --- .../reactivestreams/client/internal/MongoClusterImpl.java | 1 + .../src/main/com/mongodb/client/internal/MongoClusterImpl.java | 1 + 2 files changed, 2 insertions(+) diff --git a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java index be905f661c0..3fdc128e5cd 100644 --- a/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java +++ b/driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClusterImpl.java @@ -93,6 +93,7 @@ public ReadConcern getReadConcern() { @Override @Nullable public Long getTimeout(final TimeUnit timeUnit) { + notNull("timeUnit", timeUnit); Long timeoutMS = mongoOperationPublisher.getTimeoutMS(); return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); } diff --git a/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java b/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java index 5ba058069f3..f11c776754b 100644 --- a/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java +++ b/driver-sync/src/main/com/mongodb/client/internal/MongoClusterImpl.java @@ -164,6 +164,7 @@ public ReadConcern getReadConcern() { @Override @Nullable public Long getTimeout(final TimeUnit timeUnit) { + notNull("timeUnit", timeUnit); Long timeoutMS = timeoutSettings.getTimeoutMS(); return timeoutMS == null ? null : timeUnit.convert(timeoutMS, MILLISECONDS); }