/** * Replicate the Ledger fragment to target Bookie passed. * * @param lh - ledgerHandle * @param ledgerFragment - LedgerFragment to replicate */ public void replicateLedgerFragment(LedgerHandle lh, final LedgerFragment ledgerFragment) throws InterruptedException, BKException { Optional<Set<BookieSocketAddress>> excludedBookies = Optional.absent(); Map<Integer, BookieSocketAddress> targetBookieAddresses = getReplacedBookiesByIndexes( lh, ledgerFragment.getEnsemble(), ledgerFragment.getBookiesIndexes(), excludedBookies); replicateLedgerFragment(lh, ledgerFragment, targetBookieAddresses); }
private static Map<BookieSocketAddress, BookieSocketAddress> getReplacedBookiesMap( LedgerFragment ledgerFragment, Map<Integer, BookieSocketAddress> targetBookieAddresses) { Map<BookieSocketAddress, BookieSocketAddress> bookiesMap = new HashMap<BookieSocketAddress, BookieSocketAddress>(); for (Integer bookieIndex : ledgerFragment.getBookiesIndexes()) { BookieSocketAddress oldBookie = ledgerFragment.getAddress(bookieIndex); BookieSocketAddress newBookie = targetBookieAddresses.get(bookieIndex); bookiesMap.put(oldBookie, newBookie); } return bookiesMap; }