Class 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 java.lang.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 bookieAddressResolver  
      protected java.util.Map<org.apache.bookkeeper.net.BookieNode,​org.apache.bookkeeper.client.WeightedRandomSelection.WeightedObject> bookieInfoMap  
      protected org.apache.bookkeeper.stats.OpStatsLogger bookiesJoinedCounter  
      protected org.apache.bookkeeper.stats.OpStatsLogger bookiesLeftCounter  
      protected org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver  
      protected java.util.Map<org.apache.bookkeeper.net.BookieId,​org.apache.bookkeeper.net.BookieNode> historyBookies  
      static java.lang.String ISOLATION_BOOKIE_GROUPS  
      protected java.util.Map<org.apache.bookkeeper.net.BookieId,​org.apache.bookkeeper.net.BookieNode> knownBookies  
      protected com.google.common.collect.ImmutableSet<org.apache.bookkeeper.net.BookieId> readOnlyBookies  
      protected java.util.concurrent.locks.ReentrantReadWriteLock rwLock  
      static java.lang.String SECONDARY_ISOLATION_BOOKIE_GROUPS  
      protected org.apache.bookkeeper.net.NetworkTopology topology  
      protected org.apache.bookkeeper.client.WeightedRandomSelection<org.apache.bookkeeper.net.BookieNode> weightedSelection  
      • Fields inherited from class org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl

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

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.util.Set<org.apache.bookkeeper.net.Node> convertBookiesToNodes​(java.util.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 createDummyLocalBookieNode​(java.lang.String arg0)  
      static int differBetweenBookies​(java.util.List<org.apache.bookkeeper.net.BookieId> arg0, java.util.List<org.apache.bookkeeper.net.BookieId> arg1)  
      org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl initialize​(org.apache.bookkeeper.conf.ClientConfiguration conf, java.util.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<java.util.List<org.apache.bookkeeper.net.BookieId>> newEnsemble​(int ensembleSize, int writeQuorumSize, int ackQuorumSize, java.util.Map<java.lang.String,​byte[]> customMetadata, java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies)  
      void onBookieRackChange​(java.util.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, java.util.Map<java.lang.String,​byte[]> customMetadata, java.util.List<org.apache.bookkeeper.net.BookieId> currentEnsemble, org.apache.bookkeeper.net.BookieId bookieToReplace, java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies)  
      protected java.lang.String resolveNetworkLocation​(org.apache.bookkeeper.net.BookieId arg0)  
      void updateBookieInfo​(java.util.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, 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 Detail

      • ISOLATION_BOOKIE_GROUPS

        public static final java.lang.String ISOLATION_BOOKIE_GROUPS
        See Also:
        Constant Field Values
      • SECONDARY_ISOLATION_BOOKIE_GROUPS

        public static final java.lang.String SECONDARY_ISOLATION_BOOKIE_GROUPS
        See Also:
        Constant Field Values
      • knownBookies

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

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

        protected final java.util.concurrent.locks.ReentrantReadWriteLock rwLock
      • bookieInfoMap

        protected java.util.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 Detail

      • IsolatedBookieEnsemblePlacementPolicy

        public IsolatedBookieEnsemblePlacementPolicy()
    • Method Detail

      • initialize

        public org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl initialize​(org.apache.bookkeeper.conf.ClientConfiguration conf,
                                                                                            java.util.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<java.util.List<org.apache.bookkeeper.net.BookieId>> newEnsemble​(int ensembleSize,
                                                                                                                                                    int writeQuorumSize,
                                                                                                                                                    int ackQuorumSize,
                                                                                                                                                    java.util.Map<java.lang.String,​byte[]> customMetadata,
                                                                                                                                                    java.util.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,
                                                                                                                                      java.util.Map<java.lang.String,​byte[]> customMetadata,
                                                                                                                                      java.util.List<org.apache.bookkeeper.net.BookieId> currentEnsemble,
                                                                                                                                      org.apache.bookkeeper.net.BookieId bookieToReplace,
                                                                                                                                      java.util.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​(java.util.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​(java.util.List<org.apache.bookkeeper.net.BookieId> arg0,
                                               java.util.List<org.apache.bookkeeper.net.BookieId> arg1)
      • updateBookieInfo

        public void updateBookieInfo​(java.util.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​(java.lang.String arg0)
      • resolveNetworkLocation

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

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

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