Class IsolatedBookieEnsemblePlacementPolicy

java.lang.Object
org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl
org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy
org.apache.pulsar.bookie.rackawareness.IsolatedBookieEnsemblePlacementPolicy
All Implemented Interfaces:
org.apache.bookkeeper.client.EnsemblePlacementPolicy, org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>
Direct Known Subclasses:
ZkIsolatedBookieEnsemblePlacementPolicy

public class IsolatedBookieEnsemblePlacementPolicy extends org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.apache.bookkeeper.client.EnsemblePlacementPolicy

    org.apache.bookkeeper.client.EnsemblePlacementPolicy.PlacementPolicyAdherence, org.apache.bookkeeper.client.EnsemblePlacementPolicy.PlacementResult<T extends Object>

    Nested classes/interfaces inherited from interface org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy

    org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Ensemble<T extends org.apache.bookkeeper.net.Node>, org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy.Predicate<T extends org.apache.bookkeeper.net.Node>
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.apache.bookkeeper.proto.BookieAddressResolver
     
    protected Map<org.apache.bookkeeper.net.BookieNode,org.apache.bookkeeper.client.WeightedRandomSelection.WeightedObject>
     
    protected org.apache.bookkeeper.stats.OpStatsLogger
     
    protected org.apache.bookkeeper.stats.OpStatsLogger
     
    protected org.apache.bookkeeper.net.DNSToSwitchMapping
     
    protected final Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode>
     
    static final String
     
    protected final Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode>
     
    protected com.google.common.collect.ImmutableSet<org.apache.bookkeeper.net.BookieId>
     
    static final String
     
    protected final ReentrantReadWriteLock
     
    static final String
     
    protected org.apache.bookkeeper.net.NetworkTopology
     
    protected org.apache.bookkeeper.client.WeightedRandomSelection<org.apache.bookkeeper.net.BookieNode>
     

    Fields inherited from class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl

    enforceDurability, enforceMinNumRacksPerWriteQuorum, failedToResolveNetworkLocationCounter, ignoreLocalNodeInPlacementPolicy, localNode, minNumRacksPerWriteQuorum, numWritableBookiesInDefaultRack, readReorderedCounter, reorderReadsRandom, reorderThresholdPendingRequests, REPP_RANDOM_READ_REORDERING, slowBookies, stabilizePeriodSeconds, statsLogger, timer, useHostnameResolveLocalNodePlacementPolicy
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Set<org.apache.bookkeeper.net.Node>
    convertBookiesToNodes(Collection<org.apache.bookkeeper.net.BookieId> arg0)
     
    protected org.apache.bookkeeper.net.BookieNode
    convertBookieToNode(org.apache.bookkeeper.net.BookieId arg0)
     
    protected org.apache.bookkeeper.net.BookieNode
    createBookieNode(org.apache.bookkeeper.net.BookieId arg0)
     
    protected org.apache.bookkeeper.net.BookieNode
     
    static int
    differBetweenBookies(List<org.apache.bookkeeper.net.BookieId> arg0, List<org.apache.bookkeeper.net.BookieId> arg1)
     
    org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl
    initialize(org.apache.bookkeeper.conf.ClientConfiguration conf, Optional<org.apache.bookkeeper.net.DNSToSwitchMapping> optionalDnsResolver, io.netty.util.HashedWheelTimer timer, org.apache.bookkeeper.feature.FeatureProvider featureProvider, org.apache.bookkeeper.stats.StatsLogger statsLogger, org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver)
     
    org.apache.bookkeeper.client.EnsemblePlacementPolicy.PlacementResult<List<org.apache.bookkeeper.net.BookieId>>
    newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String,byte[]> customMetadata, Set<org.apache.bookkeeper.net.BookieId> excludeBookies)
     
    void
    onBookieRackChange(List<org.apache.bookkeeper.net.BookieId> arg0)
     
    org.apache.bookkeeper.client.EnsemblePlacementPolicy.PlacementResult<org.apache.bookkeeper.net.BookieId>
    replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String,byte[]> customMetadata, List<org.apache.bookkeeper.net.BookieId> currentEnsemble, org.apache.bookkeeper.net.BookieId bookieToReplace, Set<org.apache.bookkeeper.net.BookieId> excludeBookies)
     
    protected String
    resolveNetworkLocation(org.apache.bookkeeper.net.BookieId arg0)
     
    void
    updateBookieInfo(Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.client.BookieInfoReader.BookieInfo> arg0)
     

    Methods inherited from class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy

    handleBookiesThatJoined, handleBookiesThatLeft, initialize, initialize, newEnsemble, onClusterChanged, reorderReadLACSequence, reorderReadSequence, replaceToAdherePlacementPolicy, selectFromNetworkLocation, selectFromNetworkLocation, selectFromNetworkLocation, uninitalize

    Methods inherited from class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl

    addDefaultRackBookiesIfMinNumRacksIsEnforced, areAckedBookiesAdheringToPlacementPolicy, getDefaultRack, isEnsembleAdheringToPlacementPolicy, newEnsembleInternal, registerSlowBookie, selectRandom, selectRandomFromRack, selectRandomInternal, withDefaultRack

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.bookkeeper.client.EnsemblePlacementPolicy

    areAckedBookiesAdheringToPlacementPolicy, getStickyReadBookieIndex, isEnsembleAdheringToPlacementPolicy, registerSlowBookie, updateBookieInfo

    Methods inherited from interface org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy

    onBookieRackChange
  • Field Details

    • ISOLATION_BOOKIE_GROUPS

      public static final String ISOLATION_BOOKIE_GROUPS
      See Also:
    • SECONDARY_ISOLATION_BOOKIE_GROUPS

      public static final String SECONDARY_ISOLATION_BOOKIE_GROUPS
      See Also:
    • REPP_DNS_RESOLVER_CLASS

      public static final String REPP_DNS_RESOLVER_CLASS
      See Also:
    • knownBookies

      protected final Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode> knownBookies
    • historyBookies

      protected final Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.net.BookieNode> historyBookies
    • rwLock

      protected final ReentrantReadWriteLock rwLock
    • bookieInfoMap

      protected Map<org.apache.bookkeeper.net.BookieNode,org.apache.bookkeeper.client.WeightedRandomSelection.WeightedObject> bookieInfoMap
    • readOnlyBookies

      protected com.google.common.collect.ImmutableSet<org.apache.bookkeeper.net.BookieId> readOnlyBookies
    • weightedSelection

      protected org.apache.bookkeeper.client.WeightedRandomSelection<org.apache.bookkeeper.net.BookieNode> weightedSelection
    • topology

      protected org.apache.bookkeeper.net.NetworkTopology topology
    • dnsResolver

      protected org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver
    • bookieAddressResolver

      protected org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver
    • bookiesJoinedCounter

      @StatsDoc(name="BOOKIES_JOINED", help="The distribution of number of bookies joined the cluster on each network topology change") protected org.apache.bookkeeper.stats.OpStatsLogger bookiesJoinedCounter
    • bookiesLeftCounter

      @StatsDoc(name="BOOKIES_LEFT", help="The distribution of number of bookies left the cluster on each network topology change") protected org.apache.bookkeeper.stats.OpStatsLogger bookiesLeftCounter
  • Constructor Details

    • IsolatedBookieEnsemblePlacementPolicy

      public IsolatedBookieEnsemblePlacementPolicy()
  • Method Details

    • initialize

      public org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl initialize(org.apache.bookkeeper.conf.ClientConfiguration conf, Optional<org.apache.bookkeeper.net.DNSToSwitchMapping> optionalDnsResolver, io.netty.util.HashedWheelTimer timer, org.apache.bookkeeper.feature.FeatureProvider featureProvider, org.apache.bookkeeper.stats.StatsLogger statsLogger, org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver)
      Specified by:
      initialize in interface org.apache.bookkeeper.client.EnsemblePlacementPolicy
      Overrides:
      initialize in class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl
    • newEnsemble

      public org.apache.bookkeeper.client.EnsemblePlacementPolicy.PlacementResult<List<org.apache.bookkeeper.net.BookieId>> newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String,byte[]> customMetadata, Set<org.apache.bookkeeper.net.BookieId> excludeBookies) throws org.apache.bookkeeper.client.BKException.BKNotEnoughBookiesException
      Specified by:
      newEnsemble in interface org.apache.bookkeeper.client.EnsemblePlacementPolicy
      Overrides:
      newEnsemble in class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy
      Throws:
      org.apache.bookkeeper.client.BKException.BKNotEnoughBookiesException
    • replaceBookie

      public org.apache.bookkeeper.client.EnsemblePlacementPolicy.PlacementResult<org.apache.bookkeeper.net.BookieId> replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, Map<String,byte[]> customMetadata, List<org.apache.bookkeeper.net.BookieId> currentEnsemble, org.apache.bookkeeper.net.BookieId bookieToReplace, Set<org.apache.bookkeeper.net.BookieId> excludeBookies) throws org.apache.bookkeeper.client.BKException.BKNotEnoughBookiesException
      Specified by:
      replaceBookie in interface org.apache.bookkeeper.client.EnsemblePlacementPolicy
      Overrides:
      replaceBookie in class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicy
      Throws:
      org.apache.bookkeeper.client.BKException.BKNotEnoughBookiesException
    • onBookieRackChange

      public void onBookieRackChange(List<org.apache.bookkeeper.net.BookieId> arg0)
      Specified by:
      onBookieRackChange in interface org.apache.bookkeeper.client.ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>
    • differBetweenBookies

      public static int differBetweenBookies(List<org.apache.bookkeeper.net.BookieId> arg0, List<org.apache.bookkeeper.net.BookieId> arg1)
    • updateBookieInfo

      public void updateBookieInfo(Map<org.apache.bookkeeper.net.BookieId,org.apache.bookkeeper.client.BookieInfoReader.BookieInfo> arg0)
      Specified by:
      updateBookieInfo in interface org.apache.bookkeeper.client.EnsemblePlacementPolicy
    • createBookieNode

      protected org.apache.bookkeeper.net.BookieNode createBookieNode(org.apache.bookkeeper.net.BookieId arg0)
    • createDummyLocalBookieNode

      protected org.apache.bookkeeper.net.BookieNode createDummyLocalBookieNode(String arg0)
    • resolveNetworkLocation

      protected String resolveNetworkLocation(org.apache.bookkeeper.net.BookieId arg0)
    • convertBookiesToNodes

      protected Set<org.apache.bookkeeper.net.Node> convertBookiesToNodes(Collection<org.apache.bookkeeper.net.BookieId> arg0)
    • convertBookieToNode

      protected org.apache.bookkeeper.net.BookieNode convertBookieToNode(org.apache.bookkeeper.net.BookieId arg0)