You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2018/11/07 09:15:42 UTC
svn commit: r1845994 -
/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
Author: mduerig
Date: Wed Nov 7 09:15:42 2018
New Revision: 1845994
URL: http://svn.apache.org/viewvc?rev=1845994&view=rev
Log:
OAK-7885: Performance regression in FlatTreeUpdateTest
Break out early when purging the tracked commits.
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java?rev=1845994&r1=1845993&r2=1845994&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java Wed Nov 7 09:15:42 2018
@@ -23,6 +23,7 @@ import static com.google.common.collect.
import static com.google.common.collect.Queues.newConcurrentLinkedQueue;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
@@ -83,7 +84,17 @@ class CommitsTracker {
public void trackExecutedCommitOf(Thread thread) {
long t = System.currentTimeMillis();
- commits.removeIf(c -> c.timeStamp < t - 60000);
+ final Iterator<Commit> it = commits.iterator();
+
+ // Purge the queue
+ // Avoiding removeIf allows us to bail out early. See OAK-7885
+ while (it.hasNext()) {
+ if (it.next().timeStamp < t - 60000) {
+ it.remove();
+ } else {
+ break;
+ }
+ }
commits.offer(new Commit(t, thread.getName()));
}