Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
Not sure if this is a duplicate, but as this issue pops up over and over again, it might be time to discuss it here and fix it.
Currently, configuration is spread across instances of Configuration and POJOs (e.g. ExecutionConfig or CheckpointConfig). This makes it very tricky to handle configuration throughout the stack. The practice has shown that configuration might be passed, layered, merged, restricted, copied, filtered, etc. This is easy with the config option stack but very tricky with the existing POJOs. Esp. it is difficult to keep the two in sync or compare them.
Many locations reveal the current shortcoming. For example, org.apache.flink.table.planner.delegation.DefaultExecutor has a isCheckpointingEnabled() method simply because we cannot trust the Configuration object that is passed around. Same for checking if object reuse is enabled.
A solution is still up for discussion. Ideally, we deprecate ExecutionConfig and CheckpointConfig and advocate a pure config option based approach. Alternatively, we could do a hybrid approach similar to `TableConfig` (that is backed by config options but has setters for convenience). The latter approach would cause less deprecations in the API.
Attachments
Issue Links
- is blocked by
-
FLINK-29807 Drop TypeSerializerConfigSnapshot and savepoint support from Flink versions < 1.8.0
- Closed
- is related to
-
FLINK-3642 Disentangle ExecutionConfig
- Open
-
FLINK-29309 Relax allow-client-job-configurations for Table API and parameters
- Closed
- relates to
-
FLINK-13876 Remove ExecutionConfig field from PojoSerializer
- Open
- links to