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

(tick)

Will make it

(green star)

In danger

(star)

Very unlikely

(red star)

Won't make it

(minus)

State unclear

(question)

Total
Breaking changes015000015
Features19200113

Breaking Changes (Targeting to finish by the Preview Release)

Name / JIRA / FLIPContributorReviewerStateLast UpdateDescription / Note

Programming

API





Remove DataSet API
(green star)

 


Remove Deprecated methods/fields/classes in DataStream API


(green star)

 


FLINK-29741 - Getting issue details... STATUS

(green star)

 


FLINK-33747 - Getting issue details... STATUS


(green star)

 


FLINK-33748 - Getting issue details... STATUS


(green star)

 


Remove deprecated methods in Table API
(green star)

 


Configuration

FLINK-33750 - Getting issue details... STATUS

(green star)

 

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
(green star)

 

Goals:
1. All configuration can be set using key-value pairs

2. Avoid exposing unnecessary configuration (i.e. the entire ExecutionConfig) to user functions

FLINK-23620 - Getting issue details... STATUS

(green star)

 

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


(green star)

 

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


Upgrade FRocksDB

FLINK-35573 - Getting issue details... STATUS

(green star)

 



Zakelly Lan 

(green star)

 

Update RocksDB statebackend package


FLINK-14068 - Getting issue details... STATUS

(green star)

 

Subsume Flink Time class with Java Duration.

  • Mark org.apache.flink.api.common.time.Time and 
     org.apache.flink.streaming.api.windowing.time.Time as @Deprecated in 1.19 (Must do in 1.19)

  • Refactor all usages of them to Java's Duration (Nice do in 1.19, must do in 1.20)

  • Remove them in 2.0



(green star)

 



FLINK-32688 - Getting issue details... STATUS


(green star)

 

Remove deprecated fields from ExceptionHistory API (all-exceptions, timestamp, root-exception, truncated)

Features (Targeting to finish by the Feature Freeze)

Name / JIRA / FLIPContributorReviewerStateLast UpdateDescription / Note
Introduce DataStream API V2

(green star)

 

This is an either in-place or smooth replacement of DataStream API. It differs from the current DataStream API mainly in the following aspects.

  • Users define the data processing only through implementing a series of generic process functions
  • No exposes of the operator internals (mailbox thread model, barrier alignment, etc.)
  • No dependencies on internal implementations and/or 3rd party dependencies.

Delta Join



(star)

 

Delta join is a new kind of stream-stream join implementation without maintaining any states. 

State compatibility for SQL jobs



(star)

 

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 Calcite rules from Scala to Java
FLINK-34156 - Getting issue details... STATUS



(question)


Move Flink Calcite rules from Scala to Java.
The reason is that since 1.28.0( CALCITE-4787 - Getting issue details... STATUS ) Calcite started to use Immutables (https://immutables.github.io/) and since 1.29.0 removed ImmutableBeans ( CALCITE-4839 - Getting issue details... STATUS ). All rule configuration related api which is not Immutables based is marked as deprecated. Since Immutables implies code generation while java compilation it is seems impossible to use for rules in Scala code.

Disaggregated State Management

(green star)

 

Disaggregated State Backend/Management in the cloud-native era.

  • able to support very large states with a reasonable TPS
  • able to support state Sharing and Querying without interfering with normal data processing
  • Support fast recovering/rescaling 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(green star)

 

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 AdaptiveSchedulerZdenek Tison(tick)

 


FLIP-370: Support Balanced Tasks Scheduling

Rui Fan (green star)


FLIP-472: Aligning timeout logic in the AdaptiveScheduler's WaitingForResources and Executing states

Zdenek Tison

(green star)

 


Upgrade checkstyle


(green star)

 





Adaptive optimization for batch jobs

FLIP-468: Introducing StreamGraph-Based Job Submission

FLIP-469: Supports Adaptive Optimization of StreamGraph

(green star)

 


FLIP-470: Support Adaptive Broadcast Join(green star)

 


FLIP-475: Support Adaptive Skewed Join Optimization(green star)

 


Legacy

REST API FLINK-32377 - Getting issue details... STATUS

Name / JIRA / FLIPPriorityContributorReviewer

Milestones

State%Last UpdateDescription / Note
Review and refactor the REST API(lightbulb)




  • Clarify the capability guarantees and modification process
  • revisit existing REST API and improve/remove incorrect interfaces
  • unify conventions for naming fields
  • passing parameters and HTTP methods
FLIP-336: Remove "now" timestamp field from REST responses(lightbulb)



  • remove in 2.0




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(lightbulb)



  • remove in 2.0




Remove JarRequestBody#programArgs in favor of #programArgsList.

FLIP-338: Remove terminationMode query parameter from job cancellation REST endpoint(lightbulb)



  • remove in 2.0




Remove terminationMode parameter from job cancellation endpoint.

Effectively it only supports "cancel" as "stop" was moved into a dedicated endpoint.




  • change all fields in 2.0



Use a consistent naming convention for all REST API fields (camelCase)
(lightbulb)



  • remove in 2.0



Remove deprecated query parameters that were subsumed by request body parameters, like the jar handlers.
(lightbulb)



  • remove in 2.0




remove rescale REST endpoint. This endpoint hasn't been working for years. We can add it back later if necessary.

(lightbulb)







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.


(lightbulb)



  • Break API in 2.0



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.

FLINK-32198 - Getting issue details... STATUS

(lightbulb)





Enforce single maxExceptions query parameter

Note: Could be generalized to change all applicable query parameters.

FLINK-32597 - Getting issue details... STATUS

(lightbulb)





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.

Metrics FLINK-32378 - Getting issue details... STATUS

Name / JIRA / FLIPPriorityContributorReviewer

Milestones

State%Last UpdateDescription / Note

(lightbulb)




Review and refactor the metrics implementation (revisit and improve/remove incorrect metrics)

(lightbulb)



  • Removal in 2.0



Drop deprecated Availability/Network metrics: https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/ops/metrics/#network

FLINK-14350 - Getting issue details... STATUS

(lightbulb)



  • Deprecate MG scope-related methods in 1.19
  • Rework interfaces in 2.0



Split MetricGroup interface to target different audiences (reporters that retrieve metadata, users that register metrics/groups)


(lightbulb)



1.19:

  • Deprecate MG#getScopeComponents
  • Deprecate MG#getMetrticIdentifier(String, CharacterFilter)

2.0:

  • Remove methods




Rework MetricGroup scope APIs.

  • Drop MetricGroup#getScopeComponents because it is unused and puts limitations on internal representations
  • remove character filter / delimiter arguments from MetricGroup#getMetricIdentifier and similar methods
    • instead, let reporters provide these up-front via the factory as proposed in FLINK-7958
(lightbulb)



  • Deprecate int methods in 1.19
  • Remove in 2.0




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.

(lightbulb)



1.19:

  • Deprecate getAllVariables
  • Add new default getScopeVariables method that filters brackets

2.0:

  • Remove getAllVariables
  • Change getScopeVariables to not have a default impl




Remove brackets around keys returned by MetricGroup#getAllVariables.

This has turned out to just be a bother to anyone using it.


(lightbulb)



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.


(grey lightbulb)



  • change API in 2.0




Pass configuration instead of Properties into ReporterFactory.

Flinks configuration classes are really useful but not available to reporters.

Blocked on splitting flink-core.


(lightbulb)







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.

FLINK-6053 - Getting issue details... STATUS

(lightbulb)



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.

FLINK-7957 - Getting issue details... STATUS

(lightbulb)



  • deprecate LogicalScopeProvider
  • add new APIs in 2.0




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 / FLIPPriorityContributorReviewer

Milestones

State%Last UpdateDescription / Note

FLINK-15736 - Getting issue details... STATUS
FLINK-33163 - Getting issue details... STATUS

(lightbulb)


  • Make Java 17 default in 2.0



Add support for Java 17 and make this the default. 
Nice-to-have: also add support for Java 21

Drop support for Java 8

(lightbulb)


  • Remove support in 2.0




Drop support for Java 11

(grey lightbulb)


  • Remove support in 2.0




Restructure modules

(grey lightbulb)





Restructure modules (maybe overlapping with All user APIs should be in a separate module)

  • Split flink-core such that it doesn't contain data-processing related APIs
  • Merge flink-java/flink-streaming-java
  • Maybe break up flink-runtime (JM/TM/TM runtime/HA, security, metrics)

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

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
  • 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
  • No labels