Source:
<code>private void initialize(ServerConfiguration conf, ZooKeeper zkc) throws UnavailableException { try { LedgerManagerFactory ledgerManagerFactory = LedgerManagerFactory .newLedgerManagerFactory( <START> conf, <END> new ZkLayoutManager(zkc, conf.getZkLedgersRootPath(), ZkUtils.getACLs(conf))); ledgerManager = ledgerManagerFactory.newLedgerManager(); this.bookieLedgerIndexer = new BookieLedgerIndexer(ledgerManager); this.ledgerUnderreplicationManager = ledgerManagerFactory .newLedgerUnderreplicationManager(); ClientConfiguration clientConfiguration = new ClientConfiguration(conf); clientConfiguration.setClientRole(ClientConfiguration.CLIENT_ROLE_SYSTEM); LOG.info("AuthProvider used by the Auditor is {}", clientConfiguration.getClientAuthProviderFactoryClass()); this.bkc = new BookKeeper(clientConfiguration, zkc); this.admin = new BookKeeperAdmin(bkc, statsLogger); if (this.ledgerUnderreplicationManager .initializeLostBookieRecoveryDelay(conf.getLostBookieRecoveryDelay())) { LOG.info("Initializing lostBookieRecoveryDelay zNode to the conif value: {}", conf.getLostBookieRecoveryDelay()); } else { LOG.info("Valid lostBookieRecoveryDelay zNode is available, so not creating " + "lostBookieRecoveryDelay zNode as part of Auditor initialization "); } lostBookieRecoveryDelayBeforeChange = this.ledgerUnderreplicationManager.getLostBookieRecoveryDelay(); } catch (CompatibilityException ce) { throw new UnavailableException( "CompatibilityException while initializing Auditor", ce); } catch (IOException | BKException | KeeperException ioe) { throw new UnavailableException( "Exception while initializing Auditor", ioe); } catch (InterruptedException ie) { throw new UnavailableException( "Interrupted while initializing Auditor", ie); } }</code><technical_language>I suggest layout manager registration client, construct zk layout manager directly</technical_language>

Target:
private void initialize(ServerConfiguration conf, ZooKeeper zkc) throws UnavailableException { try { ClientConfiguration clientConfiguration = new ClientConfiguration(conf); clientConfiguration.setClientRole(ClientConfiguration.CLIENT_ROLE_SYSTEM); LOG.info("AuthProvider used by the Auditor is {}", clientConfiguration.getClientAuthProviderFactoryClass()); this.bkc = new BookKeeper(clientConfiguration, zkc); LedgerManagerFactory ledgerManagerFactory = LedgerManagerFactory .newLedgerManagerFactory( conf, bkc.getRegClient().getLayoutManager()); ledgerManager = ledgerManagerFactory.newLedgerManager(); this.bookieLedgerIndexer = new BookieLedgerIndexer(ledgerManager); this.ledgerUnderreplicationManager = ledgerManagerFactory .newLedgerUnderreplicationManager(); this.admin = new BookKeeperAdmin(bkc, statsLogger); if (this.ledgerUnderreplicationManager .initializeLostBookieRecoveryDelay(conf.getLostBookieRecoveryDelay())) { LOG.info("Initializing lostBookieRecoveryDelay zNode to the conif value: {}", conf.getLostBookieRecoveryDelay()); } else { LOG.info("Valid lostBookieRecoveryDelay zNode is available, so not creating " + "lostBookieRecoveryDelay zNode as part of Auditor initialization "); } lostBookieRecoveryDelayBeforeChange = this.ledgerUnderreplicationManager.getLostBookieRecoveryDelay(); } catch (CompatibilityException ce) { throw new UnavailableException( "CompatibilityException while initializing Auditor", ce); } catch (IOException | BKException | KeeperException ioe) { throw new UnavailableException( "Exception while initializing Auditor", ioe); } catch (InterruptedException ie) { throw new UnavailableException( "Interrupted while initializing Auditor", ie); } }