@Override public String[] getLocations() throws IOException, InterruptedException { Set<String> locations = Sets.newHashSet(); for (ArrayList<BookieSocketAddress> ensemble : ledgerMetadata.getEnsembles().values()) { for (BookieSocketAddress host : ensemble) { locations.add(host.getHostName()); } } return locations.toArray(new String[locations.size()]); }
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; }
@Override public void readFields(DataInput dataInput) throws IOException { String lsMetadataStr = dataInput.readUTF(); logSegmentMetadata = LogSegmentMetadata.parseData("", lsMetadataStr.getBytes(UTF_8)); String lhMetadataStr = dataInput.readUTF(); ledgerMetadata = LedgerMetadata.parseConfig(lhMetadataStr.getBytes(UTF_8), Version.ANY); } }
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) { output("\tLedger %d: Seq = %d, Status = %s. BK: %s",
.get().openLedgerNoRecovery(ledgerId, BookKeeper.DigestType.CRC32, confLocal.getBKDigestPW().getBytes(UTF_8)); LedgerMetadata metadata = BookKeeperAccessor.getLedgerMetadata(lh); assertEquals(DistributedLogConfiguration.BKDL_BOOKKEEPER_ENSEMBLE_SIZE_DEFAULT, metadata.getEnsembleSize()); lh.close(); Utils.close(writer); .get().openLedgerNoRecovery(ledgerId, BookKeeper.DigestType.CRC32, confLocal.getBKDigestPW().getBytes(UTF_8)); metadata = BookKeeperAccessor.getLedgerMetadata(lh); assertEquals(DistributedLogConfiguration.BKDL_BOOKKEEPER_ENSEMBLE_SIZE_DEFAULT - 1, metadata.getEnsembleSize()); lh.close(); Utils.close(writer);
ArrayList<BookieSocketAddress> ensemble = lh.getLedgerMetadata().getEnsemble(eid); for (Integer idx : writeSet) { bookieClient.readEntry(ensemble.get(idx), lh.getId(), eid, readEntryCallback, ensemble.get(idx));
@Override public void write(DataOutput dataOutput) throws IOException { String lsMetadataStr = logSegmentMetadata.getFinalisedData(); dataOutput.writeUTF(lsMetadataStr); String lhMetadataStr = new String(ledgerMetadata.serialize(), UTF_8); dataOutput.writeUTF(lhMetadataStr); }
public PulsarMockLedgerHandle(PulsarMockBookKeeper bk, long id, DigestType digest, byte[] passwd) throws GeneralSecurityException { super(bk, id, new LedgerMetadata(3, 3, 2, DigestType.MAC, "".getBytes()), DigestType.MAC, "".getBytes(), EnumSet.noneOf(WriteFlag.class)); this.bk = bk; this.id = id; this.digest = digest; this.passwd = Arrays.copyOf(passwd, passwd.length); readHandle = new PulsarMockReadHandle(bk, id, getLedgerMetadata(), entries); }
ArrayList<BookieSocketAddress> ensemble = lh.getLedgerMetadata().getEnsemble(eid); for (Integer idx : writeSet) { bookieClient.readEntry(ensemble.get(idx), lh.getId(), eid, readEntryCallback, ensemble.get(idx));
static public SortedMap<Long, ArrayList<BookieSocketAddress>> bookiesForLedger(final LedgerHandle lh) { return lh.getLedgerMetadata().getEnsembles(); }
private Map<Long, Integer> inspectLedger(LedgerMetadata metadata, Set<BookieSocketAddress> bookiesToInspect) { Map<Long, Integer> numBookiesToReplacePerEnsemble = new TreeMap<Long, Integer>(); for (Map.Entry<Long, ArrayList<BookieSocketAddress>> ensemble : metadata.getEnsembles().entrySet()) { ArrayList<BookieSocketAddress> bookieList = ensemble.getValue(); System.out.print(ensemble.getKey() + ":\t"); int numBookiesToReplace = 0; for (BookieSocketAddress bookie: bookieList) { System.out.print(bookie.toString()); if (bookiesToInspect.contains(bookie)) { System.out.print("*"); ++numBookiesToReplace; } else { System.out.print(" "); } System.out.print(" "); } System.out.println(); numBookiesToReplacePerEnsemble.put(ensemble.getKey(), numBookiesToReplace); } return numBookiesToReplacePerEnsemble; }
private String getEnsembleDescription(org.apache.bookkeeper.client.LedgerMetadata bkLm) { return bkLm.getEnsembles().entrySet().stream() .map(e -> String.format("%d:[%s]", e.getKey(), e.getValue().stream().map(Object::toString).collect(Collectors.joining(",")))) .collect(Collectors.joining(",")); }