Class SearchCluster

  • All Implemented Interfaces:
    NodeManager<Node>

    public class SearchCluster
    extends Object
    implements NodeManager<Node>
    A model of a search cluster we might want to dispatch queries to.
    Author:
    bratseth
    • Constructor Detail

      • SearchCluster

        public SearchCluster​(String clusterId,
                             com.yahoo.vespa.config.search.DispatchConfig dispatchConfig,
                             com.yahoo.container.handler.VipStatus vipStatus,
                             PingFactory pingFactory)
    • Method Detail

      • dispatchConfig

        public com.yahoo.vespa.config.search.DispatchConfig dispatchConfig()
      • size

        public int size()
        Returns the number of nodes in this cluster (across all groups)
      • groups

        public com.google.common.collect.ImmutableMap<Integer,​Group> groups()
        Returns the groups of this cluster as an immutable map indexed by group id
      • orderedGroups

        public com.google.common.collect.ImmutableList<Group> orderedGroups()
        Returns the groups of this cluster as an immutable list in introduction order
      • group

        public Optional<Group> group​(int n)
        Returns the n'th (zero-indexed) group in the cluster if possible
      • wantedGroupSize

        public int wantedGroupSize()
        Returns the wanted number of nodes per group - size()/groups.size(). The actual node count for a given group may differ due to node retirements.
      • groupsWithSufficientCoverage

        public int groupsWithSufficientCoverage()
      • localCorpusDispatchTarget

        public Optional<Node> localCorpusDispatchTarget()
        Returns the single, local node we should dispatch queries directly to, or empty if we should not dispatch directly.
      • working

        public void working​(Node node)
        Called by the cluster monitor when node state changes to working
        Specified by:
        working in interface NodeManager<Node>
      • failed

        public void failed​(Node node)
        Called by the cluster monitor when node state changes to failed
        Specified by:
        failed in interface NodeManager<Node>
      • estimateHitsToFetch

        public int estimateHitsToFetch​(int wantedHits,
                                       int numPartitions)
      • estimateHitsToFetch

        public int estimateHitsToFetch​(int wantedHits,
                                       int numPartitions,
                                       double topKProbability)
      • hasInformationAboutAllNodes

        public boolean hasInformationAboutAllNodes()
      • pingIterationCompleted

        public void pingIterationCompleted()
        Update statistics after a round of issuing pings. Note that this doesn't wait for pings to return, so it will typically accumulate data from last rounds pinging, or potentially (although unlikely) some combination of new and old data.
        Specified by:
        pingIterationCompleted in interface NodeManager<Node>
      • isPartialGroupCoverageSufficient

        public boolean isPartialGroupCoverageSufficient​(List<Node> nodes)
        Calculate whether a subset of nodes in a group has enough coverage