Metadata storage on workflows #2782
Replies: 4 comments 3 replies
-
In principle, conductor team is open to this idea of supporting a "metadata" or more specifically user-provided opaque key value pairs that are only meaningful to workflow authors. However, the implementation could be easily lead to troubles if proper structure is not enforced. To reduce the complexity and mitigate the concerns about size of the metadata, we think that "metadata" should be a
Also, we think that |
Beta Was this translation helpful? Give feedback.
-
There are currently no tests. But an ideal test is to find the increase in memory footprint when a workflow definition with
Conductor must have some constraints on the size of the |
Beta Was this translation helpful? Give feedback.
-
We just had a situation where metadata storage for workflows as well as workflow executions would have been super helpful. An example is to track the context on why the workflow instance was started. Any thoughts on prioritizing this? We can help with the implementation if required. |
Beta Was this translation helpful? Give feedback.
-
After some discussion between Orkes and Netflix folks we came to the conclusion that this is possible by using This would probably take the form of something like {
"taskDefinitions": [{}],
"inputTemplate": {
"$metadata": {
"schema": { "$ref": "https://my-schema.com" },
"private": true
}
}
} If this needs to be a first class property we can re-open the proposal. |
Beta Was this translation helpful? Give feedback.
-
Since we are moving in the direction of schemas for workflows with #2722 (specifically
ui/src/codegen/JSONSchemaWorkflow.js
) it might be useful to explore a pattern that would allow defining additional metadata on workflows and tasks.Use cases
A lot of these could be implemented as strongly typed first class fields within the framework, but I think
metadata
would allow an implementation in user space first that could then be consolidated into the core implementation once we find good patterns.Potential implementations
metadata
field on workflows, tasks, and maybe events would be aMap<String, Object>
capable of holding this.metadata
pointer to storage that can be queried via a separate API (or a flag)Potential concerns
Size
Metadata could bloat the size of workflow definitions if we always housed it in-line.
Complexity
If conductor isn't strictly managing this "user space" blob it could introduce potential breakages if conductor were to alter the shape.
Since this is purely a "user land" object, users might think a bug caused by metadata changes is the fault of conductor when its not.
Beta Was this translation helpful? Give feedback.
All reactions