@Override public int run(ZooKeeperClient zkc, BookKeeperClient bkc) throws Exception { BookKeeperAdmin bkAdmin = new BookKeeperAdmin(bkc.get()); try { bkRecovery(bkAdmin, ledgers, bookieAddrs, dryrun, skipOpenLedgers); return 0; } finally { bkAdmin.close(); } } });
return; LedgerHandle lh = bkAdmin.openLedger(segment.getLedgerId(), true); long lac = lh.getLastAddConfirmed(); Enumeration<LedgerEntry> entries = lh.readEntries(lac, lac);
PositionImpl lastAckedMessagePosition = null; try { bookKeeperAdmin = new BookKeeperAdmin(bookKeeper); Iterator<LedgerEntry> entries = bookKeeperAdmin.readEntries(ledgerId, 0, lastEntry).iterator(); while (entries.hasNext()) { LedgerEntry ledgerEntry = entries.next(); if (bookKeeperAdmin != null) { try { bookKeeperAdmin.close(); } catch (Exception e) { log.warn("Unable to close bk admin for ledgerId {} for cursor {}", ledgerId, cursorName, e);
@Override public int runCmd(CommandLine cmdLine) throws Exception { ClientConfiguration adminConf = new ClientConfiguration(bkConf); BookKeeperAdmin admin = new BookKeeperAdmin(adminConf); try { admin.triggerAudit(); } finally { if (admin != null) { admin.close(); } } return 0; } }
@Override int runCmd(CommandLine cmdLine) throws Exception { boolean getter = cmdLine.hasOption("g"); boolean setter = cmdLine.hasOption("s"); if ((!getter && !setter) || (getter && setter)) { LOG.error("One and only one of -get and -set must be specified"); printUsage(); return 1; } ClientConfiguration adminConf = new ClientConfiguration(bkConf); BookKeeperAdmin admin = new BookKeeperAdmin(adminConf); try { if (getter) { int lostBookieRecoveryDelay = admin.getLostBookieRecoveryDelay(); LOG.info("LostBookieRecoveryDelay value in ZK: {}", String.valueOf(lostBookieRecoveryDelay)); } else { int lostBookieRecoveryDelay = Integer.parseInt(cmdLine.getOptionValue("set")); admin.setLostBookieRecoveryDelay(lostBookieRecoveryDelay); LOG.info("Successfully set LostBookieRecoveryDelay value in ZK: {}", String.valueOf(lostBookieRecoveryDelay)); } } finally { if (admin != null) { admin.close(); } } return 0; } }
private int bkRecovery(final LinkedBlockingQueue<Long> ledgers, final Set<BookieSocketAddress> bookieAddrs, final boolean dryrun, final boolean skipOpenLedgers) throws Exception { return runBKCommand(new BKCommandRunner() { @Override public int run(ZooKeeperClient zkc, BookKeeperClient bkc) throws Exception { BookKeeperAdmin bkAdmin = new BookKeeperAdmin(bkc.get()); try { bkRecovery(bkAdmin, ledgers, bookieAddrs, dryrun, skipOpenLedgers); return 0; } finally { bkAdmin.close(); } } }); }
@Override public int runCmd(CommandLine cmdLine) throws Exception { ClientConfiguration adminConf = new ClientConfiguration(bkConf); BookKeeperAdmin admin = new BookKeeperAdmin(adminConf); try { final String remoteBookieidToDecommission = cmdLine.getOptionValue("bookieid"); .isBlank(remoteBookieidToDecommission) ? Bookie.getBookieAddress(bkConf) : new BookieSocketAddress(remoteBookieidToDecommission)); admin.decommissionBookie(bookieAddressToDecommission); LOG.info("The ledgers stored in the given decommissioning bookie: {} are properly replicated", bookieAddressToDecommission); } finally { if (admin != null) { admin.close();
conf.addConfiguration(bkConf); try (BookKeeperAdmin bk = new BookKeeperAdmin(conf)) { if (forceRecovery) { try (LedgerHandle lh = bk.openLedger(ledgerId)) { if (lastEntry == -1 || lastEntry > lh.getLastAddConfirmed()) { lastEntry = lh.getLastAddConfirmed(); Iterator<LedgerEntry> entries = bk.readEntries(ledgerId, firstEntry, lastEntry).iterator(); while (entries.hasNext()) { LedgerEntry entry = entries.next();
final BookKeeperAdmin admin = new BookKeeperAdmin(client, statsLogger); admin.asyncOpenLedgerNoRecovery(ledgerId, (rc, lh, ctx) -> { if (Code.OK == rc) { checker.checkLedger(lh, admin.close(); client.close();
val bkAdmin = new BookKeeperAdmin(context.logFactory.getBookKeeperClient()); val allLedgerIds = new ArrayList<Long>(); bkAdmin.listLedgers().forEach(allLedgerIds::add);
@Override int runCmd(CommandLine cmdLine) throws Exception { boolean interactive = (!cmdLine.hasOption("n")); boolean force = cmdLine.hasOption("f"); boolean result = BookKeeperAdmin.format(bkConf, interactive, force); return (result) ? 0 : 1; } }
this.admin = new BookKeeperAdmin(bkc, statsLogger); LOG.info("AuthProvider used by the Auditor is {}", admin.getConf().getClientAuthProviderFactoryClass()); if (this.ledgerUnderreplicationManager .initializeLostBookieRecoveryDelay(conf.getLostBookieRecoveryDelay())) {
@Override public void close() throws IOException { try { executor.shutdown(); if (bka != null) { bka.close(); } if (zk != null) { zk.close(); } } catch (InterruptedException ie) { Thread.currentThread().interrupt(); log.error("Interruption while closing BKHttpServiceProvider", ie); throw new IOException("Interruption while closing BKHttpServiceProvider", ie); } catch (BKException e) { log.error("Error while closing BKHttpServiceProvider", e); throw new IOException("Error while closing BKHttpServiceProvider", e); } }
LedgerHandle lh = null; try { lh = admin.openLedgerNoRecovery(ledgerId); if (isLastSegmentOpenAndMissingBookies(lh)) { lh = admin.openLedger(ledgerId); isRecoveryOpen = true; lh = admin.openLedger(ledgerId); isRecoveryOpen = true; break;
LedgerMetadata md = admin.getLedgerMetadata(lh); if (md.isClosed()) { return false; SortedMap<Long, ? extends List<BookieSocketAddress>> ensembles = admin.getLedgerMetadata(lh).getAllEnsembles(); List<BookieSocketAddress> finalEnsemble = ensembles.get(ensembles.lastKey()); Collection<BookieSocketAddress> available = admin.getAvailableBookies(); for (BookieSocketAddress b : finalEnsemble) { if (!available.contains(b)) {
Iterator<LedgerEntry> entries = bka.readEntries(ledgerId, startEntryId, endEntryId).iterator(); while (entries.hasNext()) { LedgerEntry entry = entries.next();
try (LedgerHandle lh = admin.openLedgerNoRecovery(ledgerIdToReplicate)) { Set<LedgerFragment> fragments = getUnderreplicatedFragments(lh, conf.getAuditorLedgerVerificationPercentage()); admin.replicateLedgerFragment(lh, ledgerFragment); } catch (BKException.BKBookieHandleNotAvailableException e) { LOG.warn("BKBookieHandleNotAvailableException while replicating the fragment", e);
private int bkQuery(BookKeeperAdmin bkAdmin, Set<BookieSocketAddress> bookieAddrs) throws InterruptedException, BKException { SortedMap<Long, LedgerMetadata> ledgersContainBookies = bkAdmin.getLedgersContainBookies(bookieAddrs); System.err.println("NOTE: Bookies in inspection list are marked with '*'."); for (Map.Entry<Long, LedgerMetadata> ledger : ledgersContainBookies.entrySet()) { System.out.println("ledger " + ledger.getKey() + " : " + ledger.getValue().getState()); Map<Long, Integer> numBookiesToReplacePerEnsemble = inspectLedger(ledger.getValue(), bookieAddrs); System.out.print("summary: ["); for (Map.Entry<Long, Integer> entry : numBookiesToReplacePerEnsemble.entrySet()) { System.out.print(entry.getKey() + "=" + entry.getValue() + ", "); } System.out.println("]"); System.out.println(); } System.out.println("Done"); return 0; }
public LedgerEntriesIterator(long ledgerId, long firstEntry, long lastEntry) throws InterruptedException, BKException { this.handle = openLedgerNoRecovery(ledgerId); this.ledgerId = ledgerId; this.nextEntryId = firstEntry; this.lastEntryId = lastEntry; this.currentEntry = null; }
Collections.newSetFromMap(new ConcurrentHashMap<CompletableFuture<?>, Boolean>()); final RateLimiter throttler = RateLimiter.create(rate); final Iterator<Long> ledgerItr = admin.listLedgers().iterator();