public void forceClose() { try { handle.close(); } catch (BKException.BKLedgerClosedException exc) { // Ignore } catch (Exception exc) { LOG.warn("Exception while closing ledger {}", handle, exc); } }
@Override public void close() throws IOException { try { lh.close(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new IOException(e); } catch (BKException e) { throw new IOException(e); } } }
try { LedgerHandle lh = bkc.get().openLedger(lid, BookKeeper.DigestType.CRC32, passwd); lh.close(); System.out.println("Fenced ledger " + lid + ", " + numPendings.decrementAndGet() + " left."); latch.countDown();
@Override protected int runCmd() throws Exception { LedgerHandle lh = getBookKeeperClient().get().openLedgerNoRecovery( getLedgerID(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes(UTF_8)); try { long lac = lh.readLastConfirmed(); System.out.println("LastAddConfirmed: " + lac); } finally { lh.close(); } return 0; }
@Override protected int runCmd() throws Exception { LedgerHandle lh = getBookKeeperClient().get().openLedgerNoRecovery( getLedgerID(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes(UTF_8)); final CountDownLatch doneLatch = new CountDownLatch(1); final AtomicInteger resultHolder = new AtomicInteger(-1234); BookkeeperInternalCallbacks.GenericCallback<Void> recoverCb = new BookkeeperInternalCallbacks.GenericCallback<Void>() { @Override public void operationComplete(int rc, Void result) { resultHolder.set(rc); doneLatch.countDown(); } }; try { BookKeeperAccessor.forceRecoverLedger(lh, recoverCb); doneLatch.await(); if (BKException.Code.OK != resultHolder.get()) { throw BKException.create(resultHolder.get()); } } finally { lh.close(); } return 0; }
@Test public void simpleTest() throws Exception { LedgerHandle ledger = bkc.createLedger(DigestType.MAC, SECRET.getBytes()); long ledgerId = ledger.getId(); log.info("Writing to ledger: {}", ledgerId); for (int i = 0; i < 10; i++) { String content = "entry-" + i; ledger.addEntry(content.getBytes(Encoding)); } ledger.close(); ledger = bkc.openLedger(ledgerId, DigestType.MAC, SECRET.getBytes()); Enumeration<LedgerEntry> entries = ledger.readEntries(0, 9); while (entries.hasMoreElements()) { LedgerEntry entry = entries.nextElement(); String content = new String(entry.getEntry(), Encoding); log.info("Entry {} lenght={} content='{}'", entry.getEntryId(), entry.getLength(), content); } ledger.close(); }
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; }
public static void fenceStream(DistributedLogConfiguration conf, URI uri, String name) throws Exception { BKDistributedLogManager dlm = (BKDistributedLogManager) createNewDLM(name, conf, uri); try { BKLogReadHandler readHandler = dlm.createReadHandler(); List<LogSegmentMetadata> ledgerList = readHandler.getFullLedgerList(true, true); LogSegmentMetadata lastSegment = ledgerList.get(ledgerList.size() - 1); BookKeeperClient bkc = dlm.getWriterBKC(); LedgerHandle lh = bkc.get().openLedger(lastSegment.getLedgerId(), BookKeeper.DigestType.CRC32, conf.getBKDigestPW().getBytes(UTF_8)); lh.close(); } finally { dlm.close(); } }
@Override public void run() { try { for (int i = 0; i < numLedgers; i++) { pool.allocate(); ZKTransaction txn = newTxn(); LedgerHandle lh = FutureUtils.result(pool.tryObtain(txn, NULL_LISTENER)); FutureUtils.result(txn.execute()); lh.close(); allocatedLedgers.putIfAbsent(lh.getId(), lh); logger.info("[thread {}] allocate {}th ledger {}", new Object[] { tid, i, lh.getId() }); } } catch (Exception ioe) { numFailures.incrementAndGet(); } } };
@Override protected int runCmd() throws Exception { LedgerHandle lh = getBookKeeperClient().get().openLedgerNoRecovery(getLedgerID(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes(UTF_8)); try { if (null == fromEntryId) { fromEntryId = 0L; } if (null == untilEntryId) { untilEntryId = lh.readLastConfirmed(); } if (untilEntryId >= fromEntryId) { if (readAllBookies) { LedgerReader lr = new LedgerReader(getBookKeeperClient().get()); if (readLac) { readLacsFromAllBookies(lr, lh, fromEntryId, untilEntryId); } else { readEntriesFromAllBookies(lr, lh, fromEntryId, untilEntryId); } } else { simpleReadEntries(lh, fromEntryId, untilEntryId); } } else { System.out.println("No entries."); } } finally { lh.close(); } return 0; }
lh1.close(); fail("LedgerHandle allocated by allocator1 should be deleted."); } catch (BKException bke) { lh2.close(); LedgerHandle readLh = bkc.get().openLedger(lh2.getId(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes()); Enumeration<LedgerEntry> entries = readLh.readEntries(eid, eid);
lh.close(); LedgerHandle readLh = bkc.get().openLedger(lh.getId(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes()); Enumeration<LedgerEntry> entries = readLh.readEntries(eid, eid);
LedgerMetadata metadata = BookKeeperAccessor.getLedgerMetadata(lh); assertEquals(DistributedLogConfiguration.BKDL_BOOKKEEPER_ENSEMBLE_SIZE_DEFAULT, metadata.getEnsembleSize()); lh.close(); Utils.close(writer); dlm.close(); metadata = BookKeeperAccessor.getLedgerMetadata(lh); assertEquals(DistributedLogConfiguration.BKDL_BOOKKEEPER_ENSEMBLE_SIZE_DEFAULT - 1, metadata.getEnsembleSize()); lh.close(); Utils.close(writer); dlm.close();
@Test(timeout = 60000, expected = BKException.ZKException.class) public void testOpenLedgerWhenZkClosed() throws Exception { ZooKeeperClient newZkc = TestZooKeeperClientBuilder.newBuilder() .name("zkc-openledger-when-zk-closed") .zkServers(zkServers) .build(); BookKeeperClient newBkc = BookKeeperClientBuilder.newBuilder() .name("bkc-openledger-when-zk-closed") .zkc(newZkc) .ledgersPath(ledgersPath) .dlConfig(conf) .build(); try { LedgerHandle lh = newBkc.get().createLedger(BookKeeper.DigestType.CRC32, "zkcClosed".getBytes(UTF_8)); lh.close(); newZkc.close(); LedgerHandleCache cache = LedgerHandleCache.newBuilder().bkc(newBkc).conf(conf).build(); // open ledger after zkc closed cache.openLedger(new LogSegmentMetadata.LogSegmentMetadataBuilder("", 2, lh.getId(), 1).setLogSegmentSequenceNo(lh.getId()).build(), false); } finally { newBkc.close(); } }
private void close() { if (handle != null) { try { handle.close(); } catch (Exception e) { LOG.error("Error closing ledger handle {}", handle, e); } } } }
@Override protected int runCmd() throws Exception { LedgerHandle lh = getBookKeeperClient().get().openLedgerNoRecovery( getLedgerID(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes(UTF_8)); try { long lac = lh.readLastConfirmed(); System.out.println("LastAddConfirmed: " + lac); } finally { lh.close(); } return 0; }
@Override protected int runCmd() throws Exception { LedgerHandle lh = getBookKeeperClient().get().openLedgerNoRecovery( getLedgerID(), BookKeeper.DigestType.CRC32, dlConf.getBKDigestPW().getBytes(UTF_8)); final CountDownLatch doneLatch = new CountDownLatch(1); final AtomicInteger resultHolder = new AtomicInteger(-1234); BookkeeperInternalCallbacks.GenericCallback<Void> recoverCb = new BookkeeperInternalCallbacks.GenericCallback<Void>() { @Override public void operationComplete(int rc, Void result) { resultHolder.set(rc); doneLatch.countDown(); } }; try { BookKeeperAccessor.forceRecoverLedger(lh, recoverCb); doneLatch.await(); if (BKException.Code.OK != resultHolder.get()) { throw BKException.create(resultHolder.get()); } } finally { lh.close(); } return 0; }
@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; } }