/* * (non-Javadoc) * * @see * org.apache.bookkeeper.client.AsyncCallback.CreateCallback#createComplete * (int, org.apache.bookkeeper.client.LedgerHandle, java.lang.Object) */ @Override public synchronized void createComplete(int rc, LedgerHandle lh, Object ctx) { log.debug("[{}] createComplete rc={} ledger={}", va(name, rc, lh != null ? lh.getId() : -1)); if (rc != BKException.Code.OK) { state = State.ClosedLedger; log.error("[{}] Error creating ledger rc={} {}", va(name, rc, BKException.getMessage(rc))); ManagedLedgerException status = new ManagedLedgerException(BKException.create(rc)); // Empty the list of pending requests and make all of them fail while (!pendingAddEntries.isEmpty()) { pendingAddEntries.poll().failed(status); } } else { log.debug("[{}] Successfully created new ledger {}", name, lh.getId()); ledgers.put(lh.getId(), new LedgerStat(lh.getId(), 0, 0)); currentLedger = lh; currentLedgerEntries = 0; currentLedgerSize = 0; MetaStoreCallback<Void> cb = new MetaStoreCallback<Void>() { public void operationComplete(Void v, Version version) { updateLedgersIdsComplete(version); } public void operationFailed(MetaStoreException e) { log.warn("Error updating meta data with the new list of ledgers"); while (!pendingAddEntries.isEmpty()) { pendingAddEntries.poll().failed(e); } } }; store.asyncUpdateLedgerIds(name, ledgers.values(), ledgersVersion, cb); } }