This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch pacemaker-hardening
in repository https://gitbox.apache.org/repos/asf/storm.git

commit f5429296dba9f30b791cd9f034c52319cae74ac7
Author: Richard Zowalla <[email protected]>
AuthorDate: Fri Sep 11 19:10:37 2026 +0200

    Mark Pacemaker as deprecated
    
    Pacemaker was built to take worker heartbeat writes off ZooKeeper. Since
    STORM-2693 workers heartbeat to their supervisor, which reports them to
    Nimbus, so the daemon is only kept for backward compatibility; the metrics
    documentation already describes it as deprecated.
    
    Mark the Pacemaker server and client classes, the pacemaker state storage
    and the pacemaker.* configuration keys as @Deprecated, and add a notice to
    docs/Pacemaker.md and to the storm pacemaker command help.
---
 bin/storm.py                                         |  4 ++++
 docs/Pacemaker.md                                    |  6 ++++++
 storm-client/src/jvm/org/apache/storm/Config.java    | 20 ++++++++++++++++++++
 .../apache/storm/cluster/PaceMakerStateStorage.java  |  8 ++++++++
 .../storm/cluster/PaceMakerStateStorageFactory.java  |  8 ++++++++
 .../apache/storm/cluster/StormClusterStateImpl.java  |  1 +
 .../org/apache/storm/pacemaker/PacemakerClient.java  |  8 ++++++++
 .../storm/pacemaker/PacemakerClientHandler.java      |  8 ++++++++
 .../apache/storm/pacemaker/PacemakerClientPool.java  |  8 ++++++++
 .../pacemaker/PacemakerConnectionException.java      |  8 ++++++++
 .../apache/storm/pacemaker/codec/ThriftDecoder.java  |  8 ++++++++
 .../apache/storm/pacemaker/codec/ThriftEncoder.java  |  8 ++++++++
 .../pacemaker/codec/ThriftNettyClientCodec.java      |  8 ++++++++
 .../storm/PaceMakerStateStorageFactoryTest.java      |  1 +
 .../storm/pacemaker/codec/ThriftDecoderTest.java     |  1 +
 .../src/main/java/org/apache/storm/DaemonConfig.java |  8 ++++++++
 .../storm/pacemaker/IServerMessageHandler.java       |  8 ++++++++
 .../java/org/apache/storm/pacemaker/Pacemaker.java   |  8 ++++++++
 .../org/apache/storm/pacemaker/PacemakerServer.java  |  8 ++++++++
 .../pacemaker/codec/PacemakerServerHandler.java      |  5 +++++
 .../pacemaker/codec/ThriftNettyServerCodec.java      |  8 ++++++++
 .../test/java/org/apache/storm/PacemakerTest.java    |  1 +
 .../apache/storm/pacemaker/PacemakerServerTest.java  |  1 +
 23 files changed, 152 insertions(+)

diff --git a/bin/storm.py b/bin/storm.py
index 55c211df8..f8c7ab3f1 100755
--- a/bin/storm.py
+++ b/bin/storm.py
@@ -925,6 +925,10 @@ def initialize_pacemaker_subcommand(subparsers):
     Launches the Pacemaker daemon. This command should be run under
     supervision with a tool like daemontools or monit.
 
+    Deprecated: Pacemaker is only kept for backward compatibility and will be
+    removed in a future release. By default workers heartbeat to their
+    supervisor, which reports them to Nimbus; no Pacemaker is needed.
+
     See Setting up a Storm cluster for more information.
     (https://storm.apache.org/documentation/Setting-up-a-Storm-cluster)
     """
diff --git a/docs/Pacemaker.md b/docs/Pacemaker.md
index 75fa74855..df004f91a 100644
--- a/docs/Pacemaker.md
+++ b/docs/Pacemaker.md
@@ -4,6 +4,12 @@ layout: documentation
 documentation: true
 ---
 
+> **Deprecated:** Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+> Since Storm 2.0 
([STORM-2693](https://issues.apache.org/jira/browse/STORM-2693)) workers no 
longer heartbeat directly into
+> ZooKeeper: each worker writes its heartbeats to local disk and its 
supervisor reports them to Nimbus over Thrift (see
+> [Daemon Fault Tolerance](Daemon-Fault-Tolerance.html)). This removes the 
ZooKeeper write load Pacemaker was built to avoid.
+> New clusters should keep the default `storm.cluster.state.store: 
"org.apache.storm.cluster.ZKStateStorageFactory"` and
+> not run Pacemaker; existing deployments should plan to move back to it.
 
 ### Introduction
 Pacemaker is a storm daemon designed to process heartbeats from workers. As 
Storm is scaled up, ZooKeeper begins to become a bottleneck due to high volumes 
of writes from workers doing heartbeats. Lots of writes to disk and too much 
traffic across the network is generated as ZooKeeper tries to maintain 
consistency.
diff --git a/storm-client/src/jvm/org/apache/storm/Config.java 
b/storm-client/src/jvm/org/apache/storm/Config.java
index 53f8eefdf..519b8d943 100644
--- a/storm-client/src/jvm/org/apache/storm/Config.java
+++ b/storm-client/src/jvm/org/apache/storm/Config.java
@@ -1119,36 +1119,56 @@ public class Config extends HashMap<String, Object> {
     public static final String TOPOLOGY_MAX_REPLICATION_WAIT_TIME_SEC = 
"topology.max.replication.wait.time.sec";
     /**
      * The list of servers that Pacemaker is running on.
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @IsStringList
+    @Deprecated
     public static final String PACEMAKER_SERVERS = "pacemaker.servers";
     /**
      * The port Pacemaker should run on. Clients should connect to this port 
to submit or read heartbeats.
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @IsNumber
     @IsPositiveNumber
+    @Deprecated
     public static final String PACEMAKER_PORT = "pacemaker.port";
     /**
      * The maximum number of threads that should be used by the Pacemaker 
client.
      * When Pacemaker gets loaded it will spawn new threads, up to
      * this many total, to handle the load.
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @IsNumber
     @IsPositiveNumber
+    @Deprecated
     public static final String PACEMAKER_CLIENT_MAX_THREADS = 
"pacemaker.client.max.threads";
     /**
      * This should be one of "DIGEST", "KERBEROS", or "NONE" Determines the 
mode of authentication the pacemaker server and client use. The
      * client must either match the server, or be NONE. In the case of NONE, 
no authentication is performed for the client, and if the
      * server is running with DIGEST or KERBEROS, the client can only write to 
the server (no reads). This is intended to provide a
      * primitive form of access-control.
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @CustomValidator(validatorClass = 
ConfigValidation.PacemakerAuthTypeValidator.class)
+    @Deprecated
     public static final String PACEMAKER_AUTH_METHOD = "pacemaker.auth.method";
     /**
      * Pacemaker Thrift Max Message Size (bytes).
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @IsInteger
     @IsPositiveNumber
+    @Deprecated
     public static final String PACEMAKER_THRIFT_MESSAGE_SIZE_MAX = 
"pacemaker.thrift.message.size.max";
     /**
      * Max no.of seconds group mapping service will cache user groups
diff --git 
a/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorage.java 
b/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorage.java
index e746e5ec6..effaeea11 100644
--- a/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorage.java
+++ b/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorage.java
@@ -37,6 +37,14 @@ import org.apache.storm.utils.WrappedHBExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * State storage that keeps worker heartbeats in Pacemaker and everything else 
in ZooKeeper.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class PaceMakerStateStorage implements IStateStorage {
 
     private static final int maxRetries = 10;
diff --git 
a/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorageFactory.java
 
b/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorageFactory.java
index 596aefab6..6b8e3bf32 100644
--- 
a/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorageFactory.java
+++ 
b/storm-client/src/jvm/org/apache/storm/cluster/PaceMakerStateStorageFactory.java
@@ -22,6 +22,14 @@ import java.util.Map;
 import org.apache.storm.pacemaker.PacemakerClientPool;
 import org.apache.storm.utils.Utils;
 
+/**
+ * Factory for {@link PaceMakerStateStorage}.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class PaceMakerStateStorageFactory implements StateStorageFactory {
     @Override
     public IStateStorage mkStore(Map<String, Object> config, Map<String, 
Object> authConf, ClusterStateContext context) {
diff --git 
a/storm-client/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java 
b/storm-client/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java
index 3044b37ca..8be795c2b 100644
--- a/storm-client/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java
+++ b/storm-client/src/jvm/org/apache/storm/cluster/StormClusterStateImpl.java
@@ -230,6 +230,7 @@ public class StormClusterStateImpl implements 
IStormClusterState {
     }
 
     @Override
+    @SuppressWarnings("deprecation")
     public boolean isPacemakerStateStore() {
         if (stateStorage == null) {
             return false;
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClient.java 
b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClient.java
index 4d8e6b528..b4a4b66b3 100644
--- a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClient.java
+++ b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClient.java
@@ -39,6 +39,14 @@ import 
org.apache.storm.utils.StormBoundedExponentialBackoffRetry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Netty client that sends heartbeat requests to a single Pacemaker server.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class PacemakerClient implements ISaslClient {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(PacemakerClient.class);
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientHandler.java 
b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientHandler.java
index 31fabc1a1..c3e183cd8 100644
--- 
a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientHandler.java
+++ 
b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientHandler.java
@@ -21,6 +21,14 @@ import 
org.apache.storm.shade.io.netty.channel.ChannelInboundHandlerAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Inbound handler of the Pacemaker client pipeline.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class PacemakerClientHandler extends ChannelInboundHandlerAdapter {
     private static final Logger LOG = 
LoggerFactory.getLogger(PacemakerClientHandler.class);
 
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientPool.java 
b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientPool.java
index e17c77b4c..43c6c1f7c 100644
--- a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientPool.java
+++ b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerClientPool.java
@@ -23,6 +23,14 @@ import org.apache.storm.generated.HBMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Pool of clients for the configured Pacemaker servers.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class PacemakerClientPool {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(PacemakerClientPool.class);
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerConnectionException.java
 
b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerConnectionException.java
index aedcbcf7b..3390cc5a8 100644
--- 
a/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerConnectionException.java
+++ 
b/storm-client/src/jvm/org/apache/storm/pacemaker/PacemakerConnectionException.java
@@ -12,6 +12,14 @@
 
 package org.apache.storm.pacemaker;
 
+/**
+ * Thrown when no connection to a Pacemaker server is available.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class PacemakerConnectionException extends Exception {
     public PacemakerConnectionException(String err) {
         super(err);
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftDecoder.java 
b/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftDecoder.java
index 6b83e298c..f134a3856 100644
--- a/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftDecoder.java
+++ b/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftDecoder.java
@@ -25,6 +25,14 @@ import org.apache.storm.utils.Utils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Decodes length-prefixed thrift {@link HBMessage} frames of the Pacemaker 
protocol.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class ThriftDecoder extends ByteToMessageDecoder {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(ThriftDecoder.class);
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftEncoder.java 
b/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftEncoder.java
index 659f05166..d029888f1 100644
--- a/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftEncoder.java
+++ b/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftEncoder.java
@@ -28,6 +28,14 @@ import org.apache.storm.utils.Utils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Encodes messages as length-prefixed thrift {@link HBMessage} frames of the 
Pacemaker protocol.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class ThriftEncoder extends MessageToMessageEncoder<Object> {
 
     private static final Logger LOG = LoggerFactory
diff --git 
a/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftNettyClientCodec.java
 
b/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftNettyClientCodec.java
index b20883437..55f94d5da 100644
--- 
a/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftNettyClientCodec.java
+++ 
b/storm-client/src/jvm/org/apache/storm/pacemaker/codec/ThriftNettyClientCodec.java
@@ -25,6 +25,14 @@ import 
org.apache.storm.shade.io.netty.channel.ChannelPipeline;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Builds the Pacemaker client pipeline.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class ThriftNettyClientCodec extends ChannelInitializer<Channel> {
 
     public static final String SASL_HANDLER = "sasl-handler";
diff --git 
a/storm-client/test/jvm/org/apache/storm/PaceMakerStateStorageFactoryTest.java 
b/storm-client/test/jvm/org/apache/storm/PaceMakerStateStorageFactoryTest.java
index 8b482e823..65590d41d 100644
--- 
a/storm-client/test/jvm/org/apache/storm/PaceMakerStateStorageFactoryTest.java
+++ 
b/storm-client/test/jvm/org/apache/storm/PaceMakerStateStorageFactoryTest.java
@@ -48,6 +48,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 @ExtendWith(MockitoExtension.class)
+@SuppressWarnings("deprecation")
 public class PaceMakerStateStorageFactoryTest {
     
     @Captor
diff --git 
a/storm-client/test/jvm/org/apache/storm/pacemaker/codec/ThriftDecoderTest.java 
b/storm-client/test/jvm/org/apache/storm/pacemaker/codec/ThriftDecoderTest.java
index 20df39967..f14ea585b 100644
--- 
a/storm-client/test/jvm/org/apache/storm/pacemaker/codec/ThriftDecoderTest.java
+++ 
b/storm-client/test/jvm/org/apache/storm/pacemaker/codec/ThriftDecoderTest.java
@@ -32,6 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@SuppressWarnings("deprecation")
 public class ThriftDecoderTest {
 
     private static final int MAX_LENGTH = 1024 * 1024;
diff --git a/storm-server/src/main/java/org/apache/storm/DaemonConfig.java 
b/storm-server/src/main/java/org/apache/storm/DaemonConfig.java
index 4805f5195..e535baf1b 100644
--- a/storm-server/src/main/java/org/apache/storm/DaemonConfig.java
+++ b/storm-server/src/main/java/org/apache/storm/DaemonConfig.java
@@ -682,15 +682,23 @@ public class DaemonConfig implements Validated {
     /**
      * The maximum number of threads that should be used by the Pacemaker. 
When Pacemaker gets loaded it will spawn new threads, up to this
      * many total, to handle the load.
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @IsNumber
     @IsPositiveNumber
+    @Deprecated
     public static final String PACEMAKER_MAX_THREADS = "pacemaker.max.threads";
 
     /**
      * This parameter is used by the storm-deploy project to configure the jvm 
options for the pacemaker daemon.
+     *
+     * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+     *     Use the default heartbeat path (workers heartbeat to their 
supervisor, which reports them to Nimbus) instead.
      */
     @IsStringOrStringList
+    @Deprecated
     public static final String PACEMAKER_CHILDOPTS = "pacemaker.childopts";
 
 
diff --git 
a/storm-server/src/main/java/org/apache/storm/pacemaker/IServerMessageHandler.java
 
b/storm-server/src/main/java/org/apache/storm/pacemaker/IServerMessageHandler.java
index 73451e9cf..dac6d4442 100644
--- 
a/storm-server/src/main/java/org/apache/storm/pacemaker/IServerMessageHandler.java
+++ 
b/storm-server/src/main/java/org/apache/storm/pacemaker/IServerMessageHandler.java
@@ -14,6 +14,14 @@ package org.apache.storm.pacemaker;
 
 import org.apache.storm.generated.HBMessage;
 
+/**
+ * Handles heartbeat requests received by a Pacemaker server.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public interface IServerMessageHandler {
 
     HBMessage handleMessage(HBMessage m, boolean authenticated);
diff --git 
a/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java 
b/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
index 51441512c..a7809c407 100644
--- a/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
+++ b/storm-server/src/main/java/org/apache/storm/pacemaker/Pacemaker.java
@@ -33,6 +33,14 @@ import org.apache.storm.utils.VersionInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * The Pacemaker daemon, an in-memory store for worker heartbeats.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class Pacemaker implements IServerMessageHandler {
 
     private static final Logger LOG = LoggerFactory.getLogger(Pacemaker.class);
diff --git 
a/storm-server/src/main/java/org/apache/storm/pacemaker/PacemakerServer.java 
b/storm-server/src/main/java/org/apache/storm/pacemaker/PacemakerServer.java
index 4bef3d8c1..b923b2520 100644
--- a/storm-server/src/main/java/org/apache/storm/pacemaker/PacemakerServer.java
+++ b/storm-server/src/main/java/org/apache/storm/pacemaker/PacemakerServer.java
@@ -38,6 +38,14 @@ import 
org.apache.storm.shade.io.netty.util.concurrent.GlobalEventExecutor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Netty server of the Pacemaker daemon.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 class PacemakerServer implements ISaslServer {
 
     private static final int FIVE_MB_IN_BYTES = 5 * 1024 * 1024;
diff --git 
a/storm-server/src/main/java/org/apache/storm/pacemaker/codec/PacemakerServerHandler.java
 
b/storm-server/src/main/java/org/apache/storm/pacemaker/codec/PacemakerServerHandler.java
index 890d453e4..7bd8b1a82 100644
--- 
a/storm-server/src/main/java/org/apache/storm/pacemaker/codec/PacemakerServerHandler.java
+++ 
b/storm-server/src/main/java/org/apache/storm/pacemaker/codec/PacemakerServerHandler.java
@@ -22,7 +22,12 @@ import org.slf4j.LoggerFactory;
  * Pacemaker server handler. A failure while handling a request only affects 
the connection it arrived on: the
  * connection is closed and the Pacemaker server keeps serving its other 
clients. Errors are still handled by
  * {@link StormServerHandler}.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
  */
+@Deprecated
 public class PacemakerServerHandler extends StormServerHandler {
     private static final Logger LOG = 
LoggerFactory.getLogger(PacemakerServerHandler.class);
 
diff --git 
a/storm-server/src/main/java/org/apache/storm/pacemaker/codec/ThriftNettyServerCodec.java
 
b/storm-server/src/main/java/org/apache/storm/pacemaker/codec/ThriftNettyServerCodec.java
index b2ef23af4..2b93372f6 100644
--- 
a/storm-server/src/main/java/org/apache/storm/pacemaker/codec/ThriftNettyServerCodec.java
+++ 
b/storm-server/src/main/java/org/apache/storm/pacemaker/codec/ThriftNettyServerCodec.java
@@ -28,6 +28,14 @@ import 
org.apache.storm.shade.io.netty.channel.ChannelPipeline;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Builds the Pacemaker server pipeline.
+ *
+ * @deprecated Pacemaker is deprecated and only kept for backward 
compatibility; it will be removed in a future release.
+ *     Use the default heartbeat path instead: workers heartbeat to their 
supervisor, which reports them to Nimbus over
+ *     Thrift, with the default ZooKeeper-based cluster state store ({@code 
org.apache.storm.cluster.ZKStateStorageFactory}).
+ */
+@Deprecated
 public class ThriftNettyServerCodec extends ChannelInitializer<Channel> {
 
     public static final String SASL_HANDLER = "sasl-handler";
diff --git a/storm-server/src/test/java/org/apache/storm/PacemakerTest.java 
b/storm-server/src/test/java/org/apache/storm/PacemakerTest.java
index e8ea2a441..9fd5505f8 100644
--- a/storm-server/src/test/java/org/apache/storm/PacemakerTest.java
+++ b/storm-server/src/test/java/org/apache/storm/PacemakerTest.java
@@ -32,6 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@SuppressWarnings("deprecation")
 public class PacemakerTest {
 
     private HBMessage hbMessage;
diff --git 
a/storm-server/src/test/java/org/apache/storm/pacemaker/PacemakerServerTest.java
 
b/storm-server/src/test/java/org/apache/storm/pacemaker/PacemakerServerTest.java
index 99919b95a..83c81a2ad 100644
--- 
a/storm-server/src/test/java/org/apache/storm/pacemaker/PacemakerServerTest.java
+++ 
b/storm-server/src/test/java/org/apache/storm/pacemaker/PacemakerServerTest.java
@@ -52,6 +52,7 @@ import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+@SuppressWarnings("deprecation")
 public class PacemakerServerTest {
 
     private static final int MAX_LENGTH = 1024 * 1024;

Reply via email to