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());
     }
 }

Reply via email to