Mohit20057 commented on issue #8994:
URL: https://github.com/apache/storm/issues/8994#issuecomment-6175980459

   ## Deprecation Inventory & Action Report (#8994)
   
   An exhaustive repository-wide audit was conducted across all Apache Storm 
modules (`storm-client`, `storm-server`, `external/*`, `flux/*`, and core 
subsystems) to inventory every `@Deprecated` declaration, execute safe removals 
where `forRemoval = true` was established since 3.1.0, and classify surviving 
APIs for the 4.0.0 roadmap.
   
   ### Summary Metrics
   * **Total Deprecated Elements Audited:** 68
   * **Elements Safely Removed in 3.1.1 (PRs #9167–#9170):** 12
   * **Pacemaker Subsystem Marked `forRemoval = true` (PR #9171):** 17
   * **Surviving Public APIs Classified `forRemoval = true` (PRs 
#9172–#9173):** 34
   * **APIs Retained for Compatibility with `forRemoval = false` (PRs 
#9172–#9173):** 5
   * **Current State:** 100% of surviving `@Deprecated` declarations have 
explicit `since = "..."` and `forRemoval = true|false` attributes. Zero bare 
`@Deprecated` annotations remain in the production codebase.
   
   ---
   
   ### Pull Request Index
   
   | Sub-task | Scope | Pull Request | Status |
   | :--- | :--- | :--- | :--- |
   | **PR 1** | Remove insecure `BlowfishTupleSerializer` & Nimbus default | 
[#9167](https://github.com/apache/storm/pull/9167) | Open |
   | **PR 2** | Remove legacy ZK backpressure state (`IStormClusterState`) | 
[#9168](https://github.com/apache/storm/pull/9168) | Open |
   | **PR 3** | Remove obsolete client configs (`STORM_METRICS_REPORTERS`, 
`BLOBSTORE_HDFS_*`) | [#9169](https://github.com/apache/storm/pull/9169) | Open 
|
   | **PR 4** | Remove unused `DaemonConfig.NIMBUS_SUPERVISOR_TIMEOUT_SECS` | 
[#9170](https://github.com/apache/storm/pull/9170) | Open |
   | **PR 5** | Mark dormant Pacemaker heartbeat subsystem `forRemoval = true` 
| [#9171](https://github.com/apache/storm/pull/9171) | Open |
   | **PR 6** | Classify surviving `storm-client` deprecated APIs | 
[#9172](https://github.com/apache/storm/pull/9172) | Open |
   | **PR 7** | Classify surviving `storm-server`, `storm-hdfs`, and `flux` 
APIs | [#9173](https://github.com/apache/storm/pull/9173) | Open |
   
   ---
   
   ### 1. Elements Safely Removed (PRs #9167–#9170)
   
   | Target Element | Module | Since | API Type | Replacement / Rationale | 
Resolution |
   | :--- | :--- | :--- | :--- | :--- | :--- |
   | `BlowfishTupleSerializer` | `storm-client` | 3.1.0 | Public SPI | Insecure 
legacy cipher; topologies needing payload encryption should use SASL transport 
encryption or modern custom serializers. | **Removed** 
([#9167](https://github.com/apache/storm/pull/9167)) |
   | `IStormClusterState#backpressureTopologies()` | `storm-client` | 2.0.0 | 
Internal / SPI | Storm 2.x uses in-memory watermark queues 
(`JCQueueBackpressure`); ZooKeeper backpressure znodes are dead code. | 
**Removed** ([#9168](https://github.com/apache/storm/pull/9168)) |
   | `IStormClusterState#topologyBackpressure(...)` | `storm-client` | 2.0.0 | 
Internal / SPI | Replaced by in-memory queue watermark tracking. | **Removed** 
([#9168](https://github.com/apache/storm/pull/9168)) |
   | `IStormClusterState#setupBackpressure(...)` | `storm-client` | 2.0.0 | 
Internal / SPI | Replaced by in-memory queue watermark tracking. | **Removed** 
([#9168](https://github.com/apache/storm/pull/9168)) |
   | `IStormClusterState#removeBackpressure(...)` | `storm-client` | 2.0.0 | 
Internal / SPI | Replaced by in-memory queue watermark tracking. | **Removed** 
([#9168](https://github.com/apache/storm/pull/9168)) |
   | `IStormClusterState#removeWorkerBackpressure(...)` | `storm-client` | 
2.0.0 | Internal / SPI | Replaced by in-memory queue watermark tracking. | 
**Removed** ([#9168](https://github.com/apache/storm/pull/9168)) |
   | `Config.TOPOLOGY_BACKPRESSURE_ENABLE` | `storm-client` | 2.0.0 | 
Configuration | Backpressure is always enabled in Storm 2.x/3.x. | **Removed** 
([#9168](https://github.com/apache/storm/pull/9168)) |
   | `Config.STORM_METRICS_REPORTERS` | `storm-client` | 2.0.0 | Configuration 
| Use `Config.TOPOLOGY_METRICS_REPORTERS` instead. | **Removed** 
([#9169](https://github.com/apache/storm/pull/9169)) |
   | `Config.BLOBSTORE_HDFS_PRINCIPAL` | `storm-client` | 2.0.0 | Configuration 
| Use `Config.STORM_HDFS_LOGIN_PRINCIPAL` instead. | **Removed** 
([#9169](https://github.com/apache/storm/pull/9169)) |
   | `Config.BLOBSTORE_HDFS_KEYTAB` | `storm-client` | 2.0.0 | Configuration | 
Use `Config.STORM_HDFS_LOGIN_KEYTAB` instead. | **Removed** 
([#9169](https://github.com/apache/storm/pull/9169)) |
   | `Config.getBlobstoreHDFSPrincipal(Map)` | `storm-client` | 2.0.0 | Public 
API | Use `Config.getHdfsPrincipal(Map)` instead. | **Removed** 
([#9169](https://github.com/apache/storm/pull/9169)) |
   | `DaemonConfig.NIMBUS_SUPERVISOR_TIMEOUT_SECS` | `storm-server` | 3.1.0 | 
Configuration | Unused; supervisor liveness is tracked via ephemeral ZooKeeper 
znodes (`supervisorHeartbeat`). Removed from `defaults.yaml`. | **Removed** 
([#9170](https://github.com/apache/storm/pull/9170)) |
   
   ---
   
   ### 2. Pacemaker Subsystem Deprecations (PR #9171)
   
   | Target Element | Module | Since | API Type | Decision | Pull Request |
   | :--- | :--- | :--- | :--- | :--- | :--- |
   | `Config.PACEMAKER_SERVERS` (`pacemaker.servers`) | `storm-client` | 2.0.0 
| Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `Config.PACEMAKER_PORT` (`pacemaker.port`) | `storm-client` | 2.0.0 | 
Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `Config.PACEMAKER_MAX_THREADS` (`pacemaker.max.threads`) | `storm-client` 
| 2.0.0 | Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `Config.PACEMAKER_THREAD_POOL_SIZE` (`pacemaker.thread.pool.size`) | 
`storm-client` | 2.0.0 | Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `Config.PACEMAKER_AUTH_METHOD` (`pacemaker.auth.method`) | `storm-client` 
| 2.0.0 | Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `DaemonConfig.STORM_PACEMAKER_STARTUP_OPTS` | `storm-server` | 2.0.0 | 
Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `DaemonConfig.PACEMAKER_KERBEROS_USERS` | `storm-server` | 2.0.0 | 
Configuration | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `PaceMakerStateStorage`, `PaceMakerStateStorageFactory` | `storm-client` | 
2.0.0 | Internal / SPI | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `PacemakerClient`, `PacemakerClientHandler`, `PacemakerClientPool` | 
`storm-client` | 2.0.0 | Internal Daemon | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `PacemakerConnectionException` | `storm-client` | 2.0.0 | Internal Daemon 
| `forRemoval = true` | [#9171](https://github.com/apache/storm/pull/9171) |
   | `ThriftDecoder`, `ThriftEncoder`, `ThriftNettyClientCodec` | 
`storm-client` | 2.0.0 | Internal Daemon | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `IServerMessageHandler`, `Pacemaker`, `PacemakerServer` | `storm-server` | 
2.0.0 | Internal Daemon | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   | `PacemakerServerHandler`, `ThriftNettyServerCodec` | `storm-server` | 
2.0.0 | Internal Daemon | `forRemoval = true` | 
[#9171](https://github.com/apache/storm/pull/9171) |
   
   ---
   
   ### 3. Surviving `storm-client` APIs (PRs #9172 & #9173)
   
   | Target Element | Since | API Type | Decision | Replacement / Rationale | 
Pull Request |
   | :--- | :--- | :--- | :--- | :--- | :--- |
   | `Config.STORM_DO_AS_USER` | 2.0.0 | Configuration | `forRemoval = true` | 
Use `Config.STORM_PRINCIPAL_TO_LOCAL_PLUGIN`. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `ILocalCluster.Builder#withNimbusDaemon(boolean)` | 2.0.0 | Public API | 
`forRemoval = true` | No-op; in-process Nimbus daemon is always launched. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `ILocalDRPC` extends `IComponent` | 2.0.0 | Public API | `forRemoval = 
false` | **Retained**: Required for declaring DRPC spout/bolt topology DAGs in 
local testing. | [#9172](https://github.com/apache/storm/pull/9172) |
   | `IContext#prepare(Map)` | 2.3.0 | SPI | `forRemoval = true` | Use 
`prepare(Map, StormMetricRegistry)`. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `CGroupCpu`, `CGroupCpuGuarantee`, `CGroupCpuGuaranteeByCfsQuota` | 2.0.0 
| Public API | `forRemoval = true` | Replaced by `org.apache.storm.metrics2` 
subsystem. | [#9172](https://github.com/apache/storm/pull/9172) |
   | `CGroupMemoryLimit`, `CGroupMemoryUsage`, `CGroupMetricsBase` | 2.0.0 | 
Public API | `forRemoval = true` | Replaced by `org.apache.storm.metrics2` 
subsystem. | [#9172](https://github.com/apache/storm/pull/9172) |
   | `INimbusCredentialPlugin#populateCredentials(Map, Map)` | 2.4.0 | SPI | 
`forRemoval = true` | Use 3-arg overload `populateCredentials(Map, Map, 
String)`. | [#9172](https://github.com/apache/storm/pull/9172) |
   | `IKryoDecorator` | 2.0.0 | SPI | `forRemoval = false` | **Retained**: 
Fundamental serialization customization hook for topology authors. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `IMetricsContext#registerMetric(...)` (3 overloads) | 2.3.0 | SPI | 
`forRemoval = true` | Migrate to `org.apache.storm.metrics2`. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `TopologyContext#registerMetric(...)` (4 overloads) | 2.3.0 | Public API | 
`forRemoval = true` | Migrate to V2 metrics 
(`TopologyContext#gauge/meter/counter/timer`). | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `TopologyContext#getHooks()` | 2.0.0 | Public API | `forRemoval = false` | 
**Retained**: Allows introspection of registered task hooks. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `TransactionAttempt` | 2.0.0 | Public API | `forRemoval = true` | Legacy 
pre-Trident transaction framework; use Trident spouts and states. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `NimbusClient` (8 legacy constructors & `getConfiguredClient(Map)`) | 
2.0.0 | Public API | `forRemoval = true` | Use `NimbusClient.Builder` or 
`getConfiguredClientAs(Map, asUser)`. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `SupervisorClient` (7 legacy constructors & `getConfiguredClient(Map)`) | 
2.0.0 | Public API | `forRemoval = true` | Use `SupervisorClient.Builder` or 
`getConfiguredClientAs(Map, asUser)`. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `Time#isSimulating()`, `Time#stopSimulating()` | 2.0.0 | Public API | 
`forRemoval = false` | **Retained**: Widely used in integration and unit tests 
across Storm and downstream users. | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `TimeCacheMap` | 2.0.0 | Public API | `forRemoval = true` | Replaced by 
`RotatingMap` or standard cache implementations (Caffeine / Guava). | 
[#9172](https://github.com/apache/storm/pull/9172) |
   | `PlainSaslTransportPlugin`, `PlainClientCallbackHandler`, 
`SaslPlainServer` | 2.0.0 | Internal / Test | `forRemoval = true` | Test-only 
insecure plaintext SASL transport; provides no real authentication. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `StormMetricRegistry#gauge(..., Integer port)` | 2.3.0 | Public API | 
`forRemoval = true` | Use `gauge(String, Gauge, String, Integer)` or 
`TopologyContext` overload. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `StormReporter#prepare(MetricRegistry, ...)` | 2.3.0 | SPI | `forRemoval = 
true` | Use default method `prepare(MetricRegistryProvider, Map, Map)`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `LinearDRPCTopologyBuilder#addBolt(IRichBolt...)` (2 overloads) | 2.0.0 | 
Public API | `forRemoval = true` | Use `addBolt(IBatchBolt, ...)` or 
`addBolt(IBasicBolt, ...)`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   
   ---
   
   ### 4. Surviving `storm-server` & External Modules (PR #9173)
   
   | Target Element | Module | Since | API Type | Decision | Replacement / 
Rationale | Pull Request |
   | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
   | `Testing#withSimulatedTimeLocalCluster(TestJob)` | `storm-server` | 2.0.0 
| Public API | `forRemoval = true` | Use `ILocalCluster.Builder` with simulated 
time. | [#9173](https://github.com/apache/storm/pull/9173) |
   | `Testing#withLocalCluster(...)` (2 overloads) | `storm-server` | 2.0.0 | 
Public API | `forRemoval = true` | Use `try (ILocalCluster cluster = new 
ILocalCluster.Builder().build())`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `Testing#withTrackedCluster(...)` (2 overloads) | `storm-server` | 2.0.0 | 
Public API | `forRemoval = true` | Use `Testing#withSimulatedTime` and 
`ILocalCluster`. | [#9173](https://github.com/apache/storm/pull/9173) |
   | `Testing#readTuples(...)` (2 overloads) | `storm-server` | 2.0.0 | Public 
API | `forRemoval = true` | Use `Testing#readTuples(Collection, String)`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `Testing#multiseteq(Collection, Collection)` | `storm-server` | 2.0.0 | 
Public API | `forRemoval = true` | Use `Testing#multiseteq(List, List)` or 
AssertJ `containsExactlyInAnyOrder`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `SchedulerAssignmentImpl#getStatus()` | `storm-server` | 2.0.0 | Public 
API | `forRemoval = false` | **Retained**: Consumed by Nimbus UI daemon and 
REST APIs. | [#9173](https://github.com/apache/storm/pull/9173) |
   | `BaseResourceAwareStrategy#sortAllNodes(...)` | `storm-server` | 2.0.0 | 
SPI | `forRemoval = true` | Use `NodeSorter#sortAllNodes(Cluster)`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `BaseResourceAwareStrategy#nodeToRack(RasNode)` | `storm-server` | 2.0.0 | 
SPI | `forRemoval = true` | Use `RasNode#getRackId()`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `BaseResourceAwareStrategy#getBestClusteringByDescWorkerResources(...)` | 
`storm-server` | 2.0.0 | SPI | `forRemoval = true` | Use 
`StrategyOptionHelper`. | [#9173](https://github.com/apache/storm/pull/9173) |
   | `BaseResourceAwareStrategy#hostnameToRack(String)` | `storm-server` | 
2.0.0 | SPI | `forRemoval = true` | Use `Cluster#getHost(String)#getRackId()`. 
| [#9173](https://github.com/apache/storm/pull/9173) |
   | `NodeSorter#sortAllNodes(...)` (no Cluster) | `storm-server` | 2.4.0 | SPI 
| `forRemoval = true` | Use `NodeSorter#sortAllNodes(Cluster)`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `NodeSorterHostProximity#sortAllNodes(...)` (no Cluster) | `storm-server` 
| 2.4.0 | SPI | `forRemoval = true` | Use 
`NodeSorterHostProximity#sortAllNodes(Cluster)`. | 
[#9173](https://github.com/apache/storm/pull/9173) |
   | `Flux.java` (4 CLI option constants) | `flux-core` | 2.0.0 | Internal | 
`forRemoval = true` | Obsolete CLI options (`--local`, `--remote`, `--sleep`, 
`--zookeeper`). | [#9173](https://github.com/apache/storm/pull/9173) |
   | `Configs.java` (12 HDFS Spout config keys) | `storm-hdfs` | 2.0.0 | 
Configuration | `forRemoval = true` | Use builder setters on `HdfsSpout` 
directly. | [#9173](https://github.com/apache/storm/pull/9173) |
   | `HdfsState#addRotationAction(RotationAction)` | `storm-hdfs` | 2.0.0 | 
Public API | `forRemoval = true` | Configure rotation policies or use 
`SequenceFileOptions`. | [#9173](https://github.com/apache/storm/pull/9173) |
   
   ---
   
   ## 5. Strategic Roadmap for Release 4.0.0
   
   Based on this inventory, the following roadmap is recommended for the 4.0.0 
release:
   
   1. **Delete all elements marked `forRemoval = true`** across `storm-client`, 
`storm-server`, `storm-hdfs`, and `flux-core` (cataloged in 
[#9171](https://github.com/apache/storm/pull/9171), 
[#9172](https://github.com/apache/storm/pull/9172), and 
[#9173](https://github.com/apache/storm/pull/9173)).
   2. **Remove the Pacemaker daemon and client library** entirely 
([#9171](https://github.com/apache/storm/pull/9171)), eliminating obsolete 
thrift definitions and background heartbeat services.
   3. **Preserve the 5 retained compatibility elements (`forRemoval = false`)**:
      - `IKryoDecorator` (SPI hook)
      - `ILocalDRPC` (Local test wiring)
      - `TopologyContext#getHooks()` (Introspection)
      - `Time#isSimulating()` and `Time#stopSimulating()` (Testing)
      - `SchedulerAssignmentImpl#getStatus()` (Web UI / REST API)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to