@Override public long size() { return lh.getLength(); } }
public long getLength(LedgerDescriptor ledgerDesc) throws BKException { RefCountedLedgerHandle refhandle = getLedgerHandle(ledgerDesc); if (null == refhandle) { LOG.error("Accessing ledger {} without opening.", ledgerDesc); throw BKException.create(BKException.Code.UnexpectedConditionException); } return refhandle.handle.getLength(); }
private long calculateStreamSpaceUsage(final com.twitter.distributedlog.DistributedLogManagerFactory factory, final String stream) throws IOException { DistributedLogManager dlm = factory.createDistributedLogManager(stream, com.twitter.distributedlog.DistributedLogManagerFactory.ClientSharingOption.SharedClients); long totalBytes = 0; try { List<LogSegmentMetadata> segments = dlm.getLogSegments(); for (LogSegmentMetadata segment : segments) { try { LedgerHandle lh = getBookKeeperClient(factory).get().openLedgerNoRecovery(segment.getLedgerId(), BookKeeper.DigestType.CRC32, conf.getBKDigestPW().getBytes(UTF_8)); totalBytes += lh.getLength(); lh.close(); } catch (BKException e) { logger.error("Failed to open ledger {} : ", segment.getLedgerId(), e); throw new IOException("Failed to open ledger " + segment.getLedgerId(), e); } catch (InterruptedException e) { logger.warn("Interrupted on opening ledger {} : ", segment.getLedgerId(), e); Thread.currentThread().interrupt(); throw new DLInterruptedException("Interrupted on opening ledger " + segment.getLedgerId(), e); } } } finally { dlm.close(); } return totalBytes; }
.setEntries(lh.getLastAddConfirmed() + 1).setSize(lh.getLength()) .setTimestamp(clock.millis()).build(); ledgers.put(id, info);
.setSize(lh.getLength()).setTimestamp(clock.millis()).build(); ledgers.put(lh.getId(), info); } else {
@Override public long size() { return lh.getLength(); } }
@Override public String toString() { return String.format("%s, Length = %d, Closed = %s", this.metadata, this.ledger.getLength(), this.ledger.isClosed()); } }
ledgerId, currentNonDurableLastAddConfirmed); lh.updateLastConfirmed(currentNonDurableLastAddConfirmed, lh.getLength()); FutureUtils.complete(cb, null);
private void listCandidates(List<Long> deletionCandidates, Context context) { for (long ledgerId : deletionCandidates) { try { val lh = context.bkAdmin.openLedgerNoRecovery(ledgerId); output("\tLedger %d: LAC=%d, Length=%d, Bookies=%d, Frags=%d.", ledgerId, lh.getLastAddConfirmed(), lh.getLength(), lh.getNumBookies(), lh.getNumFragments()); } catch (Exception ex) { output("Ledger %d: %s.", ledgerId, ex.getMessage()); } } }
@Override public void close() throws LogNotAvailableException { LedgerHandle _out = out; if (_out == null) { return; } try { LOGGER.log(Level.SEVERE, "Closing ledger " + _out.getId() + ", with LastAddConfirmed=" + _out.getLastAddConfirmed() + ", LastAddPushed=" + _out.getLastAddPushed() + " length=" + _out.getLength() + ", errorOccurred:" + errorOccurredDuringWrite); _out.close(); } catch (InterruptedException | BKException err) { throw new LogNotAvailableException(err); } finally { out = null; } }
/** * Collects an ordered list of Writes to execute to BookKeeper. * * @return The list of Writes to execute. */ private List<Write> getWritesToExecute() { // Calculate how much estimated space there is in the current ledger. final long maxTotalSize = this.config.getBkLedgerMaxSize() - getWriteLedger().ledger.getLength(); // Get the writes to execute from the queue. List<Write> toExecute = this.writes.getWritesToExecute(maxTotalSize); // Check to see if any writes executed on closed ledgers, in which case they either need to be failed (if deemed // appropriate, or retried). if (handleClosedLedgers(toExecute)) { // If any changes were made to the Writes in the list, re-do the search to get a more accurate list of Writes // to execute (since some may have changed Ledgers, more writes may not be eligible for execution). toExecute = this.writes.getWritesToExecute(maxTotalSize); } return toExecute; }
private long calculateStreamSpaceUsage(final Namespace namespace, final String stream) throws IOException { DistributedLogManager dlm = namespace.openLog(stream); long totalBytes = 0; try { List<LogSegmentMetadata> segments = dlm.getLogSegments(); for (LogSegmentMetadata segment : segments) { try { LedgerHandle lh = getBookKeeperClient(namespace).get().openLedgerNoRecovery(segment.getLogSegmentId(), BookKeeper.DigestType.CRC32, conf.getBKDigestPW().getBytes(UTF_8)); totalBytes += lh.getLength(); lh.close(); } catch (BKException e) { logger.error("Failed to open ledger {} : ", segment.getLogSegmentId(), e); throw new IOException("Failed to open ledger " + segment.getLogSegmentId(), e); } catch (InterruptedException e) { logger.warn("Interrupted on opening ledger {} : ", segment.getLogSegmentId(), e); Thread.currentThread().interrupt(); throw new DLInterruptedException("Interrupted on opening ledger " + segment.getLogSegmentId(), e); } } } finally { dlm.close(); } return totalBytes; }
.setEntries(lh.getLastAddConfirmed() + 1).setSize(lh.getLength()) .setTimestamp(System.currentTimeMillis()).build(); ledgers.put(id, info);
.setEntries(lh.getLastAddConfirmed() + 1).setSize(lh.getLength()) .setTimestamp(clock.millis()).build(); ledgers.put(id, info);
.setSize(lh.getLength()).setTimestamp(clock.millis()).build(); ledgers.put(lh.getId(), info); } else {
.setSize(lh.getLength()).setTimestamp(System.currentTimeMillis()).build(); ledgers.put(lh.getId(), info); } else {
if (!l.isClosed() && l.getLength() < this.config.getBkLedgerMaxSize()) {
output("\tLedger %d: Seq=%d, Status=%s, LAC=%d, Length=%d, Bookies=%d, Frags=%d, E/W/A=%d/%d/%d, Ensembles=%s.", lm.getLedgerId(), lm.getSequence(), lm.getStatus(), lh.getLastAddConfirmed(), lh.getLength(), lh.getNumBookies(), lh.getNumFragments(), bkLm.getEnsembleSize(), bkLm.getWriteQuorumSize(), bkLm.getAckQuorumSize(), getEnsembleDescription(bkLm)); } catch (Exception ex) {