| <!DOCTYPE HTML> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc --> |
| <title>ZoneawareEnsemblePlacementPolicyImpl (Apache BookKeeper :: Parent 4.18.0-SNAPSHOT API)</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> |
| <link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.min.css" title="Style"> |
| <link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style"> |
| <script type="text/javascript" src="../../../../script.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script> |
| <!--[if IE]> |
| <script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script> |
| <![endif]--> |
| <script type="text/javascript" src="../../../../jquery/jquery-3.6.1.min.js"></script> |
| <script type="text/javascript" src="../../../../jquery/jquery-ui.min.js"></script> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| try { |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="ZoneawareEnsemblePlacementPolicyImpl (Apache BookKeeper :: Parent 4.18.0-SNAPSHOT API)"; |
| } |
| } |
| catch(err) { |
| } |
| //--> |
| var data = {"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}; |
| var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; |
| var altColor = "altColor"; |
| var rowColor = "rowColor"; |
| var tableTab = "tableTab"; |
| var activeTableTab = "activeTableTab"; |
| var pathtoroot = "../../../../"; |
| var useModuleDirectories = true; |
| loadScripts(document, 'script');</script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <header role="banner"> |
| <nav role="navigation"> |
| <div class="fixedNav"> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="topNav"><a id="navbar.top"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> |
| <a id="navbar.top.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../index.html">Overview</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="navBarCell1Rev">Class</li> |
| <li><a href="class-use/ZoneawareEnsemblePlacementPolicyImpl.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> |
| <li><a href="../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../allclasses.html">All Classes</a></li> |
| </ul> |
| <ul class="navListSearch"> |
| <li><label for="search">SEARCH:</label> |
| <input type="text" id="search" value="search" disabled="disabled"> |
| <input type="reset" id="reset" value="reset" disabled="disabled"> |
| </li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li><a href="#nested.class.summary">Nested</a> | </li> |
| <li><a href="#field.summary">Field</a> | </li> |
| <li><a href="#constructor.summary">Constr</a> | </li> |
| <li><a href="#method.summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li><a href="#field.detail">Field</a> | </li> |
| <li><a href="#constructor.detail">Constr</a> | </li> |
| <li><a href="#method.detail">Method</a></li> |
| </ul> |
| </div> |
| <a id="skip.navbar.top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| </div> |
| <div class="navPadding"> </div> |
| <script type="text/javascript"><!-- |
| $('.navPadding').css('padding-top', $('.fixedNav').css("height")); |
| //--> |
| </script> |
| </nav> |
| </header> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <main role="main"> |
| <div class="header"> |
| <div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">org.apache.bookkeeper.client</a></div> |
| <h2 title="Class ZoneawareEnsemblePlacementPolicyImpl" class="title">Class ZoneawareEnsemblePlacementPolicyImpl</h2> |
| </div> |
| <div class="contentContainer"> |
| <ul class="inheritance"> |
| <li>java.lang.Object</li> |
| <li> |
| <ul class="inheritance"> |
| <li><a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy</a></li> |
| <li> |
| <ul class="inheritance"> |
| <li>org.apache.bookkeeper.client.ZoneawareEnsemblePlacementPolicyImpl</li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <div class="description"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <dl> |
| <dt>All Implemented Interfaces:</dt> |
| <dd><code><a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></code>, <code><a href="ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>></code></dd> |
| </dl> |
| <dl> |
| <dt>Direct Known Subclasses:</dt> |
| <dd><code><a href="ZoneawareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicy</a></code></dd> |
| </dl> |
| <hr> |
| <pre>public class <span class="typeNameLabel">ZoneawareEnsemblePlacementPolicyImpl</span> |
| extends <a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></pre> |
| <div class="block">Simple zoneaware ensemble placement policy.</div> |
| </li> |
| </ul> |
| </div> |
| <div class="summary"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ======== NESTED CLASS SUMMARY ======== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="nested.class.summary"> |
| <!-- --> |
| </a> |
| <h3>Nested Class Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Nested Classes</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colSecond" scope="col">Class</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>static class </code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a></span></code></th> |
| <td class="colLast"> |
| <div class="block">Zone and UpgradeDomain pair of a node.</div> |
| </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy"> |
| <!-- --> |
| </a> |
| <h3>Nested classes/interfaces inherited from class org.apache.bookkeeper.client.<a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3> |
| <code><a href="TopologyAwareEnsemblePlacementPolicy.DefaultResolver.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DefaultResolver</a>, <a href="TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator</a>, <a href="TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints</a>, <a href="TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble</a>, <a href="TopologyAwareEnsemblePlacementPolicy.TruePredicate.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy.TruePredicate</a></code></li> |
| </ul> |
| <ul class="blockList"> |
| <li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.bookkeeper.client.EnsemblePlacementPolicy"> |
| <!-- --> |
| </a> |
| <h3>Nested classes/interfaces inherited from interface org.apache.bookkeeper.client.<a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></h3> |
| <code><a href="EnsemblePlacementPolicy.PlacementPolicyAdherence.html" title="enum in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementPolicyAdherence</a>, <a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><<a href="EnsemblePlacementPolicy.PlacementResult.html" title="type parameter in EnsemblePlacementPolicy.PlacementResult">T</a>></code></li> |
| </ul> |
| <ul class="blockList"> |
| <li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy"> |
| <!-- --> |
| </a> |
| <h3>Nested classes/interfaces inherited from interface org.apache.bookkeeper.client.<a href="ITopologyAwareEnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy</a></h3> |
| <code><a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="type parameter in ITopologyAwareEnsemblePlacementPolicy.Ensemble">T</a> extends <a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>>, <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="type parameter in ITopologyAwareEnsemblePlacementPolicy.Predicate">T</a> extends <a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>></code></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <!-- =========== FIELD SUMMARY =========== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="field.summary"> |
| <!-- --> |
| </a> |
| <h3>Field Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Fields</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colSecond" scope="col">Field</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected java.util.concurrent.ConcurrentMap<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>,​<a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#address2NodePlacement">address2NodePlacement</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected int</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#desiredNumZonesPerWriteQuorum">desiredNumZonesPerWriteQuorum</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected boolean</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enforceStrictZoneawarePlacement">enforceStrictZoneawarePlacement</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected <a href="../stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#failedToResolveNetworkLocationCounter">failedToResolveNetworkLocationCounter</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>(package private) static org.slf4j.Logger</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#LOG">LOG</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected int</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maxWeightMultiple">maxWeightMultiple</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected int</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#minNumZonesPerWriteQuorum">minNumZonesPerWriteQuorum</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected <a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#myNode">myNode</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected java.lang.String</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#myZone">myZone</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected <a href="../stats/Gauge.html" title="interface in org.apache.bookkeeper.stats">Gauge</a><java.lang.Integer></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#numWritableBookiesInDefaultFaultDomain">numWritableBookiesInDefaultFaultDomain</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected boolean</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reorderReadsRandom">reorderReadsRandom</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected int</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reorderThresholdPendingRequests">reorderThresholdPendingRequests</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected com.google.common.cache.Cache<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>,​java.lang.Long></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#slowBookies">slowBookies</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected int</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#stabilizePeriodSeconds">stabilizePeriodSeconds</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected <a href="../stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#statsLogger">statsLogger</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected io.netty.util.HashedWheelTimer</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#timer">timer</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>static java.lang.String</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#UNKNOWN_ZONE">UNKNOWN_ZONE</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected <a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unresolvedNodeLocation">unresolvedNodeLocation</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a id="fields.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy"> |
| <!-- --> |
| </a> |
| <h3>Fields inherited from class org.apache.bookkeeper.client.<a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3> |
| <code><a href="TopologyAwareEnsemblePlacementPolicy.html#bookieAddressResolver">bookieAddressResolver</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#bookieInfoMap">bookieInfoMap</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#bookiesJoinedCounter">bookiesJoinedCounter</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#bookiesLeftCounter">bookiesLeftCounter</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#dnsResolver">dnsResolver</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#historyBookies">historyBookies</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#isWeighted">isWeighted</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#knownBookies">knownBookies</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#readOnlyBookies">readOnlyBookies</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#REPP_DNS_RESOLVER_CLASS">REPP_DNS_RESOLVER_CLASS</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#rwLock">rwLock</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#topology">topology</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#weightedSelection">weightedSelection</a></code></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <!-- ======== CONSTRUCTOR SUMMARY ======== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="constructor.summary"> |
| <!-- --> |
| </a> |
| <h3>Constructor Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Constructors</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Constructor</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr class="altColor"> |
| <th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">ZoneawareEnsemblePlacementPolicyImpl</a></span>()</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| </section> |
| <!-- ========== METHOD SUMMARY =========== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="method.summary"> |
| <!-- --> |
| </a> |
| <h3>Method Summary</h3> |
| <table class="memberSummary"> |
| <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colSecond" scope="col">Method</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr id="i0" class="altColor"> |
| <td class="colFirst"><code>protected java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addDefaultFaultDomainBookies(java.util.Set)">addDefaultFaultDomainBookies</a></span>​(java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i1" class="rowColor"> |
| <td class="colFirst"><code>boolean</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#areAckedBookiesAdheringToPlacementPolicy(java.util.Set,int,int)">areAckedBookiesAdheringToPlacementPolicy</a></span>​(java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ackedBookies, |
| int writeQuorumSize, |
| int ackQuorumSize)</code></th> |
| <td class="colLast"> |
| <div class="block">Returns true if the bookies that have acknowledged a write adhere to the minimum fault domains as defined in the |
| placement policy in use.</div> |
| </td> |
| </tr> |
| <tr id="i2" class="altColor"> |
| <td class="colFirst"><code>java.lang.String</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getDefaultFaultDomain()">getDefaultFaultDomain</a></span>()</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i3" class="rowColor"> |
| <td class="colFirst"><code>protected <a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getZoneAwareNodeLocation(org.apache.bookkeeper.net.BookieId)">getZoneAwareNodeLocation</a></span>​(<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a> addr)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i4" class="altColor"> |
| <td class="colFirst"><code>protected <a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getZoneAwareNodeLocation(org.apache.bookkeeper.net.BookieNode)">getZoneAwareNodeLocation</a></span>​(<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a> node)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i5" class="rowColor"> |
| <td class="colFirst"><code><a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#initialize(org.apache.bookkeeper.conf.ClientConfiguration,java.util.Optional,io.netty.util.HashedWheelTimer,org.apache.bookkeeper.feature.FeatureProvider,org.apache.bookkeeper.stats.StatsLogger,org.apache.bookkeeper.proto.BookieAddressResolver)">initialize</a></span>​(<a href="../conf/ClientConfiguration.html" title="class in org.apache.bookkeeper.conf">ClientConfiguration</a> conf, |
| java.util.Optional<<a href="../net/DNSToSwitchMapping.html" title="interface in org.apache.bookkeeper.net">DNSToSwitchMapping</a>> optionalDnsResolver, |
| io.netty.util.HashedWheelTimer timer, |
| <a href="../feature/FeatureProvider.html" title="interface in org.apache.bookkeeper.feature">FeatureProvider</a> featureProvider, |
| <a href="../stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a> statsLogger, |
| <a href="../proto/BookieAddressResolver.html" title="interface in org.apache.bookkeeper.proto">BookieAddressResolver</a> bookieAddressResolver)</code></th> |
| <td class="colLast"> |
| <div class="block">Initialize the policy.</div> |
| </td> |
| </tr> |
| <tr id="i6" class="altColor"> |
| <td class="colFirst"><code><a href="EnsemblePlacementPolicy.PlacementPolicyAdherence.html" title="enum in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementPolicyAdherence</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isEnsembleAdheringToPlacementPolicy(java.util.List,int,int)">isEnsembleAdheringToPlacementPolicy</a></span>​(java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ensembleList, |
| int writeQuorumSize, |
| int ackQuorumSize)</code></th> |
| <td class="colLast"> |
| <div class="block">returns AdherenceLevel if the Ensemble is strictly/softly/fails adhering |
| to placement policy, like in the case of |
| RackawareEnsemblePlacementPolicy, bookies in the writeset are from |
| 'minNumRacksPerWriteQuorum' number of racks.</div> |
| </td> |
| </tr> |
| <tr id="i7" class="rowColor"> |
| <td class="colFirst"><code><a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newEnsemble(int,int,int,java.util.Map,java.util.Set)">newEnsemble</a></span>​(int ensembleSize, |
| int writeQuorumSize, |
| int ackQuorumSize, |
| java.util.Map<java.lang.String,​byte[]> customMetadata, |
| java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies)</code></th> |
| <td class="colLast"> |
| <div class="block">Choose <i>numBookies</i> bookies for ensemble.</div> |
| </td> |
| </tr> |
| <tr id="i8" class="altColor"> |
| <td class="colFirst"><code><a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newEnsemble(int,int,int,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate)">newEnsemble</a></span>​(int ensembleSize, |
| int writeQuorumSize, |
| int ackQuorumSize, |
| java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> parentEnsemble, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> parentPredicate)</code></th> |
| <td class="colLast"> |
| <div class="block">Create an ensemble with parent ensemble.</div> |
| </td> |
| </tr> |
| <tr id="i9" class="rowColor"> |
| <td class="colFirst"><code>void</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#registerSlowBookie(org.apache.bookkeeper.net.BookieId,long)">registerSlowBookie</a></span>​(<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a> bookieSocketAddress, |
| long entryId)</code></th> |
| <td class="colLast"> |
| <div class="block">Register a bookie as slow so that it is tried after available and read-only bookies.</div> |
| </td> |
| </tr> |
| <tr id="i10" class="altColor"> |
| <td class="colFirst"><code><a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reorderReadLACSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">reorderReadLACSequence</a></span>​(java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ensemble, |
| <a href="BookiesHealthInfo.html" title="interface in org.apache.bookkeeper.client">BookiesHealthInfo</a> bookiesHealthInfo, |
| <a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a> writeSet)</code></th> |
| <td class="colLast"> |
| <div class="block">Reorder the read last add confirmed sequence of a given write quorum <i>writeSet</i>.</div> |
| </td> |
| </tr> |
| <tr id="i11" class="rowColor"> |
| <td class="colFirst"><code><a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reorderReadSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">reorderReadSequence</a></span>​(java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ensemble, |
| <a href="BookiesHealthInfo.html" title="interface in org.apache.bookkeeper.client">BookiesHealthInfo</a> bookiesHealthInfo, |
| <a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a> writeSet)</code></th> |
| <td class="colLast"> |
| <div class="block">Reorder the read sequence of a given write quorum <i>writeSet</i>.</div> |
| </td> |
| </tr> |
| <tr id="i12" class="altColor"> |
| <td class="colFirst"><code><a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#replaceBookie(int,int,int,java.util.Map,java.util.List,org.apache.bookkeeper.net.BookieId,java.util.Set)">replaceBookie</a></span>​(int ensembleSize, |
| int writeQuorumSize, |
| int ackQuorumSize, |
| java.util.Map<java.lang.String,​byte[]> customMetadata, |
| java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> currentEnsemble, |
| <a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a> bookieToReplace, |
| java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies)</code></th> |
| <td class="colLast"> |
| <div class="block">Choose a new bookie to replace <i>bookieToReplace</i>.</div> |
| </td> |
| </tr> |
| <tr id="i13" class="rowColor"> |
| <td class="colFirst"><code><a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#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>​(java.lang.String networkLoc, |
| java.util.Set<java.lang.String> excludeRacks, |
| java.util.Set<<a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> predicate, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> ensemble, |
| boolean fallbackToRandom)</code></th> |
| <td class="colLast"> |
| <div class="block">Select a node from networkLoc rack excluding excludeBookies.</div> |
| </td> |
| </tr> |
| <tr id="i14" class="altColor"> |
| <td class="colFirst"><code><a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#selectFromNetworkLocation(java.lang.String,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)">selectFromNetworkLocation</a></span>​(java.lang.String networkLoc, |
| java.util.Set<<a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> predicate, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> ensemble, |
| boolean fallbackToRandom)</code></th> |
| <td class="colLast"> |
| <div class="block">Select a node from a given network location.</div> |
| </td> |
| </tr> |
| <tr id="i15" class="rowColor"> |
| <td class="colFirst"><code><a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#selectFromNetworkLocation(java.util.Set,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)">selectFromNetworkLocation</a></span>​(java.util.Set<java.lang.String> excludeRacks, |
| java.util.Set<<a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> predicate, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> ensemble, |
| boolean fallbackToRandom)</code></th> |
| <td class="colLast"> |
| <div class="block">Select a node from cluster excluding excludeBookies and bookie nodes of |
| excludeRacks.</div> |
| </td> |
| </tr> |
| <tr id="i16" class="altColor"> |
| <td class="colFirst"><code>void</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#uninitalize()">uninitalize</a></span>()</code></th> |
| <td class="colLast"> |
| <div class="block">Uninitialize the policy.</div> |
| </td> |
| </tr> |
| <tr id="i17" class="rowColor"> |
| <td class="colFirst"><code><a href="ZoneawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#withDefaultFaultDomain(java.lang.String)">withDefaultFaultDomain</a></span>​(java.lang.String defaultFaultDomain)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a id="methods.inherited.from.class.org.apache.bookkeeper.client.TopologyAwareEnsemblePlacementPolicy"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from class org.apache.bookkeeper.client.<a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></h3> |
| <code><a href="TopologyAwareEnsemblePlacementPolicy.html#convertBookiesToNodes(java.util.Collection)">convertBookiesToNodes</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#convertBookieToNode(org.apache.bookkeeper.net.BookieId)">convertBookieToNode</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#createBookieNode(org.apache.bookkeeper.net.BookieId)">createBookieNode</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#createDummyLocalBookieNode(java.lang.String)">createDummyLocalBookieNode</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#differBetweenBookies(java.util.List,java.util.List)">differBetweenBookies</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#getNetworkLocations(java.util.Set)">getNetworkLocations</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatJoined(java.util.Set)">handleBookiesThatJoined</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#handleBookiesThatLeft(java.util.Set)">handleBookiesThatLeft</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#onBookieRackChange(java.util.List)">onBookieRackChange</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#onClusterChanged(java.util.Set,java.util.Set)">onClusterChanged</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#resolveNetworkLocation(org.apache.bookkeeper.net.BookieId)">resolveNetworkLocation</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#shuffleWithMask(org.apache.bookkeeper.client.DistributionSchedule.WriteSet,int,int)">shuffleWithMask</a>, <a href="TopologyAwareEnsemblePlacementPolicy.html#updateBookieInfo(java.util.Map)">updateBookieInfo</a></code></li> |
| </ul> |
| <ul class="blockList"> |
| <li class="blockList"><a id="methods.inherited.from.class.java.lang.Object"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from class java.lang.Object</h3> |
| <code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> |
| </ul> |
| <ul class="blockList"> |
| <li class="blockList"><a id="methods.inherited.from.class.org.apache.bookkeeper.client.EnsemblePlacementPolicy"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from interface org.apache.bookkeeper.client.<a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></h3> |
| <code><a href="EnsemblePlacementPolicy.html#getStickyReadBookieIndex(org.apache.bookkeeper.client.api.LedgerMetadata,java.util.Optional)">getStickyReadBookieIndex</a>, <a href="EnsemblePlacementPolicy.html#replaceToAdherePlacementPolicy(int,int,int,java.util.Set,java.util.List)">replaceToAdherePlacementPolicy</a></code></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </div> |
| <div class="details"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ============ FIELD DETAIL =========== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="field.detail"> |
| <!-- --> |
| </a> |
| <h3>Field Detail</h3> |
| <a id="LOG"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>LOG</h4> |
| <pre>static final org.slf4j.Logger LOG</pre> |
| </li> |
| </ul> |
| <a id="UNKNOWN_ZONE"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>UNKNOWN_ZONE</h4> |
| <pre>public static final java.lang.String UNKNOWN_ZONE</pre> |
| <dl> |
| <dt><span class="seeLabel">See Also:</span></dt> |
| <dd><a href="../../../../constant-values.html#org.apache.bookkeeper.client.ZoneawareEnsemblePlacementPolicyImpl.UNKNOWN_ZONE">Constant Field Values</a></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="unresolvedNodeLocation"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>unresolvedNodeLocation</h4> |
| <pre>protected <a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a> unresolvedNodeLocation</pre> |
| </li> |
| </ul> |
| <a id="statsLogger"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>statsLogger</h4> |
| <pre>protected <a href="../stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a> statsLogger</pre> |
| </li> |
| </ul> |
| <a id="slowBookies"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>slowBookies</h4> |
| <pre>protected com.google.common.cache.Cache<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>,​java.lang.Long> slowBookies</pre> |
| </li> |
| </ul> |
| <a id="myNode"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>myNode</h4> |
| <pre>protected <a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a> myNode</pre> |
| </li> |
| </ul> |
| <a id="myZone"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>myZone</h4> |
| <pre>protected java.lang.String myZone</pre> |
| </li> |
| </ul> |
| <a id="reorderReadsRandom"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>reorderReadsRandom</h4> |
| <pre>protected boolean reorderReadsRandom</pre> |
| </li> |
| </ul> |
| <a id="stabilizePeriodSeconds"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>stabilizePeriodSeconds</h4> |
| <pre>protected int stabilizePeriodSeconds</pre> |
| </li> |
| </ul> |
| <a id="reorderThresholdPendingRequests"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>reorderThresholdPendingRequests</h4> |
| <pre>protected int reorderThresholdPendingRequests</pre> |
| </li> |
| </ul> |
| <a id="maxWeightMultiple"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>maxWeightMultiple</h4> |
| <pre>protected int maxWeightMultiple</pre> |
| </li> |
| </ul> |
| <a id="minNumZonesPerWriteQuorum"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>minNumZonesPerWriteQuorum</h4> |
| <pre>protected int minNumZonesPerWriteQuorum</pre> |
| </li> |
| </ul> |
| <a id="desiredNumZonesPerWriteQuorum"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>desiredNumZonesPerWriteQuorum</h4> |
| <pre>protected int desiredNumZonesPerWriteQuorum</pre> |
| </li> |
| </ul> |
| <a id="enforceStrictZoneawarePlacement"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>enforceStrictZoneawarePlacement</h4> |
| <pre>protected boolean enforceStrictZoneawarePlacement</pre> |
| </li> |
| </ul> |
| <a id="timer"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>timer</h4> |
| <pre>protected io.netty.util.HashedWheelTimer timer</pre> |
| </li> |
| </ul> |
| <a id="address2NodePlacement"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>address2NodePlacement</h4> |
| <pre>protected final java.util.concurrent.ConcurrentMap<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>,​<a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a>> address2NodePlacement</pre> |
| </li> |
| </ul> |
| <a id="failedToResolveNetworkLocationCounter"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>failedToResolveNetworkLocationCounter</h4> |
| <pre><a href="../stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../stats/annotations/StatsDoc.html#name()">name</a>="FAILED_TO_RESOLVE_NETWORK_LOCATION_TOTAL", |
| <a href="../stats/annotations/StatsDoc.html#help()">help</a>="Counter for number of times DNSResolverDecorator failed to resolve Network Location") |
| protected <a href="../stats/Counter.html" title="interface in org.apache.bookkeeper.stats">Counter</a> failedToResolveNetworkLocationCounter</pre> |
| </li> |
| </ul> |
| <a id="numWritableBookiesInDefaultFaultDomain"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>numWritableBookiesInDefaultFaultDomain</h4> |
| <pre><a href="../stats/annotations/StatsDoc.html" title="annotation in org.apache.bookkeeper.stats.annotations">@StatsDoc</a>(<a href="../stats/annotations/StatsDoc.html#name()">name</a>="NUM_WRITABLE_BOOKIES_IN_DEFAULT_FAULTDOMAIN", |
| <a href="../stats/annotations/StatsDoc.html#help()">help</a>="Gauge for the number of writable Bookies in default fault domain") |
| protected <a href="../stats/Gauge.html" title="interface in org.apache.bookkeeper.stats">Gauge</a><java.lang.Integer> numWritableBookiesInDefaultFaultDomain</pre> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="constructor.detail"> |
| <!-- --> |
| </a> |
| <h3>Constructor Detail</h3> |
| <a id="<init>()"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>ZoneawareEnsemblePlacementPolicyImpl</h4> |
| <pre>ZoneawareEnsemblePlacementPolicyImpl()</pre> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <!-- ============ METHOD DETAIL ========== --> |
| <section> |
| <ul class="blockList"> |
| <li class="blockList"><a id="method.detail"> |
| <!-- --> |
| </a> |
| <h3>Method Detail</h3> |
| <a id="getZoneAwareNodeLocation(org.apache.bookkeeper.net.BookieId)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getZoneAwareNodeLocation</h4> |
| <pre class="methodSignature">protected <a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a> getZoneAwareNodeLocation​(<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a> addr)</pre> |
| </li> |
| </ul> |
| <a id="getZoneAwareNodeLocation(org.apache.bookkeeper.net.BookieNode)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getZoneAwareNodeLocation</h4> |
| <pre class="methodSignature">protected <a href="ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl.ZoneAwareNodeLocation</a> getZoneAwareNodeLocation​(<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a> node)</pre> |
| </li> |
| </ul> |
| <a id="initialize(org.apache.bookkeeper.conf.ClientConfiguration,java.util.Optional,io.netty.util.HashedWheelTimer,org.apache.bookkeeper.feature.FeatureProvider,org.apache.bookkeeper.stats.StatsLogger,org.apache.bookkeeper.proto.BookieAddressResolver)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>initialize</h4> |
| <pre class="methodSignature">public <a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a> initialize​(<a href="../conf/ClientConfiguration.html" title="class in org.apache.bookkeeper.conf">ClientConfiguration</a> conf, |
| java.util.Optional<<a href="../net/DNSToSwitchMapping.html" title="interface in org.apache.bookkeeper.net">DNSToSwitchMapping</a>> optionalDnsResolver, |
| io.netty.util.HashedWheelTimer timer, |
| <a href="../feature/FeatureProvider.html" title="interface in org.apache.bookkeeper.feature">FeatureProvider</a> featureProvider, |
| <a href="../stats/StatsLogger.html" title="interface in org.apache.bookkeeper.stats">StatsLogger</a> statsLogger, |
| <a href="../proto/BookieAddressResolver.html" title="interface in org.apache.bookkeeper.proto">BookieAddressResolver</a> bookieAddressResolver)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="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,org.apache.bookkeeper.proto.BookieAddressResolver)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Initialize the policy.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>conf</code> - client configuration</dd> |
| <dd><code>optionalDnsResolver</code> - dns resolver</dd> |
| <dd><code>timer</code> - timer</dd> |
| <dd><code>featureProvider</code> - feature provider</dd> |
| <dd><code>statsLogger</code> - stats logger</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="withDefaultFaultDomain(java.lang.String)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>withDefaultFaultDomain</h4> |
| <pre class="methodSignature">public <a href="ZoneawareEnsemblePlacementPolicyImpl.html" title="class in org.apache.bookkeeper.client">ZoneawareEnsemblePlacementPolicyImpl</a> withDefaultFaultDomain​(java.lang.String defaultFaultDomain)</pre> |
| </li> |
| </ul> |
| <a id="getDefaultFaultDomain()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getDefaultFaultDomain</h4> |
| <pre class="methodSignature">public java.lang.String getDefaultFaultDomain()</pre> |
| </li> |
| </ul> |
| <a id="newEnsemble(int,int,int,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>newEnsemble</h4> |
| <pre class="methodSignature">public <a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>>> newEnsemble​(int ensembleSize, |
| int writeQuorumSize, |
| int ackQuorumSize, |
| java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> parentEnsemble, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> parentPredicate) |
| throws <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="ITopologyAwareEnsemblePlacementPolicy.html#newEnsemble(int,int,int,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate)">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Create an ensemble with parent ensemble.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ensembleSize</code> - ensemble size</dd> |
| <dd><code>writeQuorumSize</code> - write quorum size</dd> |
| <dd><code>ackQuorumSize</code> - ack quorum size</dd> |
| <dd><code>excludeBookies</code> - exclude bookies</dd> |
| <dd><code>parentEnsemble</code> - parent ensemble</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>list of bookies forming the ensemble</dd> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="selectFromNetworkLocation(java.lang.String,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>selectFromNetworkLocation</h4> |
| <pre class="methodSignature">public <a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a> selectFromNetworkLocation​(java.lang.String networkLoc, |
| java.util.Set<<a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> predicate, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> ensemble, |
| boolean fallbackToRandom) |
| throws <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="ITopologyAwareEnsemblePlacementPolicy.html#selectFromNetworkLocation(java.lang.String,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Select a node from a given network location.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>networkLoc</code> - network location</dd> |
| <dd><code>excludeBookies</code> - exclude bookies set</dd> |
| <dd><code>predicate</code> - predicate to apply</dd> |
| <dd><code>ensemble</code> - ensemble</dd> |
| <dd><code>fallbackToRandom</code> - fallbackToRandom</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>the selected bookie.</dd> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="selectFromNetworkLocation(java.util.Set,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>selectFromNetworkLocation</h4> |
| <pre class="methodSignature">public <a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a> selectFromNetworkLocation​(java.util.Set<java.lang.String> excludeRacks, |
| java.util.Set<<a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> predicate, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> ensemble, |
| boolean fallbackToRandom) |
| throws <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="ITopologyAwareEnsemblePlacementPolicy.html#selectFromNetworkLocation(java.util.Set,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Select a node from cluster excluding excludeBookies and bookie nodes of |
| excludeRacks. If there isn't a BookieNode excluding those racks and |
| nodes, then if fallbackToRandom is set to true then pick a random node |
| from cluster just excluding excludeBookies.</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="selectFromNetworkLocation(java.lang.String,java.util.Set,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>selectFromNetworkLocation</h4> |
| <pre class="methodSignature">public <a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a> selectFromNetworkLocation​(java.lang.String networkLoc, |
| java.util.Set<java.lang.String> excludeRacks, |
| java.util.Set<<a href="../net/Node.html" title="interface in org.apache.bookkeeper.net">Node</a>> excludeBookies, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Predicate.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Predicate</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> predicate, |
| <a href="ITopologyAwareEnsemblePlacementPolicy.Ensemble.html" title="interface in org.apache.bookkeeper.client">ITopologyAwareEnsemblePlacementPolicy.Ensemble</a><<a href="../net/BookieNode.html" title="class in org.apache.bookkeeper.net">BookieNode</a>> ensemble, |
| boolean fallbackToRandom) |
| throws <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="ITopologyAwareEnsemblePlacementPolicy.html#selectFromNetworkLocation(java.lang.String,java.util.Set,java.util.Set,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate,org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble,boolean)">ITopologyAwareEnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Select a node from networkLoc rack excluding excludeBookies. If there |
| isn't any node in 'networkLoc', then it will try to get a node from |
| cluster excluding excludeRacks and excludeBookies. If fallbackToRandom is |
| set to true then it will get a random bookie from cluster excluding |
| excludeBookies if it couldn't find a bookie</div> |
| <dl> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="uninitalize()"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>uninitalize</h4> |
| <pre class="methodSignature">public void uninitalize()</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#uninitalize()">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Uninitialize the policy.</div> |
| </li> |
| </ul> |
| <a id="newEnsemble(int,int,int,java.util.Map,java.util.Set)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>newEnsemble</h4> |
| <pre class="methodSignature">public <a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>>> newEnsemble​(int ensembleSize, |
| int writeQuorumSize, |
| int ackQuorumSize, |
| java.util.Map<java.lang.String,​byte[]> customMetadata, |
| java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies) |
| throws <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#newEnsemble(int,int,int,java.util.Map,java.util.Set)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Choose <i>numBookies</i> bookies for ensemble. If the count is more than the number of available |
| nodes, <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client"><code>BKException.BKNotEnoughBookiesException</code></a> is thrown. |
| |
| <p>The implementation should respect to the replace settings. The size of the returned bookie list |
| should be equal to the provide <code>ensembleSize</code>. |
| |
| <p><code>customMetadata</code> is the same user defined data that user provides |
| when <a href="BookKeeper.html#createLedger(int,int,int,org.apache.bookkeeper.client.BookKeeper.DigestType,byte%5B%5D,java.util.Map)"><code>BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[], Map)</code></a>. |
| |
| <p>If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default |
| faultzone (rack) will be excluded while selecting bookies.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ensembleSize</code> - Ensemble Size</dd> |
| <dd><code>writeQuorumSize</code> - Write Quorum Size</dd> |
| <dd><code>ackQuorumSize</code> - the value of ackQuorumSize (added since 4.5)</dd> |
| <dd><code>customMetadata</code> - the value of customMetadata. it is the same user defined metadata that user |
| provides in <a href="BookKeeper.html#createLedger(int,int,int,org.apache.bookkeeper.client.BookKeeper.DigestType,byte%5B%5D)"><code>BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])</code></a></dd> |
| <dd><code>excludeBookies</code> - Bookies that should not be considered as targets.</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>a placement result containing list of bookie addresses for the ensemble.</dd> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></code> - if not enough bookies available.</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="replaceBookie(int,int,int,java.util.Map,java.util.List,org.apache.bookkeeper.net.BookieId,java.util.Set)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>replaceBookie</h4> |
| <pre class="methodSignature">public <a href="EnsemblePlacementPolicy.PlacementResult.html" title="class in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementResult</a><<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> replaceBookie​(int ensembleSize, |
| int writeQuorumSize, |
| int ackQuorumSize, |
| java.util.Map<java.lang.String,​byte[]> customMetadata, |
| java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> currentEnsemble, |
| <a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a> bookieToReplace, |
| java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies) |
| throws <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#replaceBookie(int,int,int,java.util.Map,java.util.List,org.apache.bookkeeper.net.BookieId,java.util.Set)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Choose a new bookie to replace <i>bookieToReplace</i>. If no bookie available in the cluster, |
| <a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client"><code>BKException.BKNotEnoughBookiesException</code></a> is thrown. |
| |
| <p>If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default |
| faultzone (rack) will be excluded while selecting bookies.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ensembleSize</code> - the value of ensembleSize</dd> |
| <dd><code>writeQuorumSize</code> - the value of writeQuorumSize</dd> |
| <dd><code>ackQuorumSize</code> - the value of ackQuorumSize (added since 4.5)</dd> |
| <dd><code>customMetadata</code> - the value of customMetadata. it is the same user defined metadata that user |
| provides in <a href="BookKeeper.html#createLedger(int,int,int,org.apache.bookkeeper.client.BookKeeper.DigestType,byte%5B%5D)"><code>BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])</code></a></dd> |
| <dd><code>currentEnsemble</code> - the value of currentEnsemble</dd> |
| <dd><code>bookieToReplace</code> - bookie to replace</dd> |
| <dd><code>excludeBookies</code> - bookies that should not be considered as candidate.</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>a placement result containing the new bookie address.</dd> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="BKException.BKNotEnoughBookiesException.html" title="class in org.apache.bookkeeper.client">BKException.BKNotEnoughBookiesException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="addDefaultFaultDomainBookies(java.util.Set)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>addDefaultFaultDomainBookies</h4> |
| <pre class="methodSignature">protected java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> addDefaultFaultDomainBookies​(java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> excludeBookies)</pre> |
| </li> |
| </ul> |
| <a id="registerSlowBookie(org.apache.bookkeeper.net.BookieId,long)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>registerSlowBookie</h4> |
| <pre class="methodSignature">public void registerSlowBookie​(<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a> bookieSocketAddress, |
| long entryId)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#registerSlowBookie(org.apache.bookkeeper.net.BookieId,long)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Register a bookie as slow so that it is tried after available and read-only bookies.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>bookieSocketAddress</code> - Address of bookie host</dd> |
| <dd><code>entryId</code> - Entry ID that caused a speculative timeout on the bookie.</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="reorderReadSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>reorderReadSequence</h4> |
| <pre class="methodSignature">public <a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a> reorderReadSequence​(java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ensemble, |
| <a href="BookiesHealthInfo.html" title="interface in org.apache.bookkeeper.client">BookiesHealthInfo</a> bookiesHealthInfo, |
| <a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a> writeSet)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#reorderReadSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Reorder the read sequence of a given write quorum <i>writeSet</i>.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="EnsemblePlacementPolicy.html#reorderReadSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">reorderReadSequence</a></code> in interface <code><a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></code></dd> |
| <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> |
| <dd><code><a href="TopologyAwareEnsemblePlacementPolicy.html#reorderReadSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">reorderReadSequence</a></code> in class <code><a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ensemble</code> - Ensemble to read entries.</dd> |
| <dd><code>bookiesHealthInfo</code> - Health info for bookies</dd> |
| <dd><code>writeSet</code> - Write quorum to read entries. This will be modified, rather than |
| allocating a new WriteSet.</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>The read sequence. This will be the same object as the passed in |
| writeSet.</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="reorderReadLACSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>reorderReadLACSequence</h4> |
| <pre class="methodSignature">public <a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a> reorderReadLACSequence​(java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ensemble, |
| <a href="BookiesHealthInfo.html" title="interface in org.apache.bookkeeper.client">BookiesHealthInfo</a> bookiesHealthInfo, |
| <a href="DistributionSchedule.WriteSet.html" title="interface in org.apache.bookkeeper.client">DistributionSchedule.WriteSet</a> writeSet)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#reorderReadLACSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Reorder the read last add confirmed sequence of a given write quorum <i>writeSet</i>.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="EnsemblePlacementPolicy.html#reorderReadLACSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">reorderReadLACSequence</a></code> in interface <code><a href="EnsemblePlacementPolicy.html" title="interface in org.apache.bookkeeper.client">EnsemblePlacementPolicy</a></code></dd> |
| <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> |
| <dd><code><a href="TopologyAwareEnsemblePlacementPolicy.html#reorderReadLACSequence(java.util.List,org.apache.bookkeeper.client.BookiesHealthInfo,org.apache.bookkeeper.client.DistributionSchedule.WriteSet)">reorderReadLACSequence</a></code> in class <code><a href="TopologyAwareEnsemblePlacementPolicy.html" title="class in org.apache.bookkeeper.client">TopologyAwareEnsemblePlacementPolicy</a></code></dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ensemble</code> - Ensemble to read entries.</dd> |
| <dd><code>bookiesHealthInfo</code> - Health info for bookies</dd> |
| <dd><code>writeSet</code> - Write quorum to read entries. This will be modified, rather than |
| allocating a new WriteSet.</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>The read sequence. This will be the same object as the passed in |
| writeSet.</dd> |
| </dl> |
| </li> |
| </ul> |
| <a id="isEnsembleAdheringToPlacementPolicy(java.util.List,int,int)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>isEnsembleAdheringToPlacementPolicy</h4> |
| <pre class="methodSignature">public <a href="EnsemblePlacementPolicy.PlacementPolicyAdherence.html" title="enum in org.apache.bookkeeper.client">EnsemblePlacementPolicy.PlacementPolicyAdherence</a> isEnsembleAdheringToPlacementPolicy​(java.util.List<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ensembleList, |
| int writeQuorumSize, |
| int ackQuorumSize)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#isEnsembleAdheringToPlacementPolicy(java.util.List,int,int)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">returns AdherenceLevel if the Ensemble is strictly/softly/fails adhering |
| to placement policy, like in the case of |
| RackawareEnsemblePlacementPolicy, bookies in the writeset are from |
| 'minNumRacksPerWriteQuorum' number of racks. And in the case of |
| RegionawareEnsemblePlacementPolicy, check for |
| minimumRegionsForDurability, reppRegionsToWrite, rack distribution within |
| a region and other parameters of RegionAwareEnsemblePlacementPolicy. In |
| ZoneAwareEnsemblePlacementPolicy if bookies in the writeset are from |
| 'desiredNumOfZones' then it is considered as MEETS_STRICT if they are |
| from 'minNumOfZones' then it is considered as MEETS_SOFT otherwise |
| considered as FAIL.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ensembleList</code> - list of BookieId of bookies in the ensemble</dd> |
| <dd><code>writeQuorumSize</code> - writeQuorumSize of the ensemble</dd> |
| <dd><code>ackQuorumSize</code> - ackQuorumSize of the ensemble</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| </dl> |
| </li> |
| </ul> |
| <a id="areAckedBookiesAdheringToPlacementPolicy(java.util.Set,int,int)"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>areAckedBookiesAdheringToPlacementPolicy</h4> |
| <pre class="methodSignature">public boolean areAckedBookiesAdheringToPlacementPolicy​(java.util.Set<<a href="../net/BookieId.html" title="class in org.apache.bookkeeper.net">BookieId</a>> ackedBookies, |
| int writeQuorumSize, |
| int ackQuorumSize)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="EnsemblePlacementPolicy.html#areAckedBookiesAdheringToPlacementPolicy(java.util.Set,int,int)">EnsemblePlacementPolicy</a></code></span></div> |
| <div class="block">Returns true if the bookies that have acknowledged a write adhere to the minimum fault domains as defined in the |
| placement policy in use. Ex: In the case of RackawareEnsemblePlacementPolicy, bookies belong to at least |
| 'minNumRacksPerWriteQuorum' number of racks.</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>ackedBookies</code> - list of BookieId of bookies that have acknowledged a write.</dd> |
| <dd><code>writeQuorumSize</code> - writeQuorumSize of the ensemble</dd> |
| <dd><code>ackQuorumSize</code> - ackQuorumSize of the ensemble</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| </dl> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </main> |
| <!-- ========= END OF CLASS DATA ========= --> |
| <footer role="contentinfo"> |
| <nav role="navigation"> |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <div class="bottomNav"><a id="navbar.bottom"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> |
| <a id="navbar.bottom.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../index.html">Overview</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="navBarCell1Rev">Class</li> |
| <li><a href="class-use/ZoneawareEnsemblePlacementPolicyImpl.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> |
| <li><a href="../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../allclasses.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li><a href="#nested.class.summary">Nested</a> | </li> |
| <li><a href="#field.summary">Field</a> | </li> |
| <li><a href="#constructor.summary">Constr</a> | </li> |
| <li><a href="#method.summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li><a href="#field.detail">Field</a> | </li> |
| <li><a href="#constructor.detail">Constr</a> | </li> |
| <li><a href="#method.detail">Method</a></li> |
| </ul> |
| </div> |
| <a id="skip.navbar.bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| </nav> |
| <p class="legalCopy"><small>Copyright © 2011–2023 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </footer> |
| </body> |
| </html> |