This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push:
new f5e8f8b8b7 OAK-11642: oak-segment-tar uses unmaintained
concurrentlinkedhashmap-lru (#2211)
f5e8f8b8b7 is described below
commit f5e8f8b8b72142ce30bae8b3622094d2a7e4c117
Author: Julian Reschke <[email protected]>
AuthorDate: Tue Apr 8 15:03:01 2025 +0200
OAK-11642: oak-segment-tar uses unmaintained concurrentlinkedhashmap-lru
(#2211)
---
oak-segment-tar/pom.xml | 13 -------------
.../org/apache/jackrabbit/oak/segment/CommitsTracker.java | 12 ++++++------
.../jackrabbit/oak/segment/SegmentNodeStoreStats.java | 8 +++-----
.../apache/jackrabbit/oak/segment/CommitsTrackerTest.java | 6 +++---
4 files changed, 12 insertions(+), 27 deletions(-)
diff --git a/oak-segment-tar/pom.xml b/oak-segment-tar/pom.xml
index 6361823553..5c1649c90b 100644
--- a/oak-segment-tar/pom.xml
+++ b/oak-segment-tar/pom.xml
@@ -32,10 +32,6 @@
<name>Oak Segment Tar</name>
- <properties>
-
<concurrentlinkedhashmap.version>1.4.2</concurrentlinkedhashmap.version>
- </properties>
-
<build>
<plugins>
<plugin>
@@ -332,15 +328,6 @@
<scope>provided</scope>
</dependency>
- <!-- ConcurrentLinkedHashMap -->
-
- <dependency>
- <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
- <artifactId>concurrentlinkedhashmap-lru</artifactId>
- <version>${concurrentlinkedhashmap.version}</version>
- <scope>provided</scope>
- </dependency>
-
<!-- Dependencies on Oak testing modules -->
<dependency>
diff --git
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
index 4116468ee4..91dffe7cbc 100644
---
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
+++
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
@@ -19,6 +19,7 @@
package org.apache.jackrabbit.oak.segment;
import java.lang.ref.WeakReference;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -28,7 +29,7 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Supplier;
-import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
+import org.apache.commons.collections4.map.LRUMap;
import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -195,12 +196,11 @@ class CommitsTracker {
}
}
}
- return commitsPerGroup;
+ return Collections.unmodifiableMap(commitsPerGroup);
}
- public Map<String, Long> getCommitsCountOthers() {
- Map<String, Long> commitsOther = new
ConcurrentLinkedHashMap.Builder<String, Long>()
- .maximumWeightedCapacity(otherWritersLimit).build();
+ public Map<String, Long> getCommitsCountOthersLastMinute() {
+ Map<String, Long> commitsOther = new LRUMap<>(otherWritersLimit);
long t = System.currentTimeMillis() - 60000;
for (Commit commit : commits) {
if (commit.getQueued() > t) {
@@ -210,6 +210,6 @@ class CommitsTracker {
}
}
}
- return commitsOther;
+ return Collections.unmodifiableMap(commitsOther);
}
}
diff --git
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java
index 7e98e0c4c1..2ca9d13c28 100644
---
a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java
+++
b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java
@@ -132,7 +132,7 @@ public class SegmentNodeStoreStats implements
SegmentNodeStoreStatsMBean, Segmen
@Override
public TabularData getCommitsCountForOtherWriters() throws
OpenDataException {
- return
createTabularDataFromCountMap(commitsTracker.getCommitsCountOthers(),
"commitsPerWriter",
+ return
createTabularDataFromCountMap(commitsTracker.getCommitsCountOthersLastMinute(),
"commitsPerWriter",
"writerName");
}
@@ -145,11 +145,9 @@ public class SegmentNodeStoreStats implements
SegmentNodeStoreStatsMBean, Segmen
TabularDataSupport tabularData = new TabularDataSupport(new
TabularType(typeName, "Most active writers",
commitsPerWriterRowType, new String[] { writerDescription }));
- if (commitsCountMap.isEmpty()) {
- commitsCountMap.put("N/A", 0L);
- }
+ Map<String, Long> map = commitsCountMap.isEmpty() ? Map.of("N/A", 0L)
: commitsCountMap;
- commitsCountMap.entrySet().stream()
+ map.entrySet().stream()
.sorted(Comparator.<Entry<String, Long>>
comparingLong(Entry::getValue).reversed()).map(e -> {
Map<String, Object> m = new HashMap<>();
m.put("count", e.getValue());
diff --git
a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CommitsTrackerTest.java
b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CommitsTrackerTest.java
index 097ebfaf76..6401272e3a 100644
---
a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CommitsTrackerTest.java
+++
b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CommitsTrackerTest.java
@@ -85,7 +85,7 @@ public class CommitsTrackerTest {
commitTask.queued();
assertNull(commitsTracker.getCurrentWriter());
assertEquals(queued.size(),
commitsTracker.getQueuedWritersMap().size());
- assertEquals(0, commitsTracker.getCommitsCountOthers().size());
+ assertEquals(0,
commitsTracker.getCommitsCountOthersLastMinute().size());
assertTrue(commitsTracker.getCommitsCountPerGroupLastMinute().isEmpty());
}
@@ -102,7 +102,7 @@ public class CommitsTrackerTest {
commitTask.executed();
assertNull(commitsTracker.getCurrentWriter());
assertEquals(queued.size(),
commitsTracker.getQueuedWritersMap().size());
- assertEquals(min(OTHER_WRITERS_LIMIT, executed.size()),
commitsTracker.getCommitsCountOthers().size());
+ assertEquals(min(OTHER_WRITERS_LIMIT, executed.size()),
commitsTracker.getCommitsCountOthersLastMinute().size());
assertTrue(commitsTracker.getCommitsCountPerGroupLastMinute().isEmpty());
}
}
@@ -131,6 +131,6 @@ public class CommitsTrackerTest {
assertEquals(10, (long) groupCount);
}
- assertEquals(10, commitsTracker.getCommitsCountOthers().size());
+ assertEquals(10,
commitsTracker.getCommitsCountOthersLastMinute().size());
}
}