Release Managers
Jiangjie Qin Xintong Song Martijn Visser Jark Wu
Release Sync
- The release sync is scheduled 8am Wed (GMT+2) / 2pm Wed (GMT+8) / 11pm Tues (GMT-7). Not every week will we have release sync. Please subscribe to the Google Calendar for updates.
- Everyone is welcome to join the release sync via Google Meet.
Timeline Plan
- Preview Release: End of Sep, 2024
- Feature Freeze: End of Nov, 2024
- Release: End of Dec, 2024 or Early Jan 2025
Work Items
Status (Updated: 08/20)
Done | Will make it | In danger | Very unlikely | Won't make it | State unclear | Total | |
---|---|---|---|---|---|---|---|
Breaking changes | 0 | 15 | 0 | 0 | 0 | 0 | 15 |
Features | 1 | 9 | 2 | 0 | 0 | 1 | 13 |
Breaking Changes (Targeting to finish by the Preview Release)
Name / JIRA / FLIP | Contributor | Reviewer | State | Last Update | Description / Note | |
---|---|---|---|---|---|---|
Programming API | Remove DataSet API |
| ||||
Remove Deprecated methods/fields/classes in DataStream API |
| |||||
| ||||||
| ||||||
| ||||||
Remove deprecated methods in Table API |
| |||||
Configuration |
| Note: This includes removing config options marked @Deprecated and removing config keys placed withDeprecatedKeys(). | ||||
Introduce a clean configuration layer FLIP-381: Deprecate configuration getters/setters that return/set complex Java objects FLIP-391: Deprecate RuntimeContext#getExecutionConfig |
| Goals: 2. Avoid exposing unnecessary configuration (i.e. the entire ExecutionConfig) to user functions | ||||
| Use a YAML compliant configuration parser. Note: While this can be introduced as an optional feature in 1.x (i.e., first parse with standard YAML parser, fall back to custom parsing as a backup), the goal for 2.0 would be to remove the custom parsing logic. | |||||
Revisit all config option types and default values | | Revisit all config option types and default values to determine whether any modifications are required for Flink 2.0. If any changes are necessary for configuration options marked as 'Public', they should be replaced with a new config option and deprecated in version 1.19; for other options, it should take place in version 1.20. | ||||
State | | |||||
Zakelly Lan | | Update RocksDB statebackend package | ||||
| Subsume Flink Time class with Java Duration.
| |||||
| ||||||
| Remove deprecated fields from ExceptionHistory API (all-exceptions , timestamp , root-exception , truncated ) |
Features (Targeting to finish by the Feature Freeze)
Name / JIRA / FLIP | Contributor | Reviewer | State | Last Update | Description / Note | |
---|---|---|---|---|---|---|
Introduce DataStream API V2 |
| This is an either in-place or smooth replacement of DataStream API. It differs from the current DataStream API mainly in the following aspects.
| ||||
Delta Join |
| Delta join is a new kind of stream-stream join implementation without maintaining any states. | ||||
State compatibility for SQL jobs |
| State compatibility of upgrading Flink version for SQL jobs. This can be a good API story and milestone for Flink SQL since 2.0.0. | ||||
Move Flink Calcite rules from Scala to Java. | ||||||
Disaggregated State Management |
| Disaggregated State Backend/Management in the cloud-native era.
Note: Only the public API related part is must-have for release 2.0. | ||||
Clarify the scopes of configuration options |
| Clarify the scopes of configuration options, i.e. job config, cluster config or both, to avoid misuses of configuration. The scopes should be displayed in Flink configuration documentation. | ||||
FLIP-461: Synchronize rescaling with checkpoint creation to minimize reprocessing for the AdaptiveScheduler | Zdenek Tison |
| ||||
FLIP-370: Support Balanced Tasks Scheduling | Rui Fan | |||||
FLIP-472: Aligning timeout logic in the AdaptiveScheduler's WaitingForResources and Executing states | Zdenek Tison |
| ||||
Upgrade checkstyle |
| |||||
Adaptive optimization for batch jobs |
| |||||
FLIP-470: Support Adaptive Broadcast Join |
| |||||
FLIP-475: Support Adaptive Skewed Join Optimization |
|
Legacy
Name / JIRA / FLIP | Priority | Contributor | Reviewer | Milestones | State | % | Last Update | Description / Note |
---|---|---|---|---|---|---|---|---|
Review and refactor the REST API |
| |||||||
FLIP-336: Remove "now" timestamp field from REST responses |
| Remove "now" field from various REST responses. This field contains the current timestamp, which is problematic w.r.t. caching and testing, while providing no value. | ||||||
FLIP-337: Remove JarRequestBody#programArgs |
| Remove JarRequestBody#programArgs in favor of #programArgsList. | ||||||
FLIP-338: Remove terminationMode query parameter from job cancellation REST endpoint |
| Remove terminationMode parameter from job cancellation endpoint. Effectively it only supports "cancel" as "stop" was moved into a dedicated endpoint. | ||||||
| Use a consistent naming convention for all REST API fields (camelCase) | |||||||
| Remove deprecated query parameters that were subsumed by request body parameters, like the jar handlers. | |||||||
| remove rescale REST endpoint. This endpoint hasn't been working for years. We can add it back later if necessary. | |||||||
REST API returns only numeric values that conform to the JSON spec. Essentially, never return NaN/Inf as these are serious headaches for generated clients. | ||||||||
| Refactor certain REST return values to be less special, like ConfigurationInfo which is returned as a list of key-value pairs, when it should just be a map. | |||||||
Enforce single maxExceptions query parameter Note: Could be generalized to change all applicable query parameters. | ||||||||
Drop YARN-specific mutating GET REST endpoints (yarn-cancel, yarn-stop) We shouldn't continue having such hacks in our APIs to work around YARN deficiencies. | ||||||||
Name / JIRA / FLIP | Priority | Contributor | Reviewer | Milestones | State | % | Last Update | Description / Note |
Review and refactor the metrics implementation (revisit and improve/remove incorrect metrics) | ||||||||
| Drop deprecated Availability/Network metrics: https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/ops/metrics/#network | |||||||
| Split MetricGroup interface to target different audiences (reporters that retrieve metadata, users that register metrics/groups) | |||||||
1.19:
2.0:
| Rework MetricGroup scope APIs.
| |||||||
| Drop MetricGroup methods accepting an int as a metric/group name. These turned out to not be useful, and typically encourage bad design since a key-value pair should be used instead to attach some semantic to then number. | |||||||
1.19:
2.0:
| Remove brackets around keys returned by MetricGroup#getAllVariables. This has turned out to just be a bother to anyone using it. | |||||||
1.19: deprecate method 2.0: remove method | Drop MetricReporter#open Enforce a single configuration path via the constructor. The factory continues to have access to the configuration. | |||||||
| Pass configuration instead of Properties into ReporterFactory. Flinks configuration classes are really useful but not available to reporters. Blocked on splitting flink-core. | |||||||
Attach semantics to Gauges (ratio/count/rate/something else); refactor Counter/Meter to be Gauges with syntactic sugar on top. The goal is to generalize metrics from the perspective of reporters, and allow them to better map gauges to the external metrics backends supported types. This implies subsuming Metric#getMetricType. | ||||||||
1.19: introduce warning if non-numeric gauge is used 2.0: force type to Number | Enforce that gauges are numeric. String gauges are exceedingly rare and push a lot of complexity into reporter implementations. | |||||||
| Properly expose the logical scope of a metric group. This is currently exposed via a crude casting code path, and is primarily blocked on rework of the scope APIs as the current deficiencies push down to many requirements into the APIs (support for per-call delimiters/filters). | |||||||
Misc | ||||||||
Name / JIRA / FLIP | Priority | Contributor | Reviewer | Milestones | State | % | Last Update | Description / Note |
| Add support for Java 17 and make this the default. Nice-to-have: also add support for Java 21 | |||||||
Drop support for Java 8 |
| |||||||
Drop support for Java 11 |
| |||||||
Restructure modules | Restructure modules (maybe overlapping with All user APIs should be in a separate module)
Note: These can be done in 1.x or 2.1+, it's just easier to do in 2.0 if you don't need to worry about backwards-compatibility. |
Status / Follow-ups
08/21/24
- Status
- Discussion
- Go through work items
- What to do with legacy items? E.g., Java version supports
- Any new features?
- Preview release
- Breaking changes need to be completed by the preview release. Any problems?
- Create 2.0-Preview Jira version
- Check all @Deprecated APIs
- Go through work items
08/14/24
- Status
- Discussion
- Preview Release
- Try to include all API breaking changes
- Won't do
- Feature freeze
- Feature testing
- Resolve all blockers
- Will do
- PMC vote (e.g., legal checks)
- Announce and promote
- Maybe define a new version "2.0-Preview" on Jira and mark all API-breaking changes are blocker for it?
- Time Plan
- Preview release: End of Sep.
- Feature freeze: End of Nov.
- Formal release: End of Dec. or early Jan.
- Work Items
- API-breaking: targeting to finish by the preview release
- Non-breaking: targeting to finish by the feature freeze date, following time-based rules
- Preview Release
- Follow-ups
- Update work item list: separate into two lists, and remove outdated items
- Create the "2.0-Preview" release and move relevant tickets to it?
- Start collecting feature plans