Skip to content

Commit 9594642

Browse files
authored
perf(s3stream): compute compaction delay using min timestamp instead of sorting (#2984)
1 parent 6c752a1 commit 9594642

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

s3stream/src/main/java/com/automq/stream/s3/compact/CompactionManager.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import java.util.ArrayList;
5656
import java.util.Collection;
5757
import java.util.Collections;
58-
import java.util.Comparator;
5958
import java.util.HashMap;
6059
import java.util.HashSet;
6160
import java.util.List;
@@ -154,8 +153,18 @@ public void start() {
154153
this.compactionDelayTime = 0;
155154
return;
156155
}
157-
data.sort(Comparator.comparingLong(S3ObjectMetadata::committedTimestamp));
158-
this.compactionDelayTime = System.currentTimeMillis() - data.get(0).committedTimestamp();
156+
long minCommittedTimestamp = Long.MAX_VALUE;
157+
for (S3ObjectMetadata metadata : data) {
158+
long ts = metadata.committedTimestamp();
159+
if (ts < minCommittedTimestamp) {
160+
minCommittedTimestamp = ts;
161+
}
162+
}
163+
if (minCommittedTimestamp == Long.MAX_VALUE) {
164+
this.compactionDelayTime = 0;
165+
return;
166+
}
167+
this.compactionDelayTime = System.currentTimeMillis() - minCommittedTimestamp;
159168
}).join(), (long) this.compactionInterval * 2, 1, TimeUnit.MINUTES);
160169
}
161170

0 commit comments

Comments
 (0)