Browse Source

Deprecate overriding DiscoveryPlugin internals (#88925)

DiscoveryPlugin allows extending getJoinValidator and
getElectionStrategies. These are implementation details of the system.
This commit deprecates these methods so that plugin authors are
discouraged from overriding them.
Ryan Ernst 3 years ago
parent
commit
e3c6726a71

+ 12 - 0
docs/changelog/88925.yaml

@@ -0,0 +1,12 @@
+pr: 88925
+summary: Deprecate overriding `DiscoveryPlugin` internals
+area: Infra/Plugins
+type: deprecation
+issues: []
+deprecation:
+  title: Deprecate overriding `DiscoveryPlugin` internals
+  area: Java API
+  details: Plugins extending DiscoveryPlugin and overriding
+    join validators or election strategies are deprecated.
+  impact: Users should discontinue using plugins that override join
+    validators or election strategies in DiscoveryPlugin.

+ 19 - 1
docs/reference/migration/migrate_8_5.asciidoc

@@ -35,7 +35,7 @@ enable <<deprecation-logging, deprecation logging>>.
 
 
 [discrete]
-[[deprecations_85_network_plugins]]
+[[deprecations_85_plugins]]
 ==== Plugin API deprecations
 
 [[network_plugins_deprecated]]
@@ -53,3 +53,21 @@ Discontinue using any plugins which extend NetworkPlugin. You can
 see if any plugins use deprecated functionality by checking
 the Elasticsearch deprecation log.
 ====
+
+[[discoveryplugin_joinvalidator_and_election_strategies_deprecated]]
+.Extending DiscoveryPlugin to override join validators or election strategies is deprecated
+[%collapsible]
+====
+*Details* +
+Plugins that extend DiscoveryPlugin may override getJoinValidator and
+getElectionStrategies. These methods are implementation details of the
+clustering mechanism within Elasticsearch. They should not be overriden.
+In the next major release, plugins overriding getJoinValidator or
+getElectionStrategies will fail to install.
+
+*Impact* +
+Discontinue using any plugins that override getJoinValidator or
+getElectionStrategies in DiscoveryPlugin. You can see if any plugins
+use deprecated functionality by checking the Elasticsearch deprecation log.
+====
+

+ 2 - 0
server/src/main/java/org/elasticsearch/plugins/DiscoveryPlugin.java

@@ -76,6 +76,7 @@ public interface DiscoveryPlugin {
      * join attempt but might be called multiple times during the lifetime of a node. Validators are expected to throw a
      * {@link IllegalStateException} if the node and the cluster-state are incompatible.
      */
+    @Deprecated
     default BiConsumer<DiscoveryNode, ClusterState> getJoinValidator() {
         return null;
     }
@@ -83,6 +84,7 @@ public interface DiscoveryPlugin {
     /**
      * Allows plugging in election strategies (see {@link ElectionStrategy}) that define a customized notion of an election quorum.
      */
+    @Deprecated
     default Map<String, ElectionStrategy> getElectionStrategies() {
         return Collections.emptyMap();
     }