You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2026/04/03 10:35:45 UTC

(lucene) branch branch_9_12 updated: Use DEFAULT_MAX_PERMITS constant in getSharedArenaMaxPermitsSysprop (#15908) (#15931)

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

uschindler pushed a commit to branch branch_9_12
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/branch_9_12 by this push:
     new 5690cced783 Use DEFAULT_MAX_PERMITS constant in getSharedArenaMaxPermitsSysprop (#15908) (#15931)
5690cced783 is described below

commit 5690cced783de40935ecd25f86a33b0866779b06
Author: Uwe Schindler <us...@apache.org>
AuthorDate: Fri Apr 3 12:35:39 2026 +0200

    Use DEFAULT_MAX_PERMITS constant in getSharedArenaMaxPermitsSysprop (#15908) (#15931)
    
    * adjust SharedArenaMaxPermits to RefCountedSharedArena.DEFAULT_MAX_PERMITS
    
    * add changes
    
    * adjust factory class to have access to default constant
    
    Co-authored-by: Huaixinww <14...@users.noreply.github.com>
---
 lucene/CHANGES.txt                                 |  4 +++-
 .../org/apache/lucene/store/MMapDirectory.java     | 23 ++--------------------
 .../store/MemorySegmentIndexInputProvider.java     |  2 +-
 .../store/MemorySegmentIndexInputProvider.java     |  2 +-
 .../store/MemorySegmentIndexInputProvider.java     | 21 ++++++++++++++++++--
 5 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 1640866e1c9..405f626bfd3 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -7,7 +7,9 @@ http://s.apache.org/luceneversions
 
 Bug Fixes
 ---------------------
-(No changes)
+* GITHUB#15908: Fix MMapDirectory.getSharedArenaMaxPermitsSysprop() to use
+  RefCountedSharedArena.DEFAULT_MAX_PERMITS instead of a hardcoded value, so that
+  the default change from GITHUB#15078 takes effect. (Huaixinww)
 
 ======================== Lucene 9.12.3 =======================
 
diff --git a/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java b/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java
index 6b9b452980d..932ea551ebe 100644
--- a/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java
+++ b/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java
@@ -501,29 +501,11 @@ public class MMapDirectory extends FSDirectory {
     }
   }
 
-  private static int getSharedArenaMaxPermitsSysprop() {
-    int ret = 1024; // default value
-    try {
-      String str = System.getProperty(SHARED_ARENA_MAX_PERMITS_SYSPROP);
-      if (str != null) {
-        ret = Integer.parseInt(str);
-      }
-    } catch (@SuppressWarnings("unused") NumberFormatException | SecurityException ignored) {
-      Logger.getLogger(MMapDirectory.class.getName())
-          .warning(
-              "Cannot read sysprop "
-                  + SHARED_ARENA_MAX_PERMITS_SYSPROP
-                  + ", so the default value will be used.");
-    }
-    return ret;
-  }
-
   @SuppressWarnings("unchecked")
   private static <A> MMapIndexInputProvider<A> lookupProvider() {
     if (checkMemorySegmentsSysprop() == false) {
       return (MMapIndexInputProvider<A>) new MappedByteBufferIndexInputProvider();
     }
-    final var maxPermits = getSharedArenaMaxPermitsSysprop();
     final var lookup = MethodHandles.lookup();
     final int runtimeVersion = Runtime.version().feature();
     if (runtimeVersion >= 19) {
@@ -531,10 +513,9 @@ public class MMapDirectory extends FSDirectory {
         final var cls = lookup.findClass("org.apache.lucene.store.MemorySegmentIndexInputProvider");
         // we use method handles, so we do not need to deal with setAccessible as we have private
         // access through the lookup:
-        final var constr =
-            lookup.findConstructor(cls, MethodType.methodType(void.class, int.class));
+        final var constr = lookup.findConstructor(cls, MethodType.methodType(void.class));
         try {
-          return (MMapIndexInputProvider<A>) constr.invoke(maxPermits);
+          return (MMapIndexInputProvider<A>) constr.invoke();
         } catch (RuntimeException | Error e) {
           throw e;
         } catch (Throwable th) {
diff --git a/lucene/core/src/java19/org/apache/lucene/store/MemorySegmentIndexInputProvider.java b/lucene/core/src/java19/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
index 085242372fc..329f276670f 100644
--- a/lucene/core/src/java19/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
+++ b/lucene/core/src/java19/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
@@ -32,7 +32,7 @@ import org.apache.lucene.util.Unwrappable;
 final class MemorySegmentIndexInputProvider
     implements MMapDirectory.MMapIndexInputProvider<Object> {
 
-  public MemorySegmentIndexInputProvider(int unusedMaxPermits) {
+  public MemorySegmentIndexInputProvider() {
     var log = Logger.getLogger(getClass().getName());
     log.info(
         "Using MemorySegmentIndexInput with Java 19; to disable start with -D"
diff --git a/lucene/core/src/java20/org/apache/lucene/store/MemorySegmentIndexInputProvider.java b/lucene/core/src/java20/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
index 5c04b2d7218..01b8a0b8ab5 100644
--- a/lucene/core/src/java20/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
+++ b/lucene/core/src/java20/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
@@ -32,7 +32,7 @@ import org.apache.lucene.util.Unwrappable;
 final class MemorySegmentIndexInputProvider
     implements MMapDirectory.MMapIndexInputProvider<Object> {
 
-  public MemorySegmentIndexInputProvider(int unusedMaxPermits) {
+  public MemorySegmentIndexInputProvider() {
     var log = Logger.getLogger(getClass().getName());
     log.info(
         "Using MemorySegmentIndexInput with Java 20; to disable start with -D"
diff --git a/lucene/core/src/java21/org/apache/lucene/store/MemorySegmentIndexInputProvider.java b/lucene/core/src/java21/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
index 1e32f574aa8..39d570add5b 100644
--- a/lucene/core/src/java21/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
+++ b/lucene/core/src/java21/org/apache/lucene/store/MemorySegmentIndexInputProvider.java
@@ -38,9 +38,9 @@ final class MemorySegmentIndexInputProvider
   private final Optional<NativeAccess> nativeAccess;
   private final int sharedArenaMaxPermits;
 
-  public MemorySegmentIndexInputProvider(int maxPermits) {
+  public MemorySegmentIndexInputProvider() {
     this.nativeAccess = NativeAccess.getImplementation();
-    this.sharedArenaMaxPermits = checkMaxPermits(maxPermits);
+    this.sharedArenaMaxPermits = checkMaxPermits(getSharedArenaMaxPermitsSysprop());
     var log = Logger.getLogger(getClass().getName());
     log.info(
         String.format(
@@ -153,6 +153,23 @@ final class MemorySegmentIndexInputProvider
     return new ConcurrentHashMap<>();
   }
 
+  private static int getSharedArenaMaxPermitsSysprop() {
+    int ret = RefCountedSharedArena.DEFAULT_MAX_PERMITS;
+    try {
+      String str = System.getProperty(MMapDirectory.SHARED_ARENA_MAX_PERMITS_SYSPROP);
+      if (str != null) {
+        ret = Integer.parseInt(str);
+      }
+    } catch (@SuppressWarnings("unused") NumberFormatException | SecurityException ignored) {
+      Logger.getLogger(MemorySegmentIndexInputProvider.class.getName())
+          .warning(
+              "Cannot read sysprop "
+                  + MMapDirectory.SHARED_ARENA_MAX_PERMITS_SYSPROP
+                  + ", so the default value will be used.");
+    }
+    return ret;
+  }
+
   private static int checkMaxPermits(int maxPermits) {
     if (RefCountedSharedArena.validMaxPermits(maxPermits)) {
       return maxPermits;