major
minor
major
minor
Scenario
A bidirectional model transformation is declared in the layout, where the input value of the transformation corresponds to an interface type from which the target model is queried in the transformation expression:
model->$model.get(`example:ContainerInterface#containmentAttr`)
The layout is published.
As part of a refactoring, this transformation is now removed from the layout (the view is deleted), and the "ContainmentInterface" type, which is no longer needed, is also deleted from the model. At first, everything works as expected.
Problem
If the session is now terminated (timeout, logout) before this layout change has been republished, it is no longer possible to log in again. It is also no longer possible to restart the server with this data state.
The reason for this is that the removed model transformation still exists in the previously published layout and is initialized both upon restart and upon login. In the process, the specified transformation expression is compiled (in the constructor of `BidirectionalTransformLinkingByExpression`), but this fails because it references the model type that no longer exists.
Solution
Ensure robustness against this error. The application must start despite misconfigurations in individual views and allow for the correction of errors.
Test
No test.