Skip to content

Commit 37e70ed

Browse files
committed
Optimize ListActiveLedgersCommand
1 parent 22c45f9 commit 37e70ed

File tree

2 files changed

+16
-21
lines changed

2 files changed

+16
-21
lines changed

bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/ListActiveLedgersCommand.java

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@
2424
import com.google.common.util.concurrent.UncheckedExecutionException;
2525
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
2626
import java.io.IOException;
27-
import java.util.ArrayList;
28-
import java.util.Collections;
2927
import java.util.HashSet;
30-
import java.util.List;
28+
import java.util.Map;
3129
import java.util.Set;
3230
import java.util.concurrent.CountDownLatch;
3331
import java.util.concurrent.ExecutionException;
@@ -51,6 +49,7 @@
5149
import org.apache.zookeeper.AsyncCallback.VoidCallback;
5250
import org.slf4j.Logger;
5351
import org.slf4j.LoggerFactory;
52+
5453
/**
5554
* List active(exist in metadata storage) ledgers in a entry log file.
5655
*
@@ -135,17 +134,13 @@ public void handler(ServerConfiguration bkConf, ActiveLedgerFlags cmdFlags)
135134
if (resultCode.get() == BKException.Code.OK) {
136135
DefaultEntryLogger entryLogger = new ReadOnlyDefaultEntryLogger(bkConf);
137136
EntryLogMetadata entryLogMetadata = entryLogger.getEntryLogMetadata(cmdFlags.logId);
138-
List<Long> ledgersOnEntryLog = entryLogMetadata.getLedgersMap().keys();
139-
if (ledgersOnEntryLog.size() == 0) {
137+
Map<Long, Long> ledgersOnEntryLog = entryLogMetadata.getLedgersMap().asMap();
138+
if (ledgersOnEntryLog.isEmpty()) {
140139
LOG.info("Ledgers on log file {} is empty", cmdFlags.logId);
141140
}
142-
List<Long> activeLedgersOnEntryLog = new ArrayList<Long>(ledgersOnEntryLog.size());
143-
for (long ledger : ledgersOnEntryLog) {
144-
if (activeLedgersOnMetadata.contains(ledger)) {
145-
activeLedgersOnEntryLog.add(ledger);
146-
}
147-
}
148-
printActiveLedgerOnEntryLog(cmdFlags.logId, activeLedgersOnEntryLog);
141+
142+
entryLogMetadata.removeLedgerIf(ledgerId -> !activeLedgersOnMetadata.contains(ledgerId));
143+
printActiveLedgerOnEntryLog(cmdFlags.logId, entryLogMetadata);
149144
} else {
150145
LOG.info("Read active ledgers id from metadata store,fail code {}", resultCode.get());
151146
throw BKException.create(resultCode.get());
@@ -161,15 +156,16 @@ public void handler(ServerConfiguration bkConf, ActiveLedgerFlags cmdFlags)
161156
});
162157
}
163158

164-
public void printActiveLedgerOnEntryLog(long logId, List<Long> activeLedgers){
165-
if (activeLedgers.size() == 0){
159+
public void printActiveLedgerOnEntryLog(long logId, EntryLogMetadata entryLogMetadata) {
160+
LOG.info("Print active ledgers of entrylog {} ({}.log)", logId, Long.toHexString(logId));
161+
if (entryLogMetadata.getRemainingSize() == 0){
166162
LOG.info("No active ledgers on log file {}", logId);
167163
} else {
168-
LOG.info("Active ledgers on entry log {} as follow:", logId);
169-
}
170-
Collections.sort(activeLedgers);
171-
for (long a : activeLedgers){
172-
LOG.info("{} ", ledgerIdFormatter.formatLedgerId(a));
164+
LOG.info("entryLogId: {}, remaining size: {}, total size: {}, usage: {}",
165+
entryLogMetadata.getEntryLogId(), entryLogMetadata.getRemainingSize(), entryLogMetadata.getTotalSize(), entryLogMetadata.getUsage());
173166
}
167+
entryLogMetadata.getLedgersMap().forEach((ledgerId, size) -> {
168+
LOG.info("--------- Lid={}, TotalSizeOfEntriesOfLedger={} ---------", ledgerIdFormatter.formatLedgerId(ledgerId), size);
169+
});
174170
}
175171
}

bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/ReadLogMetadataCommand.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,7 @@ private void printEntryLogMetadata(ServerConfiguration conf, long logId) throws
131131
LOG.info("Print entryLogMetadata of entrylog {} ({}.log)", logId, Long.toHexString(logId));
132132
initEntryLogger(conf);
133133
EntryLogMetadata entryLogMetadata = entryLogger.getEntryLogMetadata(logId);
134-
LOG.info("entryLogId: {}, remaining size: {}, total size: {}, usage: {}", entryLogMetadata.getEntryLogId(),
135-
entryLogMetadata.getRemainingSize(), entryLogMetadata.getTotalSize(), entryLogMetadata.getUsage());
134+
LOG.info("entryLogId: {}, total size: {}", entryLogMetadata.getEntryLogId(), entryLogMetadata.getTotalSize());
136135

137136
entryLogMetadata.getLedgersMap().forEach((ledgerId, size) -> {
138137
LOG.info("--------- Lid={}, TotalSizeOfEntriesOfLedger={} ---------",

0 commit comments

Comments
 (0)