-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Federation extension: how to ensure consistent process version across backends? #548
Comments
related issue in aggregator: |
You are describing two separate issues here, which are not necessarily strictly dependant on each other:
|
The problem only came up, when the webeditor explicitely checked, if the output of one process matches the input of the following process and raised a Warning when they were set to rastercube in the first output but datacube in the following input, so to me it makes sense that the clients allow rastercubes and vectorcubes as datacubes (or add a check for the dimensions as well). I think I missed the discussion about supporting api 1.1.0 with processes 1.0 and api 1.2 with processes 2.0, when it first came up, so we only have one /processes endpoint in the eodc api at the moment. |
That was never a discussion, that was just a decision from VITO how they want to do it. There's no direct linkage between API versions and process versions in openEO (except for that only API 1.2 officially has a fully schema for 2.0 additions to the parameter/return value schemas). But in principle any openEO API version can implement any openEO processes version (except 0.x versions).
More a note than anything else: openEO processes are only in v2.0.0-rc.1 - The latest stable release is still 1.2.0. |
Indeed, this would be something to express in the federation extension (which is managed under the openeo-api project, so that's why I created this issue here).
Indeed, the process specification merging does not go arbitrary deep yet for all possible "conflicts". This is hard to do generically as you can imagine. In the past we've done some ad-hoc tweaks for certain use cases.
True about translating cube schemas. But there are also other differences between v1 anv v2 of the processes, like process-renames, changes in default values, ... which can not be adapted for with simple client-side tricks. The whole point of major-version bumps like this is to allow for backward incompatible changes, so we have to be explicit about the process versions in the right places. This is especially true in federated situations.
Indeed, this is a pragmatic choice from VITO:
I think we also considered a construction where users can mix and match API version and process version with something like |
My point was that I don't think the API can ensure consistent process versions across backends, that's part of a federation contract (which the federation extension is not). Having different process names can't easily be solved, but the processes with different names are usually different enough so that we shouldn't align them anyway. In this case it's just handled the same was as normal missing processes for other backends. |
This came up in dev-telco yesterday:
We now have version 1.x and 2.x of openeo-processes, which are somewhat incompatible (e.g. schema differences regarding raster/vector versus generic data cubes). When participating backends in a federation use different versions, the aggregator merges these process definitions, and possibly ends up with a hybrid v1-v2 mix of processes, which can cause trouble in different places (e.g. clients getting confused or flagging inconsistent wiring of process graphs).
One possible solution is to make the merging in the aggregator "smarter" in some way to produce a consistent result. However, this doesn't seem like a sustainable solution to me because this kind automatic conflict resolution can get quite complex and/or could require tedious ad-hoc configuration and hacks. It might even involve rewriting process graphs, which could make things quite confusing.
I think it's more sustainable to require a certain version of openeo-processes to participate in a federation, which makes it more clear to all parties what to target for.
I'm not sure yet how to tackle this, but want to open the discussion here.
Should this just be something in the federation extension? Or make this more general and make sure the process version is explicitly stated in the capabilities in some way?
thoughts?
cc @m-mohr @ValentinaHutter
The text was updated successfully, but these errors were encountered: