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;