Skip to content

Commit ee31e10

Browse files
perf(s3stream): compute compaction delay using min timestamp instead of sorting (#2984) (#2989)
Co-authored-by: JasirVoriya <jasirvoriya@gmail.com>
1 parent 33aa6e5 commit ee31e10

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;
@@ -156,8 +155,18 @@ public void start() {
156155
this.compactionDelayTime = 0;
157156
return;
158157
}
159-
data.sort(Comparator.comparingLong(S3ObjectMetadata::committedTimestamp));
160-
this.compactionDelayTime = System.currentTimeMillis() - data.get(0).committedTimestamp();
158+
long minCommittedTimestamp = Long.MAX_VALUE;
159+
for (S3ObjectMetadata metadata : data) {
160+
long ts = metadata.committedTimestamp();
161+
if (ts < minCommittedTimestamp) {
162+
minCommittedTimestamp = ts;
163+
}
164+
}
165+
if (minCommittedTimestamp == Long.MAX_VALUE) {
166+
this.compactionDelayTime = 0;
167+
return;
168+
}
169+
this.compactionDelayTime = System.currentTimeMillis() - minCommittedTimestamp;
161170
}).join(), (long) this.compactionInterval * 2, 1, TimeUnit.MINUTES);
162171
}
163172

0 commit comments

Comments
 (0)