Class HttpShardHandlerFactory

java.lang.Object
org.apache.solr.handler.component.ShardHandlerFactory
org.apache.solr.handler.component.HttpShardHandlerFactory
All Implemented Interfaces:
AutoCloseable, SolrMetricProducer, PluginInfoInitialized
Direct Known Subclasses:
ParallelHttpShardHandlerFactory

public class HttpShardHandlerFactory extends ShardHandlerFactory implements PluginInfoInitialized, SolrMetricProducer
Creates HttpShardHandler instances
  • Field Details

  • Constructor Details

    • HttpShardHandlerFactory

      public HttpShardHandlerFactory()
  • Method Details

    • getShardHandler

      public ShardHandler getShardHandler()
      Get ShardHandler that uses the default http client.
      Specified by:
      getShardHandler in class ShardHandlerFactory
    • init

      public void init(PluginInfo info)
      Customizes HttpShardHandler instances that will be produced by this factory.

      Supports the following parameters in info:

      • socketTimeout - read timeout for requests, in milliseconds.
      • connTimeout - connection timeout for requests, in milliseconds.
      • urlScheme - "http" or "https"
      • maxConnectionsPerHost - caps the number of concurrent connections per host
      • corePoolSize - the initial size of the thread pool used to service requests
      • maximumPoolSize - the maximum size of the thread pool used to service requests.
      • maxThreadIdleTime - the amount of time (in seconds) that thread pool entries may sit idle before being killed
      • sizeOfQueue - the size of the queue (if any) used by the thread pool that services shard-handler requests
      • fairnessPolicy - true if the thread pool should prioritize fairness over throughput, false otherwise
      • replicaRouting - a NamedList of preferences used to select the order in which replicas for a shard will be used by created ShardHandlers
      Specified by:
      init in interface PluginInfoInitialized
      Parameters:
      info - configuration for the created factory, typically reflecting the contents of a <shardHandlerFactory> XML tag from solr.xml or solrconfig.xml
    • setSecurityBuilder

      public void setSecurityBuilder(HttpClientBuilderPlugin clientBuilderPlugin)
      Overrides:
      setSecurityBuilder in class ShardHandlerFactory
    • getParameter

      protected <T> T getParameter(org.apache.solr.common.util.NamedList<?> initArgs, String configKey, T defaultValue, StringBuilder sb)
    • close

      public void close()
      Description copied from interface: SolrMetricProducer
      Implementations should always call SolrMetricProducer.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:
      close in interface AutoCloseable
      Specified by:
      close in interface SolrMetricProducer
      Specified by:
      close in class ShardHandlerFactory
    • getSolrMetricsContext

      public SolrMetricsContext getSolrMetricsContext()
      Description copied from interface: SolrMetricProducer
      Implementations should return the context used in SolrMetricProducer.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:
      getSolrMetricsContext in interface SolrMetricProducer
    • newLBHttpSolrClientReq

      protected org.apache.solr.client.solrj.impl.LBSolrClient.Req newLBHttpSolrClientReq(org.apache.solr.client.solrj.request.QueryRequest req, List<String> urls)
    • buildURLList

      public List<String> buildURLList(String shard)
      Creates a list of urls for the given shard.
      Parameters:
      shard - the urls for the shard, separated by '|'
      Returns:
      A list of valid urls (including protocol) that are replicas for the shard
    • getReplicaListTransformer

      protected org.apache.solr.client.solrj.routing.ReplicaListTransformer getReplicaListTransformer(SolrQueryRequest req)
    • getClient

      public org.apache.solr.client.solrj.SolrClient getClient()
    • initializeMetrics

      public void initializeMetrics(SolrMetricsContext parentContext, io.opentelemetry.api.common.Attributes attributes)
      Description copied from interface: SolrMetricProducer
      Implementation should initialize all metrics to a SolrMetricsContext Registry/MeterProvider with Attributes as the common set of attributes that will be attached to every metric that is initialized for that class/component
      Specified by:
      initializeMetrics in interface SolrMetricProducer
      Parameters:
      parentContext - The registry that the component will initialize metrics to
      attributes - Base set of attributes that will be bound to all metrics for that component