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;