All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.solr.cluster.placement.AttributeFetcher Maven / Gradle / Ivy

There is a newer version: 9.7.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.solr.cluster.placement;

import java.util.Set;
import org.apache.solr.cluster.Node;
import org.apache.solr.cluster.SolrCollection;

/**
 * Instances of this interface are used to fetch various attributes from nodes (and other sources)
 * in the cluster.
 */
public interface AttributeFetcher {
  /**
   * Request a given system property on each node. To get the value use {@link
   * AttributeValues#getSystemProperty(Node, String)}
   *
   * @param name system property name
   */
  AttributeFetcher requestNodeSystemProperty(String name);

  /**
   * Request a node metric from each node. To get the value use {@link
   * AttributeValues#getNodeMetric(Node, NodeMetric)}
   *
   * @param metric metric to retrieve (see {@link NodeMetric})
   */
  AttributeFetcher requestNodeMetric(NodeMetric metric);

  /**
   * Request collection-level metrics. To get the values use {@link
   * AttributeValues#getCollectionMetrics(String)}. Note that this request will fetch information
   * from nodes that are relevant to the collection replicas and not the ones specified in {@link
   * #fetchFrom(Set)} (though they may overlap).
   *
   * @param solrCollection request metrics for this collection
   * @param metrics metrics to retrieve (see {@link ReplicaMetric})
   */
  AttributeFetcher requestCollectionMetrics(
      SolrCollection solrCollection, Set> metrics);

  /**
   * The set of nodes from which to fetch all node related attributes. Calling this method is
   * mandatory if any of the {@code requestNode*} methods got called.
   *
   * @param nodes nodes to fetch from
   */
  AttributeFetcher fetchFrom(Set nodes);

  /**
   * Fetches all requested node attributes from all nodes passed to {@link #fetchFrom(Set)} as well
   * as non-node attributes (those requested using e.g. {@link
   * #requestCollectionMetrics(SolrCollection, Set)}.
   *
   * @return An instance allowing retrieval of all attributes that could be fetched.
   */
  AttributeValues fetchAttributes();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy