apache / apache/storm

Umbrella: inventory deprecated API and remove what is marked for removal

Open
#8,994 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.7k
Forks
4k
Avg merge
1d 7h
Merged PRs (30d)
62

Description

## Summary

Umbrella issue to inventory the deprecated API surface still shipped by Storm, and to remove what is already marked for removal.

At `3.0.1-SNAPSHOT` the codebase carries 92 `@Deprecated` annotations, 10 of which declare `forRemoval = true`. Seven of those were flagged `since = "2.0.0"` and have therefore survived a full major boundary, so the removal window they announced has already passed. Deprecated-but-alive code keeps dead configuration keys discoverable, forces callers to guess which of two paths is current, and quietly grows the surface every release.

## Current `forRemoval` sites

| Location | `since` |
|---|---|
| `storm-client/.../Config.java:138`, `:1619`, `:1650` | 2.0.0 |
| `storm-client/.../cluster/IStormClusterState.java:156`, `:184`, `:191`, `:198`, `:205` | 2.0.0 |
| `storm-client/.../security/serialization/BlowfishTupleSerializer.java:37` | 2.8.6 |
| `storm-server/.../DaemonConfig.java:287` | 3.1.0 |

## Scope

1. **Inventory** — enumerate every `@Deprecated` element, recording module, `since`, declared replacement, and whether it is public API.
2. **Classify** — for each entry, one of: remove now, keep and set `forRemoval` with a target version, or undeprecate because it is still the supported path.
3. **Remove** — drop the entries whose window has closed, together with their tests, documentation, and default configuration entries.
4. **Document** — record every removal in the release notes and the upgrade guide.

## Guidelines

- Removal of public API lands only on a major version; anything else is deferred, not silently kept.
- Every surviving `@Deprecated` element carries both `since` and a `forRemoval` decision, and names its replacement in Javadoc.
- One sub-task per module or coherent group, each independently reviewable and revertable.
- Configuration keys are removed from `defaults.yaml` and validation in the same change that removes the constant.

## Sub-tasks

- [ ] Publish the full deprecation inventory in this issue
- [ ] `storm-client` — `Config` keys
- [ ] `storm-client` — `IStormClusterState` methods
- [ ] `storm-client` — `BlowfishTupleSerializer`
- [ ] `storm-server` — `DaemonConfig` keys
- [ ] Remaining `@Deprecated` elements without a `forRemoval` decision
- [ ] Release notes and upgrade guide

Sub-tasks will be filed as separate issues and linked here.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by enumerating the @Deprecated elements across the storm-client and storm-server modules, recording each element's module, since value, replacement, and public-API status. Review the listed Config, IStormClusterState, BlowfishTupleSerializer, and DaemonConfig sites, then use the linked sub-tasks for independently reviewable work. Done means each entry has a removal or retention decision, applicable tests and configuration are updated, and removals appear in the release notes and upgrade guide.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend-api-design, distributed-systems
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.