-
-
Notifications
You must be signed in to change notification settings - Fork 234
TASK: Constraint ESCR dimension space point migrations #5514
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
TASK: Constraint ESCR dimension space point migrations #5514
Conversation
…can contain changes and are rebase-able
I am confused now, shouldn't this be a failing test? |
…nterface` and `NodeAggregateBasedTransformationInterface`
…o work for command steps The PR neos#5361 simplified everything into a simple ``` @when the command :shortCommandName is executed with payload: ``` step which does not provide autocompletion when writing new tests or also allows to find usages of exactly that step which speeds up filling out the required payload
…n other workspaces
…ild nodes recursively for removed dimension space points
… new specialisations for existing generalisations This task belongs to the `AddDimensionShineThrough` command and must be run first. Using `UpdateRootNodeAggregateDimensions` would only add that dimension to the root node without any fallback which is wrong! As shown by test 'Run migration after renaming a new dimension value' > Cannot add fallback dimensions via update root node aggregate because node lady-eleonode-rootford already covers generalisations [{"language":"mul"}]
… generalisation where specialisation still falls-back to nodes If we would drop the eges of a generalisation like "de" all fallback node rows would still be connected via the specialisation ("gsw") hierarchy edges but state that their occupation is "de". This is the nature when dropping edges but not updating the node rows first. Thus we must ensure that ALL variants must be varied first. Eg "./flow content:createvariantsrecursively" see test.
…emoved` events for root node in special dimension instead of doing so explicitly
…ubtree-tags-on-root-node-aggregate' into taks/constraint-dimension-structure-adjusments
…g dimensions its ensured by a previous `NodeAggregateWasRemoved` that `RootNodeAggregateDimensionsWereUpdated` only signals that dimensions are ADDED.
Also mark empty dimensions as affected source, but that will be removed wither way with: neos#5516 because its wrong.
…ishableChanges` together
…ishableChanges` together
…orkspaces (e.g. migration-ws based on live) This enables us to do meaningful constraint checks versus changes in other workspaces. https://neos-project.slack.com/archives/C04PYL8H3/p1741976899524389
… checks and not.
otherwise dimensions that are about to be removed still could contain changes.
- nodes can never be created if the parent doenst cover them, this is an invariant - the update root node aggregate constraint checks prevent creating a spezi
to allow executing multiple migrations on a workspace
…n as this cannot be published either way and must never occur on a user workspace see InvalidDimensionAdjustmentTargetWorkspace
Workspace migration-cs must be root workspace or target a root workspace.
…kspace simultaneously
…only be executed once
ok but, like, as we discussed:
Seems like an unrealistic requirement in any real world scenario? |
well, for one, this is not a new requirement (it states the same in the documentation), it is now only enforced to prevent conflicts in workspaces that are hard to resolve (mostly by discard). |
A shallow look into the new dimension space point migrations reveals a (obvious) problem:
When
MoveDimensionSpacePoint
is run live or anywhere else, workspace will not be able to publish pending changes to live or rebase anymore because all the rebased commands will target the original dimensions which no longer exist according to the variation graph:The documentation recommends https://docs.neos.io/guide/content-repository/content-dimensions/migrating-dimension-config
Though this is not enforced via constraint checks.
The new node migrations sometimes warranted for new commands and events because otherwise things would be impossible.
New command and events, that where introduce for that use-case:
introduced via: neos/contentrepository-development-collection#177
AddDimensionShineThrough
-> emitsDimensionShineThroughWasAdded
MoveDimensionSpacePoint
-> emitsDimensionSpacePointWasMoved
introduced via: #4093
UpdateRootNodeAggregateDimensions
-> emitsRootNodeAggregateDimensionsWereUpdated
This PR changes the described behavior by adding further restrictions and the respective tests:
MoveDimensionSpacePoint
andUpdateRootNodeAggregateDimensions
adjustments can no longer be run if there are any changes in any other workspace than the one they are applied toMoveDimensionSpacePoint
andUpdateRootNodeAggregateDimensions
now fail if there are any fallbacks active that would become invalid after or removed by the changeIt also contains smaller necessary fixes and adjustments:
Upgrade instructions
none
Review instructions
See introduction
Checklist
FEATURE|TASK|BUGFIX
!!!
and have upgrade-instructions