Umbrella: inventory deprecated API and remove what is marked for removal
- 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