Package org.apache.solr.cloud
Class OverseerTaskProcessor
java.lang.Object
org.apache.solr.cloud.OverseerTaskProcessor
- All Implemented Interfaces:
Closeable,AutoCloseable,Runnable,SolrInfoBean,SolrMetricProducer
- Direct Known Subclasses:
OverseerCollectionConfigSetProcessor
A generic processor run in the Overseer, used for handling items added to a distributed work
queue. Has support for handling exclusive tasks (i.e. tasks that should not run in parallel with
each other).
An OverseerTaskProcessor.OverseerMessageHandlerSelector determines which OverseerMessageHandler
handles specific messages in the queue.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceAn interface to determine whichOverseerMessageHandlerhandles a given message.protected classNested classes/interfaces inherited from interface org.apache.solr.core.SolrInfoBean
SolrInfoBean.Category, SolrInfoBean.Group -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intMaximum number of overseer collection operations which can be executed concurrentlyFields inherited from interface org.apache.solr.metrics.SolrMetricProducer
CATEGORY_ATTR, HANDLER_ATTR, NAME_ATTR, OPERATION_ATTR, PLUGIN_NAME_ATTR, RESULT_ATTR, TYPE_ATTR -
Constructor Summary
ConstructorsConstructorDescriptionOverseerTaskProcessor(org.apache.solr.common.cloud.ZkStateReader zkStateReader, String myId, Stats stats, OverseerTaskProcessor.OverseerMessageHandlerSelector selector, OverseerNodePrioritizer prioritizer, OverseerTaskQueue workQueue, DistributedMap runningMap, DistributedMap completedMap, DistributedMap failureMap, SolrMetricsContext solrMetricsContext) -
Method Summary
Modifier and TypeMethodDescriptionprotected org.apache.solr.cloud.Overseer.LeaderStatusvoidclose()Implementations should always callSolrMetricProducer.super.close()to ensure that metrics with the same life-cycle as this component are properly unregistered.protected OverseerTaskProcessor.RunnercreateRunner(OverseerMessageHandler messageHandler, org.apache.solr.common.cloud.ZkNodeProps message, String operation, OverseerTaskQueue.QueueEvent head, OverseerMessageHandler.Lock lock) Create a runner instance to execute a single task.Category of this componentSimple one or two line descriptionstatic StringgetLeaderId(org.apache.solr.common.cloud.SolrZkClient zkClient) static StringgetLeaderNode(org.apache.solr.common.cloud.SolrZkClient zkClient) getName()Simple common usage name, e.g.Implementations should return the context used inSolrMetricProducer.initializeMetrics(SolrMetricsContext, Attributes)to ensure proper cleanup of metrics at the end of the life-cycle of this component.getSortedElectionNodes(org.apache.solr.common.cloud.SolrZkClient zk, String path) getSortedOverseerNodeNames(org.apache.solr.common.cloud.SolrZkClient zk) voidinitializeMetrics(SolrMetricsContext parentContext, io.opentelemetry.api.common.Attributes attributes) Implementation should initialize all metrics to aSolrMetricsContextRegistry/MeterProvider withAttributesas the common set of attributes that will be attached to every metric that is initialized for that class/componentbooleanisClosed()voidrun()
-
Field Details
-
MAX_PARALLEL_TASKS
public static final int MAX_PARALLEL_TASKSMaximum number of overseer collection operations which can be executed concurrently- See Also:
-
MAX_BLOCKED_TASKS
public static final int MAX_BLOCKED_TASKS- See Also:
-
tpe
-
selector
-
-
Constructor Details
-
OverseerTaskProcessor
public OverseerTaskProcessor(org.apache.solr.common.cloud.ZkStateReader zkStateReader, String myId, Stats stats, OverseerTaskProcessor.OverseerMessageHandlerSelector selector, OverseerNodePrioritizer prioritizer, OverseerTaskQueue workQueue, DistributedMap runningMap, DistributedMap completedMap, DistributedMap failureMap, SolrMetricsContext solrMetricsContext)
-
-
Method Details
-
run
public void run() -
initializeMetrics
public void initializeMetrics(SolrMetricsContext parentContext, io.opentelemetry.api.common.Attributes attributes) Description copied from interface:SolrMetricProducerImplementation should initialize all metrics to aSolrMetricsContextRegistry/MeterProvider withAttributesas the common set of attributes that will be attached to every metric that is initialized for that class/component- Specified by:
initializeMetricsin interfaceSolrMetricProducer- Parameters:
parentContext- The registry that the component will initialize metrics toattributes- Base set of attributes that will be bound to all metrics for that component
-
getSolrMetricsContext
Description copied from interface:SolrMetricProducerImplementations should return the context used inSolrMetricProducer.initializeMetrics(SolrMetricsContext, Attributes)to ensure proper cleanup of metrics at the end of the life-cycle of this component. This should be the child context if one was created, or null if the parent context was used.- Specified by:
getSolrMetricsContextin interfaceSolrMetricProducer
-
close
public void close()Description copied from interface:SolrMetricProducerImplementations should always callSolrMetricProducer.super.close()to ensure that metrics with the same life-cycle as this component are properly unregistered. This prevents obscure memory leaks.from: https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html While this interface method is declared to throw Exception, implementers are strongly encouraged to declare concrete implementations of the close method to throw more specific exceptions, or to throw no exception at all if the close operation cannot fail.
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceSolrMetricProducer
-
getSortedOverseerNodeNames
public static List<String> getSortedOverseerNodeNames(org.apache.solr.common.cloud.SolrZkClient zk) throws org.apache.zookeeper.KeeperException, InterruptedException - Throws:
org.apache.zookeeper.KeeperExceptionInterruptedException
-
getSortedElectionNodes
public static List<String> getSortedElectionNodes(org.apache.solr.common.cloud.SolrZkClient zk, String path) throws org.apache.zookeeper.KeeperException, InterruptedException - Throws:
org.apache.zookeeper.KeeperExceptionInterruptedException
-
getLeaderNode
public static String getLeaderNode(org.apache.solr.common.cloud.SolrZkClient zkClient) throws org.apache.zookeeper.KeeperException, InterruptedException - Throws:
org.apache.zookeeper.KeeperExceptionInterruptedException
-
getLeaderId
public static String getLeaderId(org.apache.solr.common.cloud.SolrZkClient zkClient) throws org.apache.zookeeper.KeeperException, InterruptedException - Throws:
org.apache.zookeeper.KeeperExceptionInterruptedException
-
amILeader
protected org.apache.solr.cloud.Overseer.LeaderStatus amILeader() -
isClosed
public boolean isClosed() -
createRunner
protected OverseerTaskProcessor.Runner createRunner(OverseerMessageHandler messageHandler, org.apache.solr.common.cloud.ZkNodeProps message, String operation, OverseerTaskQueue.QueueEvent head, OverseerMessageHandler.Lock lock) Create a runner instance to execute a single task. This method mosty exists to provide an extension point for tests. -
getName
Description copied from interface:SolrInfoBeanSimple common usage name, e.g. BasicQueryHandler, or fully qualified class name.- Specified by:
getNamein interfaceSolrInfoBean
-
getDescription
Description copied from interface:SolrInfoBeanSimple one or two line description- Specified by:
getDescriptionin interfaceSolrInfoBean
-
getCategory
Description copied from interface:SolrInfoBeanCategory of this component- Specified by:
getCategoryin interfaceSolrInfoBean
-