Tzu-Li (Gordon) Tai created FLINK-23600:
-------------------------------------------
Summary: Rework StateFun's remote module parsing and binding
Key: FLINK-23600
URL: https://issues.apache.org/jira/browse/FLINK-23600
Project: Flink
Issue Type: New Feature
Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
Currently, we have a {{JsonModule}} class that is responsible for parsing
user's module YAML specifications, resolving the specification into application
components (i.e. function providers, ingresses, routers, and egresses) that is
then bound to the application universe.
Over time, the {{JsonModule}} class has overgrown with several changes as we
progressively adapted the YAML format.
* The class handles ALL kinds of components, including ingresses / functions /
egresses etc. The code is extremely fragile and becoming hard to extend.
* Users have no access to extend this class, if they somehow need to plugin
custom components (e.g. adding an unsupported ingress / egress, custom protocol
implementations etc).
We aim to rework this with the following goals in mind:
# The system should only handle {{module.yaml}} parsing up to the point where
it extracts a list of JSON objects that individually represent an application
component.
# The system has no knowledge of what each JSON objects contains, other than
its {{TypeName}} which would map to a corresponding {{ComponentBinder}}.
# A {{ComponentBinder}} is essentially an extension bound to the system that
knows how to parse a specific JSON object, and bind components to the
application universe.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)