2424import com .google .common .util .concurrent .UncheckedExecutionException ;
2525import edu .umd .cs .findbugs .annotations .SuppressFBWarnings ;
2626import java .io .IOException ;
27- import java .util .ArrayList ;
28- import java .util .Collections ;
2927import java .util .HashSet ;
30- import java .util .List ;
28+ import java .util .Map ;
3129import java .util .Set ;
3230import java .util .concurrent .CountDownLatch ;
3331import java .util .concurrent .ExecutionException ;
5149import org .apache .zookeeper .AsyncCallback .VoidCallback ;
5250import org .slf4j .Logger ;
5351import 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}
0 commit comments