mirror of https://github.com/apache/lucene.git
Ref guide: add license to cluster-plugins.adoc; fix section title case throughout
This commit is contained in:
parent
cb465044d7
commit
90aabbdde8
|
@ -1,15 +1,29 @@
|
||||||
= Cluster Plugins
|
= Cluster Plugins
|
||||||
:toc: macro
|
:toc: macro
|
||||||
:toclevels: 3
|
:toclevels: 3
|
||||||
|
// 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.
|
||||||
|
|
||||||
toc::[]
|
== Cluster (CoreContainer-level) Plugins Subsystem
|
||||||
|
|
||||||
== Cluster (CoreContainer-level) plugins subsystem
|
|
||||||
Cluster plugins are pluggable components that are defined and instantiated at the
|
Cluster plugins are pluggable components that are defined and instantiated at the
|
||||||
`CoreContainer` (node) level. These components usually provide admin-level functionality
|
`CoreContainer` (node) level. These components usually provide admin-level functionality
|
||||||
and APIs for additional functionality at the Solr node level.
|
and APIs for additional functionality at the Solr node level.
|
||||||
|
|
||||||
=== Plugin configurations
|
=== Plugin Configurations
|
||||||
Plugin configurations are maintained using `/cluster/plugin` API.
|
Plugin configurations are maintained using `/cluster/plugin` API.
|
||||||
|
|
||||||
This API endpoint allows adding, removing and updating plugin configurations.
|
This API endpoint allows adding, removing and updating plugin configurations.
|
||||||
|
@ -29,7 +43,7 @@ The following common plugin properties are supported:
|
||||||
`name`::
|
`name`::
|
||||||
(required) unique plugin name. Some plugin types require using one of the
|
(required) unique plugin name. Some plugin types require using one of the
|
||||||
pre-defined names to properly function. By convention such predefined names use
|
pre-defined names to properly function. By convention such predefined names use
|
||||||
a leading-dot prefix (e.g. `.placement-plugin`)
|
a leading-dot prefix (e.g., `.placement-plugin`)
|
||||||
|
|
||||||
`class`::
|
`class`::
|
||||||
(required) implementation class. This can be specified as a fully-qualified
|
(required) implementation class. This can be specified as a fully-qualified
|
||||||
|
@ -60,7 +74,7 @@ curl -X POST -H 'Content-type: application/json' -d '{
|
||||||
http://localhost:8983/api/cluster/plugin
|
http://localhost:8983/api/cluster/plugin
|
||||||
----
|
----
|
||||||
|
|
||||||
=== Types of cluster plugins
|
=== Types of Cluster Plugins
|
||||||
Classes loaded from plugins in general support two types of functionality (not mutually exclusive):
|
Classes loaded from plugins in general support two types of functionality (not mutually exclusive):
|
||||||
|
|
||||||
* request handler plugins that expose REST API endpoints (the implementing class is annotated with
|
* request handler plugins that expose REST API endpoints (the implementing class is annotated with
|
||||||
|
@ -72,22 +86,22 @@ automatically discovered and registered with sub-systems that use this type of p
|
||||||
include the `ClusterSingleton`, ClusterEventProducer`, `ClusterEventListener`
|
include the `ClusterSingleton`, ClusterEventProducer`, `ClusterEventListener`
|
||||||
and `PlacementPluginFactory`.
|
and `PlacementPluginFactory`.
|
||||||
|
|
||||||
=== Plugin life-cycle
|
=== Plugin Lifecycle
|
||||||
Plugin instances are loaded and initialized when Solr's `CoreContainer` is first created during
|
Plugin instances are loaded and initialized when Solr's `CoreContainer` is first created during
|
||||||
Solr node start-up.
|
Solr node start-up.
|
||||||
|
|
||||||
Then on each update of the configurations each node is notified about the change,
|
Then on each update of the configurations each node is notified about the change,
|
||||||
and then the existing plugins are compared with the new configs, and plugin instances
|
and then the existing plugins are compared with the new configs, and plugin instances
|
||||||
present on the node are respectively created, removed, or
|
present on the node are respectively created, removed, or
|
||||||
replaced (i.e. removed and added using the new configuration).
|
replaced (i.e., removed and added using the new configuration).
|
||||||
|
|
||||||
In practice this means that cluster-level plugins managed by this API can be
|
In practice this means that cluster-level plugins managed by this API can be
|
||||||
dynamically changed and reconfigured without restarting the Solr nodes, and the changes
|
dynamically changed and reconfigured without restarting the Solr nodes, and the changes
|
||||||
apply to all nodes nearly simultaneously.
|
apply to all nodes nearly simultaneously.
|
||||||
|
|
||||||
== Plugin types
|
== Plugin Types
|
||||||
|
|
||||||
=== Predefined plugin names
|
=== Predefined Plugin Names
|
||||||
|
|
||||||
Plugins with these names are used in specific parts of Solr. Their names are reserved
|
Plugins with these names are used in specific parts of Solr. Their names are reserved
|
||||||
and cannot be used for other plugin types:
|
and cannot be used for other plugin types:
|
||||||
|
@ -100,11 +114,11 @@ determines the replica placement strategy in the cluster.
|
||||||
plugin that implements `ClusterEventProducer` interface. This type of plugin
|
plugin that implements `ClusterEventProducer` interface. This type of plugin
|
||||||
is used for generating cluster-level events.
|
is used for generating cluster-level events.
|
||||||
|
|
||||||
=== PlacementPluginFactory plugins
|
=== PlacementPluginFactory Plugins
|
||||||
This type of plugin supports configurable placement strategies for collection
|
This type of plugin supports configurable placement strategies for collection
|
||||||
replicas.
|
replicas.
|
||||||
|
|
||||||
=== ClusterSingleton plugins
|
=== ClusterSingleton Plugins
|
||||||
Plugins that implement `ClusterSingleton` interface are instantiated on each
|
Plugins that implement `ClusterSingleton` interface are instantiated on each
|
||||||
Solr node. However, their start/stop life-cycle, as defined in the interface,
|
Solr node. However, their start/stop life-cycle, as defined in the interface,
|
||||||
is controlled in such a way that only a single running instance of the plugin
|
is controlled in such a way that only a single running instance of the plugin
|
||||||
|
@ -116,7 +130,7 @@ is present in the cluster at any time.
|
||||||
Any plugin can implement this interface to indicate to Solr that
|
Any plugin can implement this interface to indicate to Solr that
|
||||||
it requires this cluster singleton behavior.
|
it requires this cluster singleton behavior.
|
||||||
|
|
||||||
=== ClusterEventProducer plugin
|
=== ClusterEventProducer Plugins
|
||||||
In order to support the generation of cluster-level events an implementation of
|
In order to support the generation of cluster-level events an implementation of
|
||||||
`ClusterEventProducer` is created on each Solr node. This component is also a
|
`ClusterEventProducer` is created on each Solr node. This component is also a
|
||||||
`ClusterSingleton`, which means that only one active instance is present in the
|
`ClusterSingleton`, which means that only one active instance is present in the
|
||||||
|
@ -152,7 +166,7 @@ curl -X POST -H 'Content-type: application/json' -d '{
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
=== ClusterEventListener plugins
|
=== ClusterEventListener Plugins
|
||||||
Plugins that implement the `ClusterEventListener` interface will be automatically
|
Plugins that implement the `ClusterEventListener` interface will be automatically
|
||||||
registered with the instance of `ClusterEventProducer`.
|
registered with the instance of `ClusterEventProducer`.
|
||||||
|
|
||||||
|
@ -181,9 +195,9 @@ curl -X POST -H 'Content-type: application/json' -d '{
|
||||||
http://localhost:8983/api/cluster/plugin
|
http://localhost:8983/api/cluster/plugin
|
||||||
----
|
----
|
||||||
|
|
||||||
== Plugin management API
|
== Plugin Management API
|
||||||
|
|
||||||
=== List plugins
|
=== List Plugins
|
||||||
This command uses HTTP GET and returns a list of loaded plugins and their configurations:
|
This command uses HTTP GET and returns a list of loaded plugins and their configurations:
|
||||||
|
|
||||||
[source,bash]
|
[source,bash]
|
||||||
|
@ -191,7 +205,7 @@ This command uses HTTP GET and returns a list of loaded plugins and their config
|
||||||
curl http://localhost:8983/api/cluster/plugin
|
curl http://localhost:8983/api/cluster/plugin
|
||||||
----
|
----
|
||||||
|
|
||||||
=== Add plugin
|
=== Add Plugin
|
||||||
This command uses HTTP POST to add a new plugin configuration. If a plugin with the
|
This command uses HTTP POST to add a new plugin configuration. If a plugin with the
|
||||||
same name already exists this results in an error.
|
same name already exists this results in an error.
|
||||||
|
|
||||||
|
@ -207,7 +221,7 @@ curl -X POST -H 'Content-type: application/json' -d '{
|
||||||
http://localhost:8983/api/cluster/plugin
|
http://localhost:8983/api/cluster/plugin
|
||||||
----
|
----
|
||||||
|
|
||||||
=== Update plugin
|
=== Update Plugin
|
||||||
This command uses HTTP POST to update an existing plugin configuration. If a plugin
|
This command uses HTTP POST to update an existing plugin configuration. If a plugin
|
||||||
with this name doesn't exist this results in an error.
|
with this name doesn't exist this results in an error.
|
||||||
|
|
||||||
|
@ -226,7 +240,7 @@ curl -X POST -H 'Content-type: application/json' -d '{
|
||||||
http://localhost:8983/api/cluster/plugin
|
http://localhost:8983/api/cluster/plugin
|
||||||
----
|
----
|
||||||
|
|
||||||
=== Remove plugin
|
=== Remove Plugin
|
||||||
This command uses HTTP POST to delete an existing plugin configuration. If a plugin
|
This command uses HTTP POST to delete an existing plugin configuration. If a plugin
|
||||||
with this name doesn't exist this results in an error.
|
with this name doesn't exist this results in an error.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue