You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by gi...@apache.org on 2019/05/10 17:47:26 UTC

[bookkeeper] branch asf-site updated: Updated site at revision b4ca453

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new d263047  Updated site at revision b4ca453
d263047 is described below

commit d26304734d68beff91c6883a9ea7eee439a60216
Author: jenkins <bu...@apache.org>
AuthorDate: Fri May 10 17:47:21 2019 +0000

    Updated site at revision b4ca453
---
 .../docs/latest/api/javadoc/allclasses-frame.html  |   7 +-
 .../latest/api/javadoc/allclasses-noframe.html     |   7 +-
 content/docs/latest/api/javadoc/index-all.html     | 108 +++++---
 .../bookkeeper/client/RackChangeNotifier.html      |   4 +-
 .../client/RackawareEnsemblePlacementPolicy.html   |  31 ++-
 .../RackawareEnsemblePlacementPolicyImpl.html      | 227 ++++------------
 .../client/RegionAwareEnsemblePlacementPolicy.html |  31 ++-
 ...ogyAwareEnsemblePlacementPolicy.BookieNode.html |   4 +-
 ...emblePlacementPolicy.DNSResolverDecorator.html} | 169 +++++++-----
 ...reEnsemblePlacementPolicy.DefaultResolver.html} | 153 +++++------
 ...cy.EnsembleForReplacementWithNoConstraints.html |   4 +-
 .../TopologyAwareEnsemblePlacementPolicy.html      | 302 ++++++++++++++++++++-
 .../apache/bookkeeper/client/UpdateLedgerOp.html   |   4 +-
 .../WeightedRandomSelection.WeightedObject.html    |  14 +-
 .../bookkeeper/client/WeightedRandomSelection.html | 226 +++------------
 ...ction.html => WeightedRandomSelectionImpl.html} | 154 ++++++-----
 .../class-use/DistributionSchedule.WriteSet.html   |   2 +-
 ...ogyAwareEnsemblePlacementPolicy.BookieNode.html |  34 ++-
 ...emblePlacementPolicy.DNSResolverDecorator.html} |  20 +-
 ...reEnsemblePlacementPolicy.DefaultResolver.html} |  20 +-
 .../WeightedRandomSelection.WeightedObject.html    |  14 +-
 .../client/class-use/WeightedRandomSelection.html  |  67 ++++-
 ...ction.html => WeightedRandomSelectionImpl.html} |  20 +-
 .../apache/bookkeeper/client/package-frame.html    |   7 +-
 .../apache/bookkeeper/client/package-summary.html  |  26 +-
 .../org/apache/bookkeeper/client/package-tree.html |   7 +-
 .../org/apache/bookkeeper/client/package-use.html  |   3 +
 .../stats/annotations/class-use/StatsDoc.html      |   6 +-
 .../apache/bookkeeper/stats/class-use/Counter.html |   4 +-
 .../bookkeeper/stats/class-use/OpStatsLogger.html  |   4 +-
 content/docs/latest/api/javadoc/overview-tree.html |   7 +-
 31 files changed, 948 insertions(+), 738 deletions(-)

diff --git a/content/docs/latest/api/javadoc/allclasses-frame.html b/content/docs/latest/api/javadoc/allclasses-frame.html
index 094c8ad..0f91432 100644
--- a/content/docs/latest/api/javadoc/allclasses-frame.html
+++ b/content/docs/latest/api/javadoc/allclasses-frame.html
@@ -195,8 +195,6 @@
 <li><a href="org/apache/bookkeeper/stats/prometheus/PrometheusTextFormatUtil.html" title="class in org.apache.bookkeeper.stats.prometheus" target="classFrame">PrometheusTextFormatUtil</a></li>
 <li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicy</a></li>
 <li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicyImpl</a></li>
-<li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></li>
-<li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></li>
 <li><a href="org/apache/bookkeeper/client/RackChangeNotifier.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">RackChangeNotifier</span></a></li>
 <li><a href="org/apache/bookkeeper/client/api/ReadHandle.html" title="interface in org.apache.bookkeeper.client.api" target="classFrame"><span class="interfaceName">ReadHandle</span></a></li>
 <li><a href="org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">ReadLastConfirmedAndEntryOp</a></li>
@@ -259,6 +257,8 @@
 <li><a href="org/apache/bookkeeper/stats/codahale/generated/TimerBenchmark_timerTestWithSnapshots_jmhTest.html" title="class in org.apache.bookkeeper.stats.codahale.generated" target="classFrame">TimerBenchmark_timerTestWithSnapshots_jmhTest</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></li>
+<li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></li>
+<li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet</span></a></li>
@@ -266,8 +266,9 @@
 <li><a href="org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">TryReadLastConfirmedOp</a></li>
 <li><a href="org/apache/bookkeeper/conf/UncheckedConfigurationException.html" title="class in org.apache.bookkeeper.conf" target="classFrame">UncheckedConfigurationException</a></li>
 <li><a href="org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">UpdateLedgerOp</a></li>
-<li><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client" target="classFrame">WeightedRandomSelection</a></li>
+<li><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">WeightedRandomSelection</span></a></li>
 <li><a href="org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">WeightedRandomSelection.WeightedObject</span></a></li>
+<li><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client" target="classFrame">WeightedRandomSelectionImpl</a></li>
 <li><a href="org/apache/bookkeeper/client/api/WriteAdvHandle.html" title="interface in org.apache.bookkeeper.client.api" target="classFrame"><span class="interfaceName">WriteAdvHandle</span></a></li>
 <li><a href="org/apache/bookkeeper/client/api/WriteFlag.html" title="enum in org.apache.bookkeeper.client.api" target="classFrame">WriteFlag</a></li>
 <li><a href="org/apache/bookkeeper/client/api/WriteHandle.html" title="interface in org.apache.bookkeeper.client.api" target="classFrame"><span class="interfaceName">WriteHandle</span></a></li>
diff --git a/content/docs/latest/api/javadoc/allclasses-noframe.html b/content/docs/latest/api/javadoc/allclasses-noframe.html
index 2ad2b6b..5c08f9a 100644
--- a/content/docs/latest/api/javadoc/allclasses-noframe.html
+++ b/content/docs/latest/api/javadoc/allclasses-noframe.html
@@ -195,8 +195,6 @@
 <li><a href="org/apache/bookkeeper/stats/prometheus/PrometheusTextFormatUtil.html" title="class in org.apache.bookkeeper.stats.prometheus">PrometheusTextFormatUtil</a></li>
 <li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicy</a></li>
 <li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></li>
-<li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></li>
-<li><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></li>
 <li><a href="org/apache/bookkeeper/client/RackChangeNotifier.html" title="interface in org.apache.bookkeeper.client"><span class="interfaceName">RackChangeNotifier</span></a></li>
 <li><a href="org/apache/bookkeeper/client/api/ReadHandle.html" title="interface in org.apache.bookkeeper.client.api"><span class="interfaceName">ReadHandle</span></a></li>
 <li><a href="org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client">ReadLastConfirmedAndEntryOp</a></li>
@@ -259,6 +257,8 @@
 <li><a href="org/apache/bookkeeper/stats/codahale/generated/TimerBenchmark_timerTestWithSnapshots_jmhTest.html" title="class in org.apache.bookkeeper.stats.codahale.generated">TimerBenchmark_timerTestWithSnapshots_jmhTest</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></li>
+<li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></li>
+<li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</a></li>
 <li><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet.html" title="interface in org.apache.bookkeeper.client"><span class="interfaceName">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet</span></a></li>
@@ -266,8 +266,9 @@
 <li><a href="org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client">TryReadLastConfirmedOp</a></li>
 <li><a href="org/apache/bookkeeper/conf/UncheckedConfigurationException.html" title="class in org.apache.bookkeeper.conf">UncheckedConfigurationException</a></li>
 <li><a href="org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client">UpdateLedgerOp</a></li>
-<li><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></li>
+<li><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="interfaceName">WeightedRandomSelection</span></a></li>
 <li><a href="org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="interfaceName">WeightedRandomSelection.WeightedObject</span></a></li>
+<li><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></li>
 <li><a href="org/apache/bookkeeper/client/api/WriteAdvHandle.html" title="interface in org.apache.bookkeeper.client.api"><span class="interfaceName">WriteAdvHandle</span></a></li>
 <li><a href="org/apache/bookkeeper/client/api/WriteFlag.html" title="enum in org.apache.bookkeeper.client.api">WriteFlag</a></li>
 <li><a href="org/apache/bookkeeper/client/api/WriteHandle.html" title="interface in org.apache.bookkeeper.client.api"><span class="interfaceName">WriteHandle</span></a></li>
diff --git a/content/docs/latest/api/javadoc/index-all.html b/content/docs/latest/api/javadoc/index-all.html
index a6c0f86..914957f 100644
--- a/content/docs/latest/api/javadoc/index-all.html
+++ b/content/docs/latest/api/javadoc/index-all.html
@@ -875,6 +875,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/BookieInfoReader.BookieInfo.html#BookieInfo-long-long-">BookieInfo(long, long)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/BookieInfoReader.BookieInfo.html" title="class in org.apache.bookkeeper.client">BookieInfoReader.BookieInfo</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/BookieInfoReader.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">BookieInfoReader</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>
 <div class="block">A utility class to read <a href="org/apache/bookkeeper/client/BookieInfoReader.BookieInfo.html" title="class in org.apache.bookkeeper.client"><code>BookieInfoReader.BookieInfo</code></a> from bookies.</div>
@@ -905,9 +907,9 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/LedgerHandle.html#bookiesHealthInfo">bookiesHealthInfo</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/LedgerHandle.html" title="class in org.apache.bookkeeper.client">LedgerHandle</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesLeftCounter">bookiesLeftCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/BookiesListener.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">BookiesListener</span></a> - Interface in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>
@@ -1497,6 +1499,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#createBookieNode-org.apache.bookkeeper.net.BookieSocketAddress-">createBookieNode(BookieSocketAddress)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#createBookieNode-org.apache.bookkeeper.net.BookieSocketAddress-">createBookieNode(BookieSocketAddress)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/api/CreateBuilder.html" title="interface in org.apache.bookkeeper.client.api"><span class="typeNameLink">CreateBuilder</span></a> - Interface in <a href="org/apache/bookkeeper/client/api/package-summary.html">org.apache.bookkeeper.client.api</a></dt>
 <dd>
 <div class="block">Builder-style interface to create new ledgers.</div>
@@ -1557,7 +1561,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/PendingWriteLacOp.html#ctx">ctx</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/PendingWriteLacOp.html" title="class in org.apache.bookkeeper.client">PendingWriteLacOp</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#cummulativeMap">cummulativeMap</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#cummulativeMap">cummulativeMap</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/ForceLedgerOp.html#currentEnsemble">currentEnsemble</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ForceLedgerOp.html" title="class in org.apache.bookkeeper.client">ForceLedgerOp</a></dt>
 <dd>&nbsp;</dd>
@@ -1629,11 +1633,11 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/DefaultEnsemblePlacementPolicy.html#DefaultEnsemblePlacementPolicy--">DefaultEnsemblePlacementPolicy()</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/DefaultEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">DefaultEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html#defaultRackSupplier">defaultRackSupplier</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#defaultRackSupplier">defaultRackSupplier</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#defaultRackSupplier">defaultRackSupplier</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#defaultRackSupplier">defaultRackSupplier</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html#DefaultResolver-java.util.function.Supplier-">DefaultResolver(Supplier&lt;String&gt;)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#DefaultResolver-java.util.function.Supplier-">DefaultResolver(Supplier&lt;String&gt;)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/DefaultSpeculativeRequestExecutionPolicy.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">DefaultSpeculativeRequestExecutionPolicy</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>
@@ -1749,9 +1753,9 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/impl/BookKeeperBuilderImpl.html#dnsResolver-org.apache.bookkeeper.net.DNSToSwitchMapping-">dnsResolver(DNSToSwitchMapping)</a></span> - Method in class org.apache.bookkeeper.client.impl.<a href="org/apache/bookkeeper/client/impl/BookKeeperBuilderImpl.html" title="class in org.apache.bookkeeper.client.impl">BookKeeperBuilderImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#dnsResolver">dnsResolver</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#dnsResolver">dnsResolver</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#DNSResolverDecorator-org.apache.bookkeeper.net.DNSToSwitchMapping-java.util.function.Supplier-org.apache.bookkeeper.stats.Counter-">DNSResolverDecorator(DNSToSwitchMapping, Supplier&lt;String&gt;, Counter)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDe [...]
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#DNSResolverDecorator-org.apache.bookkeeper.net.DNSToSwitchMapping-java.util.function.Supplier-org.apache.bookkeeper.stats.Counter-">DNSResolverDecorator(DNSToSwitchMapping, Supplier&lt;String&gt;, Counter)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDe [...]
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/LedgerHandle.html#doAsyncAddEntry-org.apache.bookkeeper.client.PendingAddOp-">doAsyncAddEntry(PendingAddOp)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/LedgerHandle.html" title="class in org.apache.bookkeeper.client">LedgerHandle</a></dt>
 <dd>&nbsp;</dd>
@@ -2027,10 +2031,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/BookKeeperClientStats.html#FAILED_TLS_HANDSHAKE_COUNTER">FAILED_TLS_HANDSHAKE_COUNTER</a></span> - Static variable in interface org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/BookKeeperClientStats.html" title="interface in org.apache.bookkeeper.client">BookKeeperClientStats</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/stats/codahale/FastCodahaleMetricsProvider.html" title="class in org.apache.bookkeeper.stats.codahale"><span class="typeNameLink">FastCodahaleMetricsProvider</span></a> - Class in <a href="org/apache/bookkeeper/stats/codahale/package-summary.html">org.apache.bookkeeper.stats.codahale</a></dt>
 <dd>
 <div class="block">A <a href="org/apache/bookkeeper/stats/StatsProvider.html" title="interface in org.apache.bookkeeper.stats"><code>StatsProvider</code></a> implemented based on <i>Codahale</i> metrics library.</div>
@@ -3287,6 +3291,8 @@
 <dd>
 <div class="block">Get the maximum netty frame size in bytes.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#getNetworkLocations-java.util.Set-">getNetworkLocations(Set&lt;Node&gt;)</a></span> - Static method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/ClientConfiguration.html#getNetworkTopologyStabilizePeriodSeconds--">getNetworkTopologyStabilizePeriodSeconds()</a></span> - Method in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/ClientConfiguration.html" title="class in org.apache.bookkeeper.conf">ClientConfiguration</a></dt>
 <dd>
 <div class="block">Get the network topology stabilize period in seconds.</div>
@@ -3296,7 +3302,13 @@
 <div class="block">the entry id greater than the given entry-id at which the next ensemble change takes
  place.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom--">getNextRandom()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom--">getNextRandom()</a></span> - Method in interface org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom-java.util.Collection-">getNextRandom(Collection&lt;T&gt;)</a></span> - Method in interface org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#getNextRandom--">getNextRandom()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#getNextRandom-java.util.Collection-">getNextRandom(Collection&lt;T&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/ServerConfiguration.html#getNumAddWorkerThreads--">getNumAddWorkerThreads()</a></span> - Method in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/ServerConfiguration.html" title="class in org.apache.bookkeeper.conf">ServerConfiguration</a></dt>
 <dd>
@@ -3969,6 +3981,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined(Set&lt;BookieSocketAddress&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">RegionAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined(Set&lt;BookieSocketAddress&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft(Set&lt;BookieSocketAddress&gt;)</a></span> - Method in interface org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>
 <div class="block">Handle bookies that left.</div>
@@ -3979,6 +3993,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft(Set&lt;BookieSocketAddress&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">RegionAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft(Set&lt;BookieSocketAddress&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/api/BKException.html#HANDLER">HANDLER</a></span> - Static variable in exception org.apache.bookkeeper.client.api.<a href="org/apache/bookkeeper/client/api/BKException.html" title="class in org.apache.bookkeeper.client.api">BKException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/BKException.html#HANDLER">HANDLER</a></span> - Static variable in exception org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/BKException.html" title="class in org.apache.bookkeeper.client">BKException</a></dt>
@@ -4387,7 +4403,7 @@
 <div class="block">Issues a speculative request and indicates if more speculative
  requests should be issued.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#isWeighted">isWeighted</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#isWeighted">isWeighted</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/AbstractConfiguration.html#isZkEnableSecurity--">isZkEnableSecurity()</a></span> - Method in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/AbstractConfiguration.html" title="class in org.apache.bookkeeper.conf">AbstractConfiguration</a></dt>
 <dd>
@@ -4471,7 +4487,7 @@
 </a>
 <h2 class="title">K</h2>
 <dl>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#knownBookies">knownBookies</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#knownBookies">knownBookies</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
 </dl>
 <a name="I:L">
@@ -4857,7 +4873,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TryReadLastConfirmedOp.html#LOG">LOG</a></span> - Static variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client">TryReadLastConfirmedOp</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#LOG">LOG</a></span> - Static variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#LOG">LOG</a></span> - Static variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/stats/codahale/CodahaleMetricsProvider.html#LOG">LOG</a></span> - Static variable in class org.apache.bookkeeper.stats.codahale.<a href="org/apache/bookkeeper/stats/codahale/CodahaleMetricsProvider.html" title="class in org.apache.bookkeeper.stats.codahale">CodahaleMetricsProvider</a></dt>
 <dd>&nbsp;</dd>
@@ -4929,7 +4945,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/feature/SettableFeatureProvider.html#makeProvider-java.lang.String-">makeProvider(String)</a></span> - Method in class org.apache.bookkeeper.feature.<a href="org/apache/bookkeeper/feature/SettableFeatureProvider.html" title="class in org.apache.bookkeeper.feature">SettableFeatureProvider</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#map">map</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#map">map</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#MASK_BITS">MASK_BITS</a></span> - Static variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
@@ -4959,7 +4975,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html#maxMissedReadsAllowed">maxMissedReadsAllowed</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client">ReadLastConfirmedAndEntryOp</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#maxProbabilityMultiplier">maxProbabilityMultiplier</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#maxProbabilityMultiplier">maxProbabilityMultiplier</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/ReadLastConfirmedOp.html#maxRecoveredData">maxRecoveredData</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client">ReadLastConfirmedOp</a></dt>
 <dd>&nbsp;</dd>
@@ -5319,6 +5335,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#onClusterChanged-java.util.Set-java.util.Set-">onClusterChanged(Set&lt;BookieSocketAddress&gt;, Set&lt;BookieSocketAddress&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#onClusterChanged-java.util.Set-java.util.Set-">onClusterChanged(Set&lt;BookieSocketAddress&gt;, Set&lt;BookieSocketAddress&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/LedgerRecoveryOp.html#onEntryComplete-int-org.apache.bookkeeper.client.LedgerHandle-org.apache.bookkeeper.client.LedgerEntry-java.lang.Object-">onEntryComplete(int, LedgerHandle, LedgerEntry, Object)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/LedgerRecoveryOp.html" title="class in org.apache.bookkeeper.client">LedgerRecoveryOp</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/BookieInfoReader.html#onExit--">onExit()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/BookieInfoReader.html" title="class in org.apache.bookkeeper.client">BookieInfoReader</a></dt>
@@ -11770,12 +11788,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#RackawareEnsemblePlacementPolicyImpl-boolean-">RackawareEnsemblePlacementPolicyImpl(boolean)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
-<dd>&nbsp;</dd>
-<dt><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
-<dd>
-<div class="block">Decorator for any existing dsn resolver.</div>
-</dd>
 <dt><a href="org/apache/bookkeeper/client/RackChangeNotifier.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">RackChangeNotifier</span></a> - Interface in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>
 <div class="block">Notifier used by the RackawareEnsemblePlacementPolicy to get notified if a rack changes for a bookie.</div>
@@ -11794,7 +11806,7 @@
 <dd>
 <div class="block">Report an alertable condition".</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#randomMax">randomMax</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#randomMax">randomMax</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/BookKeeperAdmin.SyncObject.html#rc">rc</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/BookKeeperAdmin.SyncObject.html" title="class in org.apache.bookkeeper.client">BookKeeperAdmin.SyncObject</a></dt>
 <dd>&nbsp;</dd>
@@ -11991,7 +12003,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/LedgerHandle.html#readLastEntry--">readLastEntry()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/LedgerHandle.html" title="class in org.apache.bookkeeper.client">LedgerHandle</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#readOnlyBookies">readOnlyBookies</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#readOnlyBookies">readOnlyBookies</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/ReadOnlyLedgerHandle.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">ReadOnlyLedgerHandle</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>
@@ -12202,9 +12214,9 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.html#registry">registry</a></span> - Variable in class org.apache.bookkeeper.stats.prometheus.<a href="org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.html" title="class in org.apache.bookkeeper.stats.prometheus">PrometheusMetricsProvider</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html#reloadCachedMappings--">reloadCachedMappings()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#reloadCachedMappings--">reloadCachedMappings()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#reloadCachedMappings--">reloadCachedMappings()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#reloadCachedMappings--">reloadCachedMappings()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#REMOTE_FAIL_MASK">REMOTE_FAIL_MASK</a></span> - Static variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
@@ -12363,13 +12375,15 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/AbstractConfiguration.html#REREPLICATION_ENTRY_BATCH_SIZE">REREPLICATION_ENTRY_BATCH_SIZE</a></span> - Static variable in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/AbstractConfiguration.html" title="class in org.apache.bookkeeper.conf">AbstractConfiguration</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html#resolve-java.util.List-">resolve(List&lt;String&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#resolve-java.util.List-">resolve(List&lt;String&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#resolve-java.util.List-">resolve(List&lt;String&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#resolve-java.util.List-">resolve(List&lt;String&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#resolveNetworkLocation-org.apache.bookkeeper.net.BookieSocketAddress-">resolveNetworkLocation(BookieSocketAddress)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#resolver">resolver</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#resolveNetworkLocation-org.apache.bookkeeper.net.BookieSocketAddress-">resolveNetworkLocation(BookieSocketAddress)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#resolver">resolver</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/LedgerHandle.LastConfirmedCtx.html#response">response</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/LedgerHandle.LastConfirmedCtx.html" title="class in org.apache.bookkeeper.client">LedgerHandle.LastConfirmedCtx</a></dt>
 <dd>&nbsp;</dd>
@@ -12398,9 +12412,9 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/ServerConfiguration.html#RW_REREPLICATE_BACKOFF_MS">RW_REREPLICATE_BACKOFF_MS</a></span> - Static variable in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/ServerConfiguration.html" title="class in org.apache.bookkeeper.conf">ServerConfiguration</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#rwLock">rwLock</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#rwLock">rwLock</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#rwLock">rwLock</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#rwLock">rwLock</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 </dl>
 <a name="I:S">
@@ -13085,7 +13099,9 @@
 <dd>
 <div class="block">Set the max number of pending read requests for each read worker thread.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier(int)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier(int)</a></span> - Method in interface org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier(int)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/ServerConfiguration.html#setMaxReadsInProgressLimit-int-">setMaxReadsInProgressLimit(int)</a></span> - Method in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/ServerConfiguration.html" title="class in org.apache.bookkeeper.conf">ServerConfiguration</a></dt>
 <dd>
@@ -13646,7 +13662,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/LedgerMetadataUtils.html#shouldStoreCtime-org.apache.bookkeeper.client.api.LedgerMetadata-">shouldStoreCtime(LedgerMetadata)</a></span> - Static method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/LedgerMetadataUtils.html" title="class in org.apache.bookkeeper.client">LedgerMetadataUtils</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask(DistributionSchedule.WriteSet, int, int)</a></span> - Static method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask(DistributionSchedule.WriteSet, int, int)</a></span> - Static method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>
 <div class="block">Shuffle all the entries of an array that matches a mask.</div>
 </dd>
@@ -14196,7 +14212,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/stats/prometheus/DataSketchesOpStatsLogger.html#toOpStatsData--">toOpStatsData()</a></span> - Method in class org.apache.bookkeeper.stats.prometheus.<a href="org/apache/bookkeeper/stats/prometheus/DataSketchesOpStatsLogger.html" title="class in org.apache.bookkeeper.stats.prometheus">DataSketchesOpStatsLogger</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#topology">topology</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#topology">topology</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>&nbsp;</dd>
@@ -14204,6 +14220,12 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.BookieNode</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
+<dd>
+<div class="block">Decorator for any existing dsn resolver.</div>
+</dd>
 <dt><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</span></a> - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
@@ -14394,7 +14416,9 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/UpdateLedgerOp.html#UpdateLedgerOp-org.apache.bookkeeper.client.BookKeeper-org.apache.bookkeeper.client.BookKeeperAdmin-">UpdateLedgerOp(BookKeeper, BookKeeperAdmin)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client">UpdateLedgerOp</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#updateMap-java.util.Map-">updateMap(Map&lt;T, WeightedRandomSelection.WeightedObject&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#updateMap-java.util.Map-">updateMap(Map&lt;T, WeightedRandomSelection.WeightedObject&gt;)</a></span> - Method in interface org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#updateMap-java.util.Map-">updateMap(Map&lt;T, WeightedRandomSelection.WeightedObject&gt;)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/ExplicitLacFlushPolicy.ExplicitLacFlushPolicyImpl.html#updatePiggyBackedLac-long-">updatePiggyBackedLac(long)</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ExplicitLacFlushPolicy.ExplicitLacFlushPolicyImpl.html" title="class in org.apache.bookkeeper.client">ExplicitLacFlushPolicy.ExplicitLacFlushPolicyImpl</a></dt>
 <dd>&nbsp;</dd>
@@ -14410,7 +14434,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/conf/ClientConfiguration.html#USE_V2_WIRE_PROTOCOL">USE_V2_WIRE_PROTOCOL</a></span> - Static variable in class org.apache.bookkeeper.conf.<a href="org/apache/bookkeeper/conf/ClientConfiguration.html" title="class in org.apache.bookkeeper.conf">ClientConfiguration</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#useHostName--">useHostName()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#useHostName--">useHostName()</a></span> - Method in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/ClientInternalConf.html#useV2WireProtocol">useV2WireProtocol</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ClientInternalConf.html" title="class in org.apache.bookkeeper.client">ClientInternalConf</a></dt>
 <dd>&nbsp;</dd>
@@ -14544,13 +14568,17 @@ the order they are declared.</div>
 <dd>
 <div class="block">Notify when the available list of bookies changes.</div>
 </dd>
-<dt><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection</span></a>&lt;<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt; - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
+<dt><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection</span></a>&lt;<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt; - Interface in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection.WeightedObject</span></a> - Interface in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#WeightedRandomSelection--">WeightedRandomSelection()</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelectionImpl</span></a>&lt;<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt; - Class in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelection.html#WeightedRandomSelection-int-">WeightedRandomSelection(int)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#WeightedRandomSelectionImpl--">WeightedRandomSelectionImpl()</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection.WeightedObject</span></a> - Interface in <a href="org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#WeightedRandomSelectionImpl-int-">WeightedRandomSelectionImpl(int)</a></span> - Constructor for class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#weightedSelection">weightedSelection</a></span> - Variable in class org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/bookkeeper/client/api/CreateBuilder.html#withAckQuorumSize-int-">withAckQuorumSize(int)</a></span> - Method in interface org.apache.bookkeeper.client.api.<a href="org/apache/bookkeeper/client/api/CreateBuilder.html" title="interface in org.apache.bookkeeper.client.api">CreateBuilder</a></dt>
 <dd>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackChangeNotifier.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackChangeNotifier.html
index 8d363f7..e35e834 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackChangeNotifier.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackChangeNotifier.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -184,7 +184,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html
index f663ffa..fa43ea0 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -148,18 +148,11 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 </a>
 <h3>Nested Class Summary</h3>
 <ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
 <!--   -->
 </a>
 <h3>Nested classes/interfaces inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a>, <a href="../../../../o [...]
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembl [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy">
@@ -199,7 +192,14 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesJoinedCounter">bookiesJoinedCounter</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesLeftCounter">bookiesLeftCounter</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#dnsResolver">dnsResolver</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.h [...]
+<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#enforceDurability">enforceDurability</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#enforceMinNumRacksPerWriteQuorum">enforceMinNumRacksPerWriteQuorum</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a>, <a href="../.. [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPoli [...]
 </ul>
 </li>
 </ul>
@@ -364,7 +364,14 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#addDefaultRackBookiesIfMinNumRacksIsEnforced-java.util.Set-">addDefaultRackBookiesIfMinNumRacksIsEnforced</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#convertBookiesToNodes-java.util.Collection-">convertBookiesToNodes</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#createBookieNode-org.apache [...]
+<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#addDefaultRackBookiesIfMinNumRacksIsEnforced-java.util.Set-">addDefaultRackBookiesIfMinNumRacksIsEnforced</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#convertBookiesToNodes-java.util.Collection-">convertBookiesToNodes</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#createBookieNode-org.apache [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#getNetworkLocations-java.util.Set-">getNetworkLocations</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -864,7 +871,7 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html
index d41a358..33a5c4d 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":9,"i26":10,"i27":10,"i28":10};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/RackChangeNotifier.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" target="_top">Frames</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -141,29 +141,12 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <!--   -->
 </a>
 <h3>Nested Class Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
-<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></span></code>
-<div class="block">Decorator for any existing dsn resolver.</div>
-</td>
-</tr>
-</table>
 <ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
 <!--   -->
 </a>
 <h3>Nested classes/interfaces inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a>, <a href="../../../../o [...]
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembl [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy">
@@ -194,85 +177,61 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesLeftCounter">bookiesLeftCounter</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected org.apache.bookkeeper.net.DNSToSwitchMapping</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#dnsResolver">dnsResolver</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#enforceDurability">enforceDurability</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#enforceMinNumRacksPerWriteQuorum">enforceMinNumRacksPerWriteQuorum</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#ignoreLocalNodeInPlacementPolicy">ignoreLocalNodeInPlacementPolicy</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#isWeighted">isWeighted</a></span></code>&nbsp;</td>
-</tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#knownBookies">knownBookies</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#LOCAL_FAIL_MASK">LOCAL_FAIL_MASK</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#LOCAL_MASK">LOCAL_MASK</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#localNode">localNode</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#MASK_BITS">MASK_BITS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#maxWeightMultiple">maxWeightMultiple</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#minNumRacksPerWriteQuorum">minNumRacksPerWriteQuorum</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/Gauge.html" title="interface in org.apache.bookkeeper.stats">Gauge</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#numWritableBookiesInDefaultRack">numWritableBookiesInDefaultRack</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#RACKNAME_DISTANCE_FROM_LEAVES">RACKNAME_DISTANCE_FROM_LEAVES</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#READ_ONLY_MASK">READ_ONLY_MASK</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected com.google.common.collect.ImmutableSet&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#readOnlyBookies">readOnlyBookies</a></span></code>&nbsp;</td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#readReorderedCounter">readReorderedCounter</a></span></code>&nbsp;</td>
@@ -302,38 +261,37 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#REPP_RANDOM_READ_REORDERING">REPP_RANDOM_READ_REORDERING</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#rwLock">rwLock</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#SLOW_MASK">SLOW_MASK</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected com.google.common.cache.Cache&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#slowBookies">slowBookies</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#stabilizePeriodSeconds">stabilizePeriodSeconds</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#statsLogger">statsLogger</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected io.netty.util.HashedWheelTimer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#timer">timer</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected org.apache.bookkeeper.net.NetworkTopology</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#topology">topology</a></span></code>&nbsp;</td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#UNAVAIL_MASK">UNAVAIL_MASK</a></span></code>&nbsp;</td>
 </tr>
 </table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPoli [...]
+</ul>
 </li>
 </ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -363,7 +321,7 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd [...]
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
@@ -576,26 +534,18 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
                     <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble)</code>&nbsp;</td>
 </tr>
 <tr id="i25" class="rowColor">
-<td class="colFirst"><code>(package private) static void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask</a></span>(<a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a>&nbsp;writeSet,
-               int&nbsp;mask,
-               int&nbsp;bits)</code>
-<div class="block">Shuffle all the entries of an array that matches a mask.</div>
-</td>
-</tr>
-<tr id="i26" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#uninitalize--">uninitalize</a></span>()</code>
 <div class="block">Uninitialize the policy.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#updateBookieInfo-java.util.Map-">updateBookieInfo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="../../../../org/apache/bookkeeper/client/BookieInfoReader.BookieInfo.html" title="class in [...]
 <div class="block">Send the bookie info details.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#withDefaultRack-java.lang.String-">withDefaultRack</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rack)</code>&nbsp;</td>
 </tr>
@@ -605,7 +555,7 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#reorderReadLACSequence-java.util.List-org.apache.bookkeeper.client.BookiesHealthInfo-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-">reorderReadLACSequence</a></code></li>
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#getNetworkLocations-java.util.Set-">getNetworkLocations</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#reorderReadLACSequence-java.util.List-org.apache.bookkeeper.client.BookiesHealthInfo-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-">reorderReadLACSequence</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnse [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -644,15 +594,6 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <pre>static final&nbsp;org.slf4j.Logger LOG</pre>
 </li>
 </ul>
-<a name="isWeighted">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isWeighted</h4>
-<pre>boolean isWeighted</pre>
-</li>
-</ul>
 <a name="maxWeightMultiple">
 <!--   -->
 </a>
@@ -832,24 +773,6 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 </dl>
 </li>
 </ul>
-<a name="topology">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>topology</h4>
-<pre>protected&nbsp;org.apache.bookkeeper.net.NetworkTopology topology</pre>
-</li>
-</ul>
-<a name="dnsResolver">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>dnsResolver</h4>
-<pre>protected&nbsp;org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver</pre>
-</li>
-</ul>
 <a name="timer">
 <!--   -->
 </a>
@@ -859,15 +782,6 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <pre>protected&nbsp;io.netty.util.HashedWheelTimer timer</pre>
 </li>
 </ul>
-<a name="knownBookies">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>knownBookies</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt; knownBookies</pre>
-</li>
-</ul>
 <a name="slowBookies">
 <!--   -->
 </a>
@@ -886,24 +800,6 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <pre>protected&nbsp;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a> localNode</pre>
 </li>
 </ul>
-<a name="rwLock">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>rwLock</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> rwLock</pre>
-</li>
-</ul>
-<a name="readOnlyBookies">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>readOnlyBookies</h4>
-<pre>protected&nbsp;com.google.common.collect.ImmutableSet&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt; readOnlyBookies</pre>
-</li>
-</ul>
 <a name="reorderReadsRandom">
 <!--   -->
 </a>
@@ -949,28 +845,6 @@ extends <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembleP
 <pre>protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a> statsLogger</pre>
 </li>
 </ul>
-<a name="bookiesJoinedCounter">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>bookiesJoinedCounter</h4>
-<pre><a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#name--">name</a>="BOOKIES_JOINED",
-          <a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#help--">help</a>="The distribution of number of bookies joined the cluster on each network topology change")
-protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a> bookiesJoinedCounter</pre>
-</li>
-</ul>
-<a name="bookiesLeftCounter">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>bookiesLeftCounter</h4>
-<pre><a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#name--">name</a>="BOOKIES_LEFT",
-          <a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#help--">help</a>="The distribution of number of bookies left the cluster on each network topology change")
-protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a> bookiesLeftCounter</pre>
-</li>
-</ul>
 <a name="readReorderedCounter">
 <!--   -->
 </a>
@@ -1045,6 +919,10 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 <li class="blockList">
 <h4>createBookieNode</h4>
 <pre>protected&nbsp;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&nbsp;createBookieNode(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#createBookieNode-org.apache.bookkeeper.net.BookieSocketAddress-">createBookieNode</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd>
+</dl>
 </li>
 </ul>
 <a name="initialize-org.apache.bookkeeper.net.DNSToSwitchMapping-io.netty.util.HashedWheelTimer-boolean-int-int-boolean-int-int-boolean-boolean-org.apache.bookkeeper.stats.StatsLogger-">
@@ -1132,6 +1010,10 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 <li class="blockList">
 <h4>resolveNetworkLocation</h4>
 <pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resolveNetworkLocation(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#resolveNetworkLocation-org.apache.bookkeeper.net.BookieSocketAddress-">resolveNetworkLocation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd>
+</dl>
 </li>
 </ul>
 <a name="onBookieRackChange-java.util.List-">
@@ -1161,6 +1043,10 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
  org.apache.bookkeeper.net.BookieSocketAddress, java.util.Set) </code>
  can choose proper bookies.</div>
 <dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#onClusterChanged-java.util.Set-java.util.Set-">onClusterChanged</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#onClusterChanged-java.util.Set-java.util.Set-">onClusterChanged</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>writableBookies</code> - All the bookies in the cluster available for write/read.</dd>
 <dd><code>readOnlyBookies</code> - All the bookies in the cluster available for readonly.</dd>
@@ -1179,6 +1065,10 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div>
 <div class="block">Handle bookies that left.</div>
 <dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.ht [...]
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>leftBookies</code> - bookies that left</dd>
 </dl>
@@ -1194,6 +1084,10 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div>
 <div class="block">Handle bookies that joined.</div>
 <dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNod [...]
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>joinedBookies</code> - bookies that joined.</dd>
 </dl>
@@ -1581,19 +1475,6 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 </dl>
 </li>
 </ul>
-<a name="shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>shuffleWithMask</h4>
-<pre>static&nbsp;void&nbsp;shuffleWithMask(<a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a>&nbsp;writeSet,
-                            int&nbsp;mask,
-                            int&nbsp;bits)</pre>
-<div class="block">Shuffle all the entries of an array that matches a mask.
- It assumes all entries with the same mask are contiguous in the array.</div>
-</li>
-</ul>
 <a name="isEnsembleAdheringToPlacementPolicy-java.util.List-int-int-">
 <!--   -->
 </a>
@@ -1648,7 +1529,7 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/RackChangeNotifier.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" target="_top">Frames</a></li>
@@ -1672,7 +1553,7 @@ protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Gauge.html" titl
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html
index e066e1e..b9e2ec9 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -148,18 +148,11 @@ extends <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlace
 </a>
 <h3>Nested Class Summary</h3>
 <ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></code></li>
-</ul>
-<ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
 <!--   -->
 </a>
 <h3>Nested classes/interfaces inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a>, <a href="../../../../o [...]
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsembl [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy">
@@ -290,7 +283,14 @@ extends <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlace
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesJoinedCounter">bookiesJoinedCounter</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesLeftCounter">bookiesLeftCounter</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#dnsResolver">dnsResolver</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.h [...]
+<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#enforceDurability">enforceDurability</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#enforceMinNumRacksPerWriteQuorum">enforceMinNumRacksPerWriteQuorum</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a>, <a href="../.. [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPoli [...]
 </ul>
 </li>
 </ul>
@@ -430,7 +430,14 @@ extends <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlace
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#addDefaultRackBookiesIfMinNumRacksIsEnforced-java.util.Set-">addDefaultRackBookiesIfMinNumRacksIsEnforced</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#convertBookiesToNodes-java.util.Collection-">convertBookiesToNodes</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#createBookieNode-org.apache [...]
+<code><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#addDefaultRackBookiesIfMinNumRacksIsEnforced-java.util.Set-">addDefaultRackBookiesIfMinNumRacksIsEnforced</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#convertBookiesToNodes-java.util.Collection-">convertBookiesToNodes</a>, <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#createBookieNode-org.apache [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3>
+<code><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#getNetworkLocations-java.util.Set-">getNetworkLocations</a>, <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -1070,7 +1077,7 @@ extends <a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlace
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html
index ad06204..a6e805e 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" target="_top">Frames</a></li>
@@ -317,7 +317,7 @@ extends org.apache.bookkeeper.net.NodeBase</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" target="_top">Frames</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html
similarity index 55%
copy from content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
copy to content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html
index 27c6504..f1046da 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
@@ -40,7 +40,7 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html">Use</a></li>
+<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../index-all.html">Index</a></li>
@@ -49,12 +49,12 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">Frames</a></li>
-<li><a href="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -93,14 +93,14 @@ var activeTableTab = "activeTableTab";
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
 <div class="subTitle">org.apache.bookkeeper.client</div>
-<h2 title="Class TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints" class="title">Class TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</h2>
+<h2 title="Class TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator" class="title">Class TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</h2>
 </div>
 <div class="contentContainer">
 <ul class="inheritance">
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</li>
+<li>org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</li>
 </ul>
 </li>
 </ul>
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</dd>
+<dd>org.apache.bookkeeper.net.DNSToSwitchMapping</dd>
 </dl>
 <dl>
 <dt>Enclosing class:</dt>
@@ -117,9 +117,11 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static class <span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</span>
+<pre>static class <span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</span>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</pre>
+implements org.apache.bookkeeper.net.DNSToSwitchMapping</pre>
+<div class="block">Decorator for any existing dsn resolver.
+ Backfills returned data with appropriate default rack info.</div>
 </li>
 </ul>
 </div>
@@ -139,12 +141,16 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#EMPTY_LIST">EMPTY_LIST</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#defaultRackSupplier">defaultRackSupplier</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#INSTANCE">INSTANCE</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>(package private) <a href="../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) org.apache.bookkeeper.net.DNSToSwitchMapping</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#resolver">resolver</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -158,12 +164,12 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
-<th class="colFirst" scope="col">Modifier</th>
-<th class="colLast" scope="col">Constructor and Description</th>
+<th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#EnsembleForReplacementWithNoConstraints--">EnsembleForReplacementWithNoConstraints</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#DNSResolverDecorator-org.apache.bookkeeper.net.DNSToSwitchMapping-java.util.function.Supplier-org.apache.bookkeeper.stats.Counter-">DNSResolverDecorator</a></span>(org.apache.bookkeeper.net.DNSToSwitchMapping&nbsp;resolver,
+                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;defaultRackSupplier,
+                    <a href="../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a>&nbsp;failedToResolveNetworkLocationCounter)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -181,20 +187,25 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#addNode-org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.BookieNode-">addNode</a></span>(<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</ [...]
-<div class="block">Append the new bookie node to the ensemble only if the ensemble doesnt
- already contain the same bookie.</div>
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#reloadCachedMappings--">reloadCachedMappings</a></span>()</code>
+<div class="block">Reload all of the cached mappings.</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#toList--">toList</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#resolve-java.util.List-">resolve</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</ [...]
+<div class="block">Resolves a list of DNS-names/IP-addresses and returns back a list of
+ switch information (network paths).</div>
+</td>
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#validate--">validate</a></span>()</code>
-<div class="block">Validates if an ensemble is valid.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#useHostName--">useHostName</a></span>()</code>
+<div class="block">Hints what to use with implementation when InetSocketAddress is converted
+ to String:
+ hostname (addr.getHostName(), default)
+ or IP address (addr.getAddress().getHostAddress()).</div>
 </td>
 </tr>
 </table>
@@ -219,22 +230,33 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="INSTANCE">
+<a name="defaultRackSupplier">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>INSTANCE</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a> INSTANCE</pre>
+<h4>defaultRackSupplier</h4>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; defaultRackSupplier</pre>
 </li>
 </ul>
-<a name="EMPTY_LIST">
+<a name="resolver">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>resolver</h4>
+<pre>final&nbsp;org.apache.bookkeeper.net.DNSToSwitchMapping resolver</pre>
+</li>
+</ul>
+<a name="failedToResolveNetworkLocationCounter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>EMPTY_LIST</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt; EMPTY_LIST</pre>
+<h4>failedToResolveNetworkLocationCounter</h4>
+<pre><a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#name--">name</a>="FAILED_TO_RESOLVE_NETWORK_LOCATION_COUNTER",
+          <a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#help--">help</a>="total number of times Resolver failed to resolve rack information of a node")
+final&nbsp;<a href="../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a> failedToResolveNetworkLocationCounter</pre>
 </li>
 </ul>
 </li>
@@ -245,13 +267,15 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="EnsembleForReplacementWithNoConstraints--">
+<a name="DNSResolverDecorator-org.apache.bookkeeper.net.DNSToSwitchMapping-java.util.function.Supplier-org.apache.bookkeeper.stats.Counter-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>EnsembleForReplacementWithNoConstraints</h4>
-<pre>protected&nbsp;EnsembleForReplacementWithNoConstraints()</pre>
+<h4>DNSResolverDecorator</h4>
+<pre>DNSResolverDecorator(org.apache.bookkeeper.net.DNSToSwitchMapping&nbsp;resolver,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;defaultRackSupplier,
+                     <a href="../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a>&nbsp;failedToResolveNetworkLocationCounter)</pre>
 </li>
 </ul>
 </li>
@@ -262,54 +286,73 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="addNode-org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.BookieNode-">
+<a name="resolve-java.util.List-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>addNode</h4>
-<pre>public&nbsp;boolean&nbsp;addNode(<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&nbsp;node)</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#addNode-T-">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a></code></span></div>
-<div class="block">Append the new bookie node to the ensemble only if the ensemble doesnt
- already contain the same bookie.</div>
+<h4>resolve</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;resolve(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/j [...]
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></span></div>
+<div class="block">Resolves a list of DNS-names/IP-addresses and returns back a list of
+ switch information (network paths). One-to-one correspondence must be
+ maintained between the elements in the lists.
+ Consider an element in the argument list - x.y.com. The switch information
+ that is returned must be a network path of the form /foo/rack,
+ where / is the root, and 'foo' is the switch where 'rack' is connected.
+ Note the hostname/ip-address is not part of the returned path.
+ The network topology of the cluster would determine the number of
+ components in the network path.
+
+ <p>If a name cannot be resolved to a rack, the implementation
+ should return <code>NetworkTopology.DEFAULT_REGION_AND_RACK</code>. This
+ is what the bundled implementations do, though it is not a formal requirement</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#addNode-T-">addNode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="cl [...]
+<dd><code>resolve</code>&nbsp;in interface&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>node</code> - new candidate bookie node.</dd>
+<dd><code>names</code> - the list of hosts to resolve (can be empty)</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if the node was added</dd>
+<dd>list of resolved network paths.
+ If <i>names</i> is empty, the returned list is also empty</dd>
 </dl>
 </li>
 </ul>
-<a name="toList--">
+<a name="useHostName--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>toList</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;toList()</pre>
+<h4>useHostName</h4>
+<pre>public&nbsp;boolean&nbsp;useHostName()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></span></div>
+<div class="block">Hints what to use with implementation when InetSocketAddress is converted
+ to String:
+ hostname (addr.getHostName(), default)
+ or IP address (addr.getAddress().getHostAddress()).</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#toList--">toList</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class [...]
+<dd><code>useHostName</code>&nbsp;in interface&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>list of addresses representing the ensemble</dd>
+<dd>true if hostname, false if IP address. Default is true.</dd>
 </dl>
 </li>
 </ul>
-<a name="validate--">
+<a name="reloadCachedMappings--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>validate</h4>
-<pre>public&nbsp;boolean&nbsp;validate()</pre>
-<div class="block">Validates if an ensemble is valid.</div>
+<h4>reloadCachedMappings</h4>
+<pre>public&nbsp;void&nbsp;reloadCachedMappings()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></span></div>
+<div class="block">Reload all of the cached mappings.
+
+ <p>If there is a cache, this method will clear it, so that future accesses
+ will get a chance to see the new data.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#validate--">validate</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="c [...]
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if the ensemble is valid; false otherwise</dd>
+<dd><code>reloadCachedMappings</code>&nbsp;in interface&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></dd>
 </dl>
 </li>
 </ul>
@@ -332,7 +375,7 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <li><a href="../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html">Use</a></li>
+<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../index-all.html">Index</a></li>
@@ -341,12 +384,12 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">Frames</a></li>
-<li><a href="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html
similarity index 57%
copy from content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
copy to content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html
index 27c6504..f1c0536 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>TopologyAwareEnsemblePlacementPolicy.DefaultResolver (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../script.js"></script>
 </head>
@@ -12,13 +12,13 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="TopologyAwareEnsemblePlacementPolicy.DefaultResolver (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -40,7 +40,7 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html">Use</a></li>
+<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../index-all.html">Index</a></li>
@@ -50,11 +50,11 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">Frames</a></li>
-<li><a href="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -93,14 +93,14 @@ var activeTableTab = "activeTableTab";
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
 <div class="subTitle">org.apache.bookkeeper.client</div>
-<h2 title="Class TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints" class="title">Class TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</h2>
+<h2 title="Class TopologyAwareEnsemblePlacementPolicy.DefaultResolver" class="title">Class TopologyAwareEnsemblePlacementPolicy.DefaultResolver</h2>
 </div>
 <div class="contentContainer">
 <ul class="inheritance">
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</li>
+<li>org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DefaultResolver</li>
 </ul>
 </li>
 </ul>
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</dd>
+<dd>org.apache.bookkeeper.net.DNSToSwitchMapping</dd>
 </dl>
 <dl>
 <dt>Enclosing class:</dt>
@@ -117,9 +117,9 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static class <span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</span>
+<pre>static class <span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</span>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</pre>
+implements org.apache.bookkeeper.net.DNSToSwitchMapping</pre>
 </li>
 </ul>
 </div>
@@ -139,12 +139,8 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#EMPTY_LIST">EMPTY_LIST</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#INSTANCE">INSTANCE</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#defaultRackSupplier">defaultRackSupplier</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -158,12 +154,10 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
-<th class="colFirst" scope="col">Modifier</th>
-<th class="colLast" scope="col">Constructor and Description</th>
+<th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#EnsembleForReplacementWithNoConstraints--">EnsembleForReplacementWithNoConstraints</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#DefaultResolver-java.util.function.Supplier-">DefaultResolver</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" [...]
 </tr>
 </table>
 </li>
@@ -181,20 +175,16 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#addNode-org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.BookieNode-">addNode</a></span>(<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</ [...]
-<div class="block">Append the new bookie node to the ensemble only if the ensemble doesnt
- already contain the same bookie.</div>
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#reloadCachedMappings--">reloadCachedMappings</a></span>()</code>
+<div class="block">Reload all of the cached mappings.</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#toList--">toList</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html#validate--">validate</a></span>()</code>
-<div class="block">Validates if an ensemble is valid.</div>
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html#resolve-java.util.List-">resolve</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt [...]
+<div class="block">Resolves a list of DNS-names/IP-addresses and returns back a list of
+ switch information (network paths).</div>
 </td>
 </tr>
 </table>
@@ -205,6 +195,13 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
 <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
 </ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.bookkeeper.net.DNSToSwitchMapping">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.bookkeeper.net.DNSToSwitchMapping</h3>
+<code>useHostName</code></li>
+</ul>
 </li>
 </ul>
 </li>
@@ -219,22 +216,13 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="INSTANCE">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>INSTANCE</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a> INSTANCE</pre>
-</li>
-</ul>
-<a name="EMPTY_LIST">
+<a name="defaultRackSupplier">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>EMPTY_LIST</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt; EMPTY_LIST</pre>
+<h4>defaultRackSupplier</h4>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; defaultRackSupplier</pre>
 </li>
 </ul>
 </li>
@@ -245,13 +233,13 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="EnsembleForReplacementWithNoConstraints--">
+<a name="DefaultResolver-java.util.function.Supplier-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>EnsembleForReplacementWithNoConstraints</h4>
-<pre>protected&nbsp;EnsembleForReplacementWithNoConstraints()</pre>
+<h4>DefaultResolver</h4>
+<pre>public&nbsp;DefaultResolver(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;defaultRackSupplier)</pre>
 </li>
 </ul>
 </li>
@@ -262,54 +250,53 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="addNode-org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.BookieNode-">
+<a name="resolve-java.util.List-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>addNode</h4>
-<pre>public&nbsp;boolean&nbsp;addNode(<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&nbsp;node)</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#addNode-T-">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a></code></span></div>
-<div class="block">Append the new bookie node to the ensemble only if the ensemble doesnt
- already contain the same bookie.</div>
+<h4>resolve</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;resolve(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/j [...]
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></span></div>
+<div class="block">Resolves a list of DNS-names/IP-addresses and returns back a list of
+ switch information (network paths). One-to-one correspondence must be
+ maintained between the elements in the lists.
+ Consider an element in the argument list - x.y.com. The switch information
+ that is returned must be a network path of the form /foo/rack,
+ where / is the root, and 'foo' is the switch where 'rack' is connected.
+ Note the hostname/ip-address is not part of the returned path.
+ The network topology of the cluster would determine the number of
+ components in the network path.
+
+ <p>If a name cannot be resolved to a rack, the implementation
+ should return <code>NetworkTopology.DEFAULT_REGION_AND_RACK</code>. This
+ is what the bundled implementations do, though it is not a formal requirement</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#addNode-T-">addNode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="cl [...]
+<dd><code>resolve</code>&nbsp;in interface&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>node</code> - new candidate bookie node.</dd>
+<dd><code>names</code> - the list of hosts to resolve (can be empty)</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if the node was added</dd>
+<dd>list of resolved network paths.
+ If <i>names</i> is empty, the returned list is also empty</dd>
 </dl>
 </li>
 </ul>
-<a name="toList--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>toList</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;toList()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#toList--">toList</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class [...]
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>list of addresses representing the ensemble</dd>
-</dl>
-</li>
-</ul>
-<a name="validate--">
+<a name="reloadCachedMappings--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>validate</h4>
-<pre>public&nbsp;boolean&nbsp;validate()</pre>
-<div class="block">Validates if an ensemble is valid.</div>
+<h4>reloadCachedMappings</h4>
+<pre>public&nbsp;void&nbsp;reloadCachedMappings()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></span></div>
+<div class="block">Reload all of the cached mappings.
+
+ <p>If there is a cache, this method will clear it, so that future accesses
+ will get a chance to see the new data.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html#validate--">validate</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="c [...]
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if the ensemble is valid; false otherwise</dd>
+<dd><code>reloadCachedMappings</code>&nbsp;in interface&nbsp;<code>org.apache.bookkeeper.net.DNSToSwitchMapping</code></dd>
 </dl>
 </li>
 </ul>
@@ -332,7 +319,7 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <li><a href="../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html">Use</a></li>
+<li><a href="class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../index-all.html">Index</a></li>
@@ -342,11 +329,11 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">Frames</a></li>
-<li><a href="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../index.html?org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
index 27c6504..f510f88 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -341,7 +341,7 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html
index a3a145a..0d8afea 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -143,6 +143,16 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></span></code>
+<div class="block">Decorator for any existing dsn resolver.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected static class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></span></code>&nbsp;</td>
 </tr>
@@ -187,9 +197,49 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in [...]
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.bookkeeper.net.DNSToSwitchMapping</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#dnsResolver">dnsResolver</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#isWeighted">isWeighted</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#knownBookies">knownBookies</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected com.google.common.collect.ImmutableSet&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#readOnlyBookies">readOnlyBookies</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#rwLock">rwLock</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.bookkeeper.net.NetworkTopology</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#topology">topology</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#weightedSelection">weightedSelection</a></span></code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -217,12 +267,40 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd [...]
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#createBookieNode-org.apache.bookkeeper.net.BookieSocketAddress-">createBookieNode</a></span>(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#getNetworkLocations-java.util.Set-">getNetworkLocations</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;bookieNodes)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;joinedBookies)</code>
+<div class="block">Handle bookies that joined.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;leftBookies)</code>
+<div class="block">Handle bookies that left.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#onClusterChanged-java.util.Set-java.util.Set-">onClusterChanged</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;writableBookies,
+                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;readOnlyBookies)</code>
+<div class="block">A consistent view of the cluster (what bookies are available as writable, what bookies are available as
+ readonly) is updated when any changes happen in the cluster.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#reorderReadLACSequence-java.util.List-org.apache.bookkeeper.client.BookiesHealthInfo-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-">reorderReadLACSequence</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.ne [...]
                       <a href="../../../../org/apache/bookkeeper/client/BookiesHealthInfo.html" title="interface in org.apache.bookkeeper.client">BookiesHealthInfo</a>&nbsp;bookiesHealthInfo,
@@ -230,7 +308,7 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <div class="block">Reorder the read last add confirmed sequence of a given write quorum <i>writeSet</i>.</div>
 </td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#reorderReadSequence-java.util.List-org.apache.bookkeeper.client.BookiesHealthInfo-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-">reorderReadSequence</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.Book [...]
                    <a href="../../../../org/apache/bookkeeper/client/BookiesHealthInfo.html" title="interface in org.apache.bookkeeper.client">BookiesHealthInfo</a>&nbsp;bookiesHealthInfo,
@@ -238,6 +316,18 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <div class="block">Reorder the read sequence of a given write quorum <i>writeSet</i>.</div>
 </td>
 </tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#resolveNetworkLocation-org.apache.bookkeeper.net.BookieSocketAddress-">resolveNetworkLocation</a></span>(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>(package private) static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask</a></span>(<a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a>&nbsp;writeSet,
+               int&nbsp;mask,
+               int&nbsp;bits)</code>
+<div class="block">Shuffle all the entries of an array that matches a mask.</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -251,14 +341,14 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Methods inherited from interface&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined</a>, <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft</a>, <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#newEnsemble-int-int-int-java.util.Set-org.apache.bookkeeper.client.ITopol [...]
+<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#newEnsemble-int-int-int-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-">newEnsemble</a>, <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#selectFromNetworkLocation-java.util.Set-java.util.Set-org.apache.bookkeeper.client.ITopolo [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.bookkeeper.client.EnsemblePlacementPolicy">
 <!--   -->
 </a>
 <h3>Methods inherited from interface&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></h3>
-<code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#getStickyReadBookieIndex-org.apache.bookkeeper.client.api.LedgerMetadata-java.util.Optional-">getStickyReadBookieIndex</a>, <a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#initialize-org.apache.bookkeeper.conf.ClientConfiguration-java.util.Optional-io.netty.util.HashedWheelTimer-org.apache.bookkeeper.feature.FeatureProvider-org.apache.bookkeeper.stats.StatsLogger-">initiali [...]
+<code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#getStickyReadBookieIndex-org.apache.bookkeeper.client.api.LedgerMetadata-java.util.Optional-">getStickyReadBookieIndex</a>, <a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#initialize-org.apache.bookkeeper.conf.ClientConfiguration-java.util.Optional-io.netty.util.HashedWheelTimer-org.apache.bookkeeper.feature.FeatureProvider-org.apache.bookkeeper.stats.StatsLogger-">initiali [...]
 </ul>
 </li>
 </ul>
@@ -277,12 +367,106 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <a name="LOG">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
 <pre>static final&nbsp;org.slf4j.Logger LOG</pre>
 </li>
 </ul>
+<a name="knownBookies">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>knownBookies</h4>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt; knownBookies</pre>
+</li>
+</ul>
+<a name="rwLock">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>rwLock</h4>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> rwLock</pre>
+</li>
+</ul>
+<a name="bookieInfoMap">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bookieInfoMap</h4>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookk [...]
+</li>
+</ul>
+<a name="readOnlyBookies">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>readOnlyBookies</h4>
+<pre>protected&nbsp;com.google.common.collect.ImmutableSet&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt; readOnlyBookies</pre>
+</li>
+</ul>
+<a name="isWeighted">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isWeighted</h4>
+<pre>boolean isWeighted</pre>
+</li>
+</ul>
+<a name="weightedSelection">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>weightedSelection</h4>
+<pre>protected&nbsp;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt; weightedSelection</pre>
+</li>
+</ul>
+<a name="topology">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>topology</h4>
+<pre>protected&nbsp;org.apache.bookkeeper.net.NetworkTopology topology</pre>
+</li>
+</ul>
+<a name="dnsResolver">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>dnsResolver</h4>
+<pre>protected&nbsp;org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver</pre>
+</li>
+</ul>
+<a name="bookiesJoinedCounter">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bookiesJoinedCounter</h4>
+<pre><a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#name--">name</a>="BOOKIES_JOINED",
+          <a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#help--">help</a>="The distribution of number of bookies joined the cluster on each network topology change")
+protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a> bookiesJoinedCounter</pre>
+</li>
+</ul>
+<a name="bookiesLeftCounter">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>bookiesLeftCounter</h4>
+<pre><a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#name--">name</a>="BOOKIES_LEFT",
+          <a href="../../../../org/apache/bookkeeper/stats/annotations/StatsDoc.html#help--">help</a>="The distribution of number of bookies left the cluster on each network topology change")
+protected&nbsp;<a href="../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a> bookiesLeftCounter</pre>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -308,6 +492,28 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="getNetworkLocations-java.util.Set-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getNetworkLocations</h4>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;getNetworkLocations(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net. [...]
+</li>
+</ul>
+<a name="shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>shuffleWithMask</h4>
+<pre>static&nbsp;void&nbsp;shuffleWithMask(<a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a>&nbsp;writeSet,
+                            int&nbsp;mask,
+                            int&nbsp;bits)</pre>
+<div class="block">Shuffle all the entries of an array that matches a mask.
+ It assumes all entries with the same mask are contiguous in the array.</div>
+</li>
+</ul>
 <a name="reorderReadSequence-java.util.List-org.apache.bookkeeper.client.BookiesHealthInfo-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-">
 <!--   -->
 </a>
@@ -336,7 +542,7 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 <a name="reorderReadLACSequence-java.util.List-org.apache.bookkeeper.client.BookiesHealthInfo-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>reorderReadLACSequence</h4>
 <pre>public&nbsp;<a href="../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a>&nbsp;reorderReadLACSequence(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;ensemble,
@@ -358,6 +564,86 @@ implements <a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsem
 </dl>
 </li>
 </ul>
+<a name="onClusterChanged-java.util.Set-java.util.Set-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onClusterChanged</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;onClusterChanged(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;writableBookies,
+                                                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;readOnlyBookies)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#onClusterChanged-java.util.Set-java.util.Set-">EnsemblePlacementPolicy</a></code></span></div>
+<div class="block">A consistent view of the cluster (what bookies are available as writable, what bookies are available as
+ readonly) is updated when any changes happen in the cluster.
+
+ <p>The implementation should take actions when the cluster view is changed. So subsequent
+ <a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#newEnsemble-int-int-int-java.util.Map-java.util.Set-"><code>EnsemblePlacementPolicy.newEnsemble(int, int, int, Map, Set)</code></a> and
+ <code>#replaceBookie(int, int, int, java.util.Map, java.util.Set,
+ org.apache.bookkeeper.net.BookieSocketAddress, java.util.Set) </code>
+ can choose proper bookies.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html#onClusterChanged-java.util.Set-java.util.Set-">onClusterChanged</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>writableBookies</code> - All the bookies in the cluster available for write/read.</dd>
+<dd><code>readOnlyBookies</code> - All the bookies in the cluster available for readonly.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the dead bookies during this cluster change.</dd>
+</dl>
+</li>
+</ul>
+<a name="handleBookiesThatLeft-java.util.Set-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>handleBookiesThatLeft</h4>
+<pre>public&nbsp;void&nbsp;handleBookiesThatLeft(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;leftBookies)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div>
+<div class="block">Handle bookies that left.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft-java.util.Set-">handleBookiesThatLeft</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.ht [...]
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>leftBookies</code> - bookies that left</dd>
+</dl>
+</li>
+</ul>
+<a name="handleBookiesThatJoined-java.util.Set-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>handleBookiesThatJoined</h4>
+<pre>public&nbsp;void&nbsp;handleBookiesThatJoined(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress&gt;&nbsp;joinedBookies)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div>
+<div class="block">Handle bookies that joined.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined-java.util.Set-">handleBookiesThatJoined</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a>&lt;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNod [...]
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>joinedBookies</code> - bookies that joined.</dd>
+</dl>
+</li>
+</ul>
+<a name="createBookieNode-org.apache.bookkeeper.net.BookieSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createBookieNode</h4>
+<pre>protected&nbsp;<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&nbsp;createBookieNode(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</pre>
+</li>
+</ul>
+<a name="resolveNetworkLocation-org.apache.bookkeeper.net.BookieSocketAddress-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>resolveNetworkLocation</h4>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resolveNetworkLocation(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/UpdateLedgerOp.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/UpdateLedgerOp.html
index 61d7cd3..a8cff50 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/UpdateLedgerOp.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/UpdateLedgerOp.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/UpdateLedgerOp.html" target="_top">Frames</a></li>
@@ -256,7 +256,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/UpdateLedgerOp.html" target="_top">Frames</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html
index b8ca29b..20373be 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html
@@ -49,8 +49,8 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" target="_top">Frames</a></li>
@@ -104,12 +104,12 @@ var activeTableTab = "activeTableTab";
 <dd><a href="../../../../org/apache/bookkeeper/client/BookieInfoReader.BookieInfo.html" title="class in org.apache.bookkeeper.client">BookieInfoReader.BookieInfo</a></dd>
 </dl>
 <dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt;</dd>
+<dt>Enclosing interface:</dt>
+<dd><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt;</dd>
 </dl>
 <hr>
 <br>
-<pre>static interface <span class="typeNameLabel">WeightedRandomSelection.WeightedObject</span></pre>
+<pre>public static interface <span class="typeNameLabel">WeightedRandomSelection.WeightedObject</span></pre>
 </li>
 </ul>
 </div>
@@ -184,8 +184,8 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" target="_top">Frames</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html
index 39b50c2..0dd01d8 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -75,14 +75,14 @@ var activeTableTab = "activeTableTab";
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
 </div>
@@ -93,24 +93,19 @@ var activeTableTab = "activeTableTab";
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
 <div class="subTitle">org.apache.bookkeeper.client</div>
-<h2 title="Class WeightedRandomSelection" class="title">Class WeightedRandomSelection&lt;T&gt;</h2>
+<h2 title="Interface WeightedRandomSelection" class="title">Interface WeightedRandomSelection&lt;T&gt;</h2>
 </div>
 <div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.bookkeeper.client.WeightedRandomSelection&lt;T&gt;</li>
-</ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a></dd>
+</dl>
 <hr>
 <br>
-<pre>class <span class="typeNameLabel">WeightedRandomSelection&lt;T&gt;</span>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<pre>interface <span class="typeNameLabel">WeightedRandomSelection&lt;T&gt;</span></pre>
 </li>
 </ul>
 </div>
@@ -127,74 +122,15 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
+<th class="colLast" scope="col">Interface and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) static interface&nbsp;</code></td>
+<td class="colFirst"><code>static interface&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
 </ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#cummulativeMap">cummulativeMap</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) static org.slf4j.Logger</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#LOG">LOG</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.Wei [...]
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#map">map</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#maxProbabilityMultiplier">maxProbabilityMultiplier</a></span></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#randomMax">randomMax</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#rwLock">rwLock</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#WeightedRandomSelection--">WeightedRandomSelection</a></span>()</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#WeightedRandomSelection-int-">WeightedRandomSelection</a></span>(int&nbsp;maxMultiplier)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
 <!-- ========== METHOD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="method.summary">
@@ -202,31 +138,28 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>(package private) <a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a></code></td>
+<td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom--">getNextRandom</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom-java.util.Collection-">getNextRandom</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt;&nbs [...]
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier</a></span>(int&nbsp;max)</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>(package private) void</code></td>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#updateMap-java.util.Map-">updateMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/book [...]
 </tr>
 </table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
-</ul>
 </li>
 </ul>
 </li>
@@ -235,125 +168,46 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="details">
 <ul class="blockList">
 <li class="blockList">
-<!-- ============ FIELD DETAIL =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.detail">
-<!--   -->
-</a>
-<h3>Field Detail</h3>
-<a name="LOG">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>LOG</h4>
-<pre>static final&nbsp;org.slf4j.Logger LOG</pre>
-</li>
-</ul>
-<a name="randomMax">
-<!--   -->
-</a>
+<!-- ============ METHOD DETAIL ========== -->
 <ul class="blockList">
-<li class="blockList">
-<h4>randomMax</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> randomMax</pre>
-</li>
-</ul>
-<a name="maxProbabilityMultiplier">
+<li class="blockList"><a name="method.detail">
 <!--   -->
 </a>
-<ul class="blockList">
-<li class="blockList">
-<h4>maxProbabilityMultiplier</h4>
-<pre>int maxProbabilityMultiplier</pre>
-</li>
-</ul>
-<a name="map">
+<h3>Method Detail</h3>
+<a name="updateMap-java.util.Map-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>map</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&gt; map</pre>
+<h4>updateMap</h4>
+<pre>void&nbsp;updateMap(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&gt;& [...]
 </li>
 </ul>
-<a name="cummulativeMap">
+<a name="getNextRandom--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>cummulativeMap</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt; cummulativeMap</pre>
-</li>
-</ul>
-<a name="rwLock">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>rwLock</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> rwLock</pre>
-</li>
-</ul>
+<h4>getNextRandom</h4>
+<pre><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&nbsp;getNextRandom()</pre>
 </li>
 </ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="WeightedRandomSelection--">
+<a name="getNextRandom-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>WeightedRandomSelection</h4>
-<pre>WeightedRandomSelection()</pre>
-</li>
-</ul>
-<a name="WeightedRandomSelection-int-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>WeightedRandomSelection</h4>
-<pre>WeightedRandomSelection(int&nbsp;maxMultiplier)</pre>
-</li>
-</ul>
+<h4>getNextRandom</h4>
+<pre><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&nbsp;getNextRandom(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt;&nbsp;selectedNodes)</pre>
 </li>
 </ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
 <a name="setMaxProbabilityMultiplier-int-">
 <!--   -->
 </a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setMaxProbabilityMultiplier</h4>
-<pre>public&nbsp;void&nbsp;setMaxProbabilityMultiplier(int&nbsp;max)</pre>
-</li>
-</ul>
-<a name="updateMap-java.util.Map-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>updateMap</h4>
-<pre>void&nbsp;updateMap(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&gt;& [...]
-</li>
-</ul>
-<a name="getNextRandom--">
-<!--   -->
-</a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getNextRandom</h4>
-<pre><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&nbsp;getNextRandom()</pre>
+<h4>setMaxProbabilityMultiplier</h4>
+<pre>void&nbsp;setMaxProbabilityMultiplier(int&nbsp;max)</pre>
 </li>
 </ul>
 </li>
@@ -410,14 +264,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
 <ul class="subNavList">
 <li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
 </div>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html
similarity index 64%
copy from content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html
copy to content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html
index 39b50c2..0e54b18 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelection.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>WeightedRandomSelectionImpl (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../script.js"></script>
 </head>
@@ -12,13 +12,13 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="WeightedRandomSelectionImpl (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -40,7 +40,7 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/WeightedRandomSelection.html">Use</a></li>
+<li><a href="class-use/WeightedRandomSelectionImpl.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../index-all.html">Index</a></li>
@@ -49,12 +49,12 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../index.html?org/apache/bookkeeper/client/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../index.html?org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" target="_top">Frames</a></li>
+<li><a href="WeightedRandomSelectionImpl.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -93,24 +93,29 @@ var activeTableTab = "activeTableTab";
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
 <div class="subTitle">org.apache.bookkeeper.client</div>
-<h2 title="Class WeightedRandomSelection" class="title">Class WeightedRandomSelection&lt;T&gt;</h2>
+<h2 title="Class WeightedRandomSelectionImpl" class="title">Class WeightedRandomSelectionImpl&lt;T&gt;</h2>
 </div>
 <div class="contentContainer">
 <ul class="inheritance">
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.bookkeeper.client.WeightedRandomSelection&lt;T&gt;</li>
+<li>org.apache.bookkeeper.client.WeightedRandomSelectionImpl&lt;T&gt;</li>
 </ul>
 </li>
 </ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;T&gt;</dd>
+</dl>
 <hr>
 <br>
-<pre>class <span class="typeNameLabel">WeightedRandomSelection&lt;T&gt;</span>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<pre>class <span class="typeNameLabel">WeightedRandomSelectionImpl&lt;T&gt;</span>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;T&gt;</pre>
 </li>
 </ul>
 </div>
@@ -123,17 +128,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Nested Class Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
-<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static interface&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a></span></code>&nbsp;</td>
-</tr>
-</table>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.bookkeeper.client.WeightedRandomSelection">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></h3>
+<code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a></code></li>
+</ul>
 </li>
 </ul>
 <!-- =========== FIELD SUMMARY =========== -->
@@ -149,28 +150,28 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#cummulativeMap">cummulativeMap</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#cummulativeMap">cummulativeMap</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static org.slf4j.Logger</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#LOG">LOG</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.Wei [...]
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#map">map</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelec [...]
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#map">map</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#maxProbabilityMultiplier">maxProbabilityMultiplier</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#maxProbabilityMultiplier">maxProbabilityMultiplier</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#randomMax">randomMax</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#randomMax">randomMax</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#rwLock">rwLock</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#rwLock">rwLock</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -187,10 +188,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#WeightedRandomSelection--">WeightedRandomSelection</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#WeightedRandomSelectionImpl--">WeightedRandomSelectionImpl</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#WeightedRandomSelection-int-">WeightedRandomSelection</a></span>(int&nbsp;maxMultiplier)</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#WeightedRandomSelectionImpl-int-">WeightedRandomSelectionImpl</a></span>(int&nbsp;maxMultiplier)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -208,16 +209,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>(package private) <a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom--">getNextRandom</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#getNextRandom--">getNextRandom</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier</a></span>(int&nbsp;max)</code>&nbsp;</td>
+<td class="colFirst"><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#getNextRandom-java.util.Collection-">getNextRandom</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T [...]
 </tr>
 <tr id="i2" class="altColor">
-<td class="colFirst"><code>(package private) void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#updateMap-java.util.Map-">updateMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/book [...]
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier</a></span>(int&nbsp;max)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#updateMap-java.util.Map-">updateMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>,<a href="../../../../org [...]
 </tr>
 </table>
 <ul class="blockList">
@@ -274,7 +279,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>map</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&gt; map</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&gt; map</pre>
 </li>
 </ul>
 <a name="cummulativeMap">
@@ -283,7 +288,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cummulativeMap</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&gt; cummulativeMap</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt; cummulativeMap</pre>
 </li>
 </ul>
 <a name="rwLock">
@@ -303,22 +308,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="WeightedRandomSelection--">
+<a name="WeightedRandomSelectionImpl--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>WeightedRandomSelection</h4>
-<pre>WeightedRandomSelection()</pre>
+<h4>WeightedRandomSelectionImpl</h4>
+<pre>WeightedRandomSelectionImpl()</pre>
 </li>
 </ul>
-<a name="WeightedRandomSelection-int-">
+<a name="WeightedRandomSelectionImpl-int-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>WeightedRandomSelection</h4>
-<pre>WeightedRandomSelection(int&nbsp;maxMultiplier)</pre>
+<h4>WeightedRandomSelectionImpl</h4>
+<pre>WeightedRandomSelectionImpl(int&nbsp;maxMultiplier)</pre>
 </li>
 </ul>
 </li>
@@ -329,31 +334,56 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="setMaxProbabilityMultiplier-int-">
+<a name="updateMap-java.util.Map-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMaxProbabilityMultiplier</h4>
-<pre>public&nbsp;void&nbsp;setMaxProbabilityMultiplier(int&nbsp;max)</pre>
+<h4>updateMap</h4>
+<pre>public&nbsp;void&nbsp;updateMap(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.Wei [...]
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#updateMap-java.util.Map-">updateMap</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt;</code></dd>
+</dl>
 </li>
 </ul>
-<a name="updateMap-java.util.Map-">
+<a name="getNextRandom--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>updateMap</h4>
-<pre>void&nbsp;updateMap(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&gt;& [...]
+<h4>getNextRandom</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&nbsp;getNextRandom()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom--">getNextRandom</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt;</code></dd>
+</dl>
 </li>
 </ul>
-<a name="getNextRandom--">
+<a name="setMaxProbabilityMultiplier-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxProbabilityMultiplier</h4>
+<pre>public&nbsp;void&nbsp;setMaxProbabilityMultiplier(int&nbsp;max)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#setMaxProbabilityMultiplier-int-">setMaxProbabilityMultiplier</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T< [...]
+</dl>
+</li>
+</ul>
+<a name="getNextRandom-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextRandom</h4>
-<pre><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>&nbsp;getNextRandom()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&nbsp;getNextRandom(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt;&nbsp;select [...]
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#getNextRandom-java.util.Collection-">getNextRandom</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>&gt;</co [...]
+</dl>
 </li>
 </ul>
 </li>
@@ -375,7 +405,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li><a href="../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/WeightedRandomSelection.html">Use</a></li>
+<li><a href="class-use/WeightedRandomSelectionImpl.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../index-all.html">Index</a></li>
@@ -384,12 +414,12 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../index.html?org/apache/bookkeeper/client/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../index.html?org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" target="_top">Frames</a></li>
+<li><a href="WeightedRandomSelectionImpl.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -409,7 +439,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/DistributionSchedule.WriteSet.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/DistributionSchedule.WriteSet.html
index 1ec54a2..7f24d2d 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/DistributionSchedule.WriteSet.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/DistributionSchedule.WriteSet.html
@@ -340,7 +340,7 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) static void</code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask</a></span>(<a href="../../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedul [...]
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#shuffleWithMask-org.apache.bookkeeper.client.DistributionSchedule.WriteSet-int-int-">shuffleWithMask</a></span>(<a href="../../../../../org/apache/bookkeeper/client/DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedul [...]
                int&nbsp;mask,
                int&nbsp;bits)</code>
 <div class="block">Shuffle all the entries of an array that matches a mask.</div>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.BookieNode.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.BookieNode.html
index 051f07a..c03b1cc 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.BookieNode.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.BookieNode.html
@@ -118,21 +118,29 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>,<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interf [...]
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html#chosenNodes">chosenNodes</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.bookkeeper.net.BookieSocketAddress,<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#knownBookies">knownBookies</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#knownBookies">knownBookies</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html#parentEnsemble">parentEnsemble</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html#parentPredicate">parentPredicate</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#weightedSelection">weightedSelection</a></span></code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
@@ -148,13 +156,17 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#createBookieNode-org.apache.bookkeeper.net.BookieSocketAddress-">createBookieNode</a></span>(org.apache.bookkeeper.net.BookieSocketAddress&nbsp;addr)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RegionAwareEnsemblePlacementPolicy.html#replaceFromRack-org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.BookieNode-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">repl [...]
                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;excludeBookies,
                <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;predicate,
                <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble,
                boolean&nbsp;enforceDurability)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#selectFromNetworkLocation-java.util.Set-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">selectFromNetworkLocation</a></span>(<a href="https:/ [...]
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;excludeBookies,
@@ -165,7 +177,7 @@
  <i>excludeBookies</i> set.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html#selectFromNetworkLocation-java.util.Set-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">selectFromNetworkLocation</a></span>(<a href="https://docs.or [...]
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;excludeBookies,
@@ -173,7 +185,7 @@
                          <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble,
                          boolean&nbsp;fallbackToRandom)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#selectFromNetworkLocation-java.lang.String-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">selectFromNetworkLocation</a></span>(<a href="http [...]
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;excludeBookies,
@@ -181,7 +193,7 @@
                          <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble,
                          boolean&nbsp;fallbackToRandom)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html#selectFromNetworkLocation-java.lang.String-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">selectFromNetworkLocation</a></span>(<a href="https://docs [...]
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;excludeBookies,
@@ -189,7 +201,7 @@
                          <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble,
                          boolean&nbsp;fallbackToRandom)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#selectFromNetworkLocation-java.lang.String-java.util.Set-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">selectFromNetworkLocation</a></span> [...]
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;excludeRacks,
@@ -198,7 +210,7 @@
                          <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble,
                          boolean&nbsp;fallbackToRandom)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicy.html#selectFromNetworkLocation-java.lang.String-java.util.Set-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-boolean-">selectFromNetworkLocation</a></span>(<a href [...]
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;excludeRacks,
@@ -207,7 +219,7 @@
                          <a href="../../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;&nbsp;ensemble,
                          boolean&nbsp;fallbackToRandom)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#selectRandomFromRack-java.lang.String-java.util.Set-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate-org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble-">selectRandomFromRack</a></span>(<a href="https://docs.oracle.co [...]
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.apache.bookkeeper.net.Node&gt;&nbsp;excludeBookies,
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html
similarity index 72%
copy from content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
copy to content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html
index 157c79b..f15c080 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="Uses of Class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
@@ -33,7 +33,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -47,8 +47,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -70,9 +70,9 @@
 </a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
 <div class="header">
-<h2 title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection" class="title">Uses of Class<br>org.apache.bookkeeper.client.WeightedRandomSelection</h2>
+<h2 title="Uses of Class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator" class="title">Uses of Class<br>org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.bookkeeper.client.WeightedRandomSelection</div>
+<div class="classUseContainer">No usage of org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->
@@ -84,7 +84,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -98,8 +98,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html
similarity index 73%
copy from content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
copy to content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html
index 157c79b..060f60f 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DefaultResolver (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="Uses of Class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DefaultResolver (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
@@ -33,7 +33,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -47,8 +47,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -70,9 +70,9 @@
 </a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
 <div class="header">
-<h2 title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection" class="title">Uses of Class<br>org.apache.bookkeeper.client.WeightedRandomSelection</h2>
+<h2 title="Uses of Class org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DefaultResolver" class="title">Uses of Class<br>org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DefaultResolver</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.bookkeeper.client.WeightedRandomSelection</div>
+<div class="classUseContainer">No usage of org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy.DefaultResolver</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->
@@ -84,7 +84,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -98,8 +98,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">Frames</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.WeightedObject.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.WeightedObject.html
index 2e9c5d8..4da40de 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.WeightedObject.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.WeightedObject.html
@@ -120,8 +120,12 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in WeightedRandomSelection">T</a>,<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelecti [...]
-<td class="colLast"><span class="typeNameLabel">WeightedRandomSelection.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#map">map</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>,<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interf [...]
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type parameter in WeightedRandomSelectionImpl">T</a>,<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRando [...]
+<td class="colLast"><span class="typeNameLabel">WeightedRandomSelectionImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#map">map</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -133,9 +137,13 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) void</code></td>
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">WeightedRandomSelection.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html#updateMap-java.util.Map-">updateMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="type parameter in We [...]
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">WeightedRandomSelectionImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html#updateMap-java.util.Map-">updateMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="type par [...]
+</tr>
 </tbody>
 </table>
 </li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
index 157c79b..2378ad9 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>Uses of Interface org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="Uses of Interface org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
@@ -33,7 +33,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -70,9 +70,64 @@
 </a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
 <div class="header">
-<h2 title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection" class="title">Uses of Class<br>org.apache.bookkeeper.client.WeightedRandomSelection</h2>
+<h2 title="Uses of Interface org.apache.bookkeeper.client.WeightedRandomSelection" class="title">Uses of Interface<br>org.apache.bookkeeper.client.WeightedRandomSelection</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.bookkeeper.client">org.apache.bookkeeper.client</a></td>
+<td class="colLast">
+<div class="block">BookKeeper Client.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.bookkeeper.client">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a> in <a href="../../../../../org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a> that implement <a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a>&lt;T&gt;</span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../org/apache/bookkeeper/client/package-summary.html">org.apache.bookkeeper.client</a> declared as <a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;<a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.BookieNode</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#weightedSelection">weightedSelection</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
 </div>
-<div class="classUseContainer">No usage of org.apache.bookkeeper.client.WeightedRandomSelection</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->
@@ -84,7 +139,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelectionImpl.html
similarity index 82%
copy from content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
copy to content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelectionImpl.html
index 157c79b..d98617b 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/class-use/WeightedRandomSelectionImpl.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.bookkeeper.client.WeightedRandomSelectionImpl (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
+            parent.document.title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelectionImpl (Apache BookKeeper :: Parent 4.10.0-SNAPSHOT API)";
         }
     }
     catch(err) {
@@ -33,7 +33,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -47,8 +47,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelectionImpl.html" target="_top">Frames</a></li>
+<li><a href="WeightedRandomSelectionImpl.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -70,9 +70,9 @@
 </a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
 <div class="header">
-<h2 title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelection" class="title">Uses of Class<br>org.apache.bookkeeper.client.WeightedRandomSelection</h2>
+<h2 title="Uses of Class org.apache.bookkeeper.client.WeightedRandomSelectionImpl" class="title">Uses of Class<br>org.apache.bookkeeper.client.WeightedRandomSelectionImpl</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.bookkeeper.client.WeightedRandomSelection</div>
+<div class="classUseContainer">No usage of org.apache.bookkeeper.client.WeightedRandomSelectionImpl</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->
@@ -84,7 +84,7 @@
 <ul class="navList" title="Navigation">
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">Class</a></li>
+<li><a href="../../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">Class</a></li>
 <li class="navBarCell1Rev">Use</li>
 <li><a href="../package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
@@ -98,8 +98,8 @@
 <li>Next</li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html" target="_top">Frames</a></li>
-<li><a href="WeightedRandomSelection.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/bookkeeper/client/class-use/WeightedRandomSelectionImpl.html" target="_top">Frames</a></li>
+<li><a href="WeightedRandomSelectionImpl.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-frame.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-frame.html
index 393e82b..1ecf58d 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-frame.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-frame.html
@@ -51,6 +51,7 @@
 <li><a href="SpeculativeRequestExecutionPolicy.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">SpeculativeRequestExecutionPolicy</span></a></li>
 <li><a href="SpeculativeRequestExecutor.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">SpeculativeRequestExecutor</span></a></li>
 <li><a href="TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet</span></a></li>
+<li><a href="WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">WeightedRandomSelection</span></a></li>
 <li><a href="WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client" target="classFrame"><span class="interfaceName">WeightedRandomSelection.WeightedObject</span></a></li>
 </ul>
 <h2 title="Classes">Classes</h2>
@@ -101,8 +102,6 @@
 <li><a href="PendingWriteLacOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">PendingWriteLacOp</a></li>
 <li><a href="RackawareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicy</a></li>
 <li><a href="RackawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicyImpl</a></li>
-<li><a href="RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></li>
-<li><a href="RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client" target="classFrame">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></li>
 <li><a href="ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">ReadLastConfirmedAndEntryOp</a></li>
 <li><a href="ReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">ReadLastConfirmedOp</a></li>
 <li><a href="ReadOnlyLedgerHandle.html" title="class in org.apache.bookkeeper.client" target="classFrame">ReadOnlyLedgerHandle</a></li>
@@ -123,12 +122,14 @@
 <li><a href="SyncCounter.html" title="class in org.apache.bookkeeper.client" target="classFrame">SyncCounter</a></li>
 <li><a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy</a></li>
 <li><a href="TopologyAwareEnsemblePlacementPolicy.BookieNode.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.BookieNode</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></li>
+<li><a href="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></li>
 <li><a href="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></li>
 <li><a href="TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</a></li>
 <li><a href="TopologyAwareEnsemblePlacementPolicy.TruePredicate.html" title="class in org.apache.bookkeeper.client" target="classFrame">TopologyAwareEnsemblePlacementPolicy.TruePredicate</a></li>
 <li><a href="TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">TryReadLastConfirmedOp</a></li>
 <li><a href="UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client" target="classFrame">UpdateLedgerOp</a></li>
-<li><a href="WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client" target="classFrame">WeightedRandomSelection</a></li>
+<li><a href="WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client" target="classFrame">WeightedRandomSelectionImpl</a></li>
 </ul>
 <h2 title="Enums">Enums</h2>
 <ul title="Enums">
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-summary.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-summary.html
index e0360f0..72c4319 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-summary.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-summary.html
@@ -308,6 +308,10 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;T&gt;</td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -585,16 +589,6 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</a></td>
-<td class="colLast">
-<div class="block">Decorator for any existing dsn resolver.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client">ReadLastConfirmedAndEntryOp</a></td>
 <td class="colLast">
 <div class="block">Long poll read operation.</div>
@@ -690,6 +684,16 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a></td>
+<td class="colLast">
+<div class="block">Decorator for any existing dsn resolver.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -717,7 +721,7 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;T&gt;</td>
+<td class="colFirst"><a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client">WeightedRandomSelectionImpl</a>&lt;T&gt;</td>
 <td class="colLast">&nbsp;</td>
 </tr>
 </tbody>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-tree.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-tree.html
index ae6128b..788228b 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-tree.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-tree.html
@@ -158,8 +158,6 @@
 </ul>
 </li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/PendingWriteLacOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">PendingWriteLacOp</span></a> (implements org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.WriteLacCallback)</li>
-<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
-<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">ReadLastConfirmedAndEntryOp</span></a> (implements org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.ReadEntryCallback, org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/SpeculativeRequestExecutor.html" title="interface in org.apache.bookkeeper.client"> [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.ReadLACAndEntryRequest.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">ReadLastConfirmedAndEntryOp.ReadLACAndEntryRequest</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>)
 <ul>
@@ -251,6 +249,8 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
+<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</span></a> (implements org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title=" [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</span></a> (implements org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.RackOrRegionDurabilityCoverageSet.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.RackOrRegionDurabilityCoverageSet</span></a> (implements org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/Topology [...]
@@ -258,7 +258,7 @@
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.TruePredicate.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.TruePredicate</span></a> (implements org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopolog [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TryReadLastConfirmedOp</span></a> (implements org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.ReadEntryCallback)</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">UpdateLedgerOp</span></a></li>
-<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelectionImpl</span></a>&lt;T&gt; (implements org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;T&gt;)</li>
 </ul>
 </li>
 </ul>
@@ -312,6 +312,7 @@
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/SpeculativeRequestExecutionPolicy.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">SpeculativeRequestExecutionPolicy</span></a></li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/SpeculativeRequestExecutor.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">SpeculativeRequestExecutor</span></a></li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet</span></a></li>
+<li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection</span></a>&lt;T&gt;</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="../../../../org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection.WeightedObject</span></a></li>
 </ul>
 <h2 title="Enum Hierarchy">Enum Hierarchy</h2>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-use.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-use.html
index 74266cc..438f4ef 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-use.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/client/package-use.html
@@ -448,6 +448,9 @@
 <td class="colOne"><a href="../../../../org/apache/bookkeeper/client/class-use/TopologyAwareEnsemblePlacementPolicy.TruePredicate.html#org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.TruePredicate</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/bookkeeper/client/class-use/WeightedRandomSelection.html#org.apache.bookkeeper.client">WeightedRandomSelection</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/bookkeeper/client/class-use/WeightedRandomSelection.WeightedObject.html#org.apache.bookkeeper.client">WeightedRandomSelection.WeightedObject</a>&nbsp;</td>
 </tr>
 </tbody>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/annotations/class-use/StatsDoc.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/annotations/class-use/StatsDoc.html
index 10c10ba..a67680a 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/annotations/class-use/StatsDoc.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/annotations/class-use/StatsDoc.html
@@ -141,11 +141,11 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesLeftCounter">bookiesLeftCounter</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td>
@@ -153,7 +153,7 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/bookkeeper/stats/Gauge.html" title="interface in org.apache.bookkeeper.stats">Gauge</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/Counter.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/Counter.html
index a49bcea..ab18272 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/Counter.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/Counter.html
@@ -138,7 +138,7 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td>
@@ -194,7 +194,7 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html#DNSResolverDecorator-org.apache.bookkeeper.net.DNSToSwitchMapping-java.util.function.Supplier-org.apache.bookkeeper.stats.Counter-">DNSResolverDecorator</a></span>(org.apache.bookkeeper.net.DNSToSwitchMapping&nbsp;resolver,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html#DNSResolverDecorator-org.apache.bookkeeper.net.DNSToSwitchMapping-java.util.function.Supplier-org.apache.bookkeeper.stats.Counter-">DNSResolverDecorator</a></span>(org.apache.bookkeeper.net.DNSToSwitchMapping&nbsp;resolver,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;defaultRackSupplier,
                     <a href="../../../../../org/apache/bookkeeper/stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a>&nbsp;failedToResolveNetworkLocationCounter)</code>&nbsp;</td>
 </tr>
diff --git a/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/OpStatsLogger.html b/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/OpStatsLogger.html
index 313528c..0ccb1c3 100644
--- a/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/OpStatsLogger.html
+++ b/content/docs/latest/api/javadoc/org/apache/bookkeeper/stats/class-use/OpStatsLogger.html
@@ -130,11 +130,11 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RackawareEnsemblePlacementPolicyImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.html#bookiesLeftCounter">bookiesLeftCounter</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TopologyAwareEnsemblePlacementPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/bookkeeper/stats/OpStatsLogger.html" title="interface in org.apache.bookkeeper.stats">OpStatsLogger</a></code></td>
diff --git a/content/docs/latest/api/javadoc/overview-tree.html b/content/docs/latest/api/javadoc/overview-tree.html
index 2a96357..4d74c24 100644
--- a/content/docs/latest/api/javadoc/overview-tree.html
+++ b/content/docs/latest/api/javadoc/overview-tree.html
@@ -241,8 +241,6 @@
 <li type="circle">org.apache.bookkeeper.stats.prometheus.<a href="org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.html" title="class in org.apache.bookkeeper.stats.prometheus"><span class="typeNameLink">PrometheusMetricsProvider</span></a> (implements org.apache.bookkeeper.stats.<a href="org/apache/bookkeeper/stats/StatsProvider.html" title="interface in org.apache.bookkeeper.stats">StatsProvider</a>)</li>
 <li type="circle">org.apache.bookkeeper.stats.prometheus.<a href="org/apache/bookkeeper/stats/prometheus/PrometheusStatsLogger.html" title="class in org.apache.bookkeeper.stats.prometheus"><span class="typeNameLink">PrometheusStatsLogger</span></a> (implements org.apache.bookkeeper.stats.<a href="org/apache/bookkeeper/stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a>)</li>
 <li type="circle">org.apache.bookkeeper.stats.prometheus.<a href="org/apache/bookkeeper/stats/prometheus/PrometheusTextFormatUtil.html" title="class in org.apache.bookkeeper.stats.prometheus"><span class="typeNameLink">PrometheusTextFormatUtil</span></a></li>
-<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">RackawareEnsemblePlacementPolicyImpl.DefaultResolver</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
-<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">RackawareEnsemblePlacementPolicyImpl.DNSResolverDecorator</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">ReadLastConfirmedAndEntryOp</span></a> (implements org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.ReadEntryCallback, org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/SpeculativeRequestExecutor.html" title="interface in org.apache.bookkeeper.client">SpeculativeRequestExecut [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ReadLastConfirmedAndEntryOp.ReadLACAndEntryRequest.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">ReadLastConfirmedAndEntryOp.ReadLACAndEntryRequest</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>)
 <ul>
@@ -425,6 +423,8 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
+<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</span></a> (implements org.apache.bookkeeper.net.DNSToSwitchMapping)</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</span></a> (implements org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache. [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</span></a> (implements org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.clien [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.RackOrRegionDurabilityCoverageSet.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.RackOrRegionDurabilityCoverageSet</span></a> (implements org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPo [...]
@@ -432,7 +432,7 @@
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.TruePredicate.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.TruePredicate</span></a> (implements org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementP [...]
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TryReadLastConfirmedOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">TryReadLastConfirmedOp</span></a> (implements org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.ReadEntryCallback)</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/UpdateLedgerOp.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">UpdateLedgerOp</span></a></li>
-<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelectionImpl.html" title="class in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelectionImpl</span></a>&lt;T&gt; (implements org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client">WeightedRandomSelection</a>&lt;T&gt;)</li>
 </ul>
 </li>
 </ul>
@@ -543,6 +543,7 @@
 <li type="circle">org.apache.bookkeeper.stats.<a href="org/apache/bookkeeper/stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats"><span class="typeNameLink">StatsLogger</span></a></li>
 <li type="circle">org.apache.bookkeeper.stats.<a href="org/apache/bookkeeper/stats/StatsProvider.html" title="interface in org.apache.bookkeeper.stats"><span class="typeNameLink">StatsProvider</span></a></li>
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.CoverageSet</span></a></li>
+<li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection</span></a>&lt;T&gt;</li>
 <li type="circle">org.apache.bookkeeper.client.<a href="org/apache/bookkeeper/client/WeightedRandomSelection.WeightedObject.html" title="interface in org.apache.bookkeeper.client"><span class="typeNameLink">WeightedRandomSelection.WeightedObject</span></a></li>
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>