MINOR: Remove unnecessary Optional from offsetsToSnapshot (#19613)
CI / build (push) Waiting to run Details

Reviewers: PoAn Yang <payang@apache.org>, Ken Huang
 <s7133700@gmail.com>, TengYao Chi <kitingiao@gmail.com>, Chia-Ping Tsai
 <chia7712@gmail.com>
This commit is contained in:
Jhen-Yung Hsu 2025-05-03 12:58:08 +08:00 committed by GitHub
parent e68781414e
commit 28ad4dd5c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 15 deletions

View File

@ -2416,15 +2416,13 @@ public class UnifiedLog implements AutoCloseable {
Time time, Time time,
boolean reloadFromCleanShutdown, boolean reloadFromCleanShutdown,
String logPrefix) throws IOException { String logPrefix) throws IOException {
List<Optional<Long>> offsetsToSnapshot = new ArrayList<>(); List<Long> offsetsToSnapshot = new ArrayList<>();
if (segments.nonEmpty()) { segments.lastSegment().ifPresent(lastSegment -> {
long lastSegmentBaseOffset = segments.lastSegment().get().baseOffset(); long lastSegmentBaseOffset = lastSegment.baseOffset();
Optional<LogSegment> lowerSegment = segments.lowerSegment(lastSegmentBaseOffset); segments.lowerSegment(lastSegmentBaseOffset).ifPresent(s -> offsetsToSnapshot.add(s.baseOffset()));
Optional<Long> nextLatestSegmentBaseOffset = lowerSegment.map(LogSegment::baseOffset); offsetsToSnapshot.add(lastSegmentBaseOffset);
offsetsToSnapshot.add(nextLatestSegmentBaseOffset); });
offsetsToSnapshot.add(Optional.of(lastSegmentBaseOffset)); offsetsToSnapshot.add(lastOffset);
}
offsetsToSnapshot.add(Optional.of(lastOffset));
LOG.info("{}Loading producer state till offset {}", logPrefix, lastOffset); LOG.info("{}Loading producer state till offset {}", logPrefix, lastOffset);
@ -2443,12 +2441,10 @@ public class UnifiedLog implements AutoCloseable {
// To avoid an expensive scan through all the segments, we take empty snapshots from the start of the // To avoid an expensive scan through all the segments, we take empty snapshots from the start of the
// last two segments and the last offset. This should avoid the full scan in the case that the log needs // last two segments and the last offset. This should avoid the full scan in the case that the log needs
// truncation. // truncation.
for (Optional<Long> offset : offsetsToSnapshot) { for (long offset : offsetsToSnapshot) {
if (offset.isPresent()) { producerStateManager.updateMapEndOffset(offset);
producerStateManager.updateMapEndOffset(offset.get());
producerStateManager.takeSnapshot(); producerStateManager.takeSnapshot();
} }
}
} else { } else {
LOG.info("{}Reloading from producer snapshot and rebuilding producer state from offset {}", logPrefix, lastOffset); LOG.info("{}Reloading from producer snapshot and rebuilding producer state from offset {}", logPrefix, lastOffset);
boolean isEmptyBeforeTruncation = producerStateManager.isEmpty() && producerStateManager.mapEndOffset() >= lastOffset; boolean isEmptyBeforeTruncation = producerStateManager.isEmpty() && producerStateManager.mapEndOffset() >= lastOffset;
@ -2469,7 +2465,7 @@ public class UnifiedLog implements AutoCloseable {
long startOffset = Utils.max(segment.baseOffset(), producerStateManager.mapEndOffset(), logStartOffset); long startOffset = Utils.max(segment.baseOffset(), producerStateManager.mapEndOffset(), logStartOffset);
producerStateManager.updateMapEndOffset(startOffset); producerStateManager.updateMapEndOffset(startOffset);
if (offsetsToSnapshot.contains(Optional.of(segment.baseOffset()))) { if (offsetsToSnapshot.contains(segment.baseOffset())) {
producerStateManager.takeSnapshot(); producerStateManager.takeSnapshot();
} }
int maxPosition = segment.size(); int maxPosition = segment.size();