mirror of https://github.com/apache/kafka.git
MINOR: Remove unnecessary Optional from offsetsToSnapshot (#19613)
CI / build (push) Waiting to run
Details
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:
parent
e68781414e
commit
28ad4dd5c5
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue