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

joscorbe pushed a commit to branch OAK-11835
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit a065edec6fa9a50138b5761ac645b3443132cac8
Author: Jose Cordero <corde...@adobe.com>
AuthorDate: Tue Aug 5 00:55:02 2025 +0200

    OAK-11835: Avoid "magic number" in Mongo lease timeout connections.
---
 .../document/mongo/MongoDocumentNodeStoreBuilderBase.java | 15 +++++++++++++--
 .../oak/plugins/document/mongo/MongoDocumentStore.java    |  2 +-
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java
 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java
index 67c578e913..0e6115b4a7 100644
--- 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java
+++ 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentNodeStoreBuilderBase.java
@@ -82,7 +82,7 @@ public abstract class MongoDocumentNodeStoreBuilderBase<T 
extends MongoDocumentN
                         int blobCacheSizeMB) {
         this.uri = uri;
         this.name = name;
-        setMongoDB(createMongoDBClient(0), blobCacheSizeMB);
+        setMongoDB(createMongoDBClient(false), blobCacheSizeMB);
         return thisBuilder();
     }
 
@@ -301,10 +301,21 @@ public abstract class MongoDocumentNodeStoreBuilderBase<T 
extends MongoDocumentN
         return mongoClock;
     }
 
-    MongoDBConnection createMongoDBClient(int socketTimeout) {
+    MongoDBConnection createMongoDBClient(boolean isLease) {
         if (uri == null || name == null) {
             throw new IllegalStateException("Cannot create MongoDB client 
without 'uri' or 'name'");
         }
+        
+        // Apply correct socket timeout based on connection type
+        int socketTimeout;
+        if (isLease) {
+            // Cluster nodes connection: always use lease socket timeout
+            socketTimeout = leaseSocketTimeout;
+        } else {
+            // Default connection: use OSGi read timeout if configured, 
otherwise 0
+            socketTimeout = readTimeoutMS != null && readTimeoutMS > 0 ? 
readTimeoutMS : 0;
+        }
+        
         return newMongoDBConnection(uri, name, mongoClock, socketTimeout);
     }
 
diff --git 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
index 960495c176..8e3cdbecf5 100644
--- 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
+++ 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
@@ -401,7 +401,7 @@ public class MongoDocumentStore implements DocumentStore {
         MongoDBConnection mc;
         int leaseSocketTimeout = builder.getLeaseSocketTimeout();
         if (leaseSocketTimeout > 0) {
-            mc = builder.createMongoDBClient(leaseSocketTimeout);
+            mc = builder.createMongoDBClient(true);
         } else {
             // use same connection
             mc = connection;

Reply via email to