[Embeddable] Clientside Migration System #158677
Labels
Feature:Embeddables
Relating to the Embeddable system
impact:critical
This issue should be addressed immediately due to a critical level of impact on the product.
loe:x-large
Extra Large Level of Effort
Project:Serverless
Work as part of the Serverless project for its initial release
Team:Presentation
Presentation Team for Dashboard, Input Controls, and Canvas
Current State
Currently the Embeddable migration system consists of the following pieces:
This system works okay as long as:
ZDT Complications
The existing embeddable migration system creates a new saved object migration for every persister. In that persister, it mutates the value of an existing field. In Dashboard for example, every migration added to the serverside embeddable factory for any embeddable type results in a Dashboard saved object migration where the dashboard's
PanelsJSON
is mutated.In our new zero downtime environment this will not be allowed.
Next state
The next Embeddable Migration system should be clientside. In practice this looks like:
Considerations / Benefits
Benefit: More flexibility
With a clientside migration system, embeddable inputs will be storable anywhere and will work out of the box without any extra code considerations. Consider the following examples:
Consideration: Up migrations only
Consideration: Jest tests
Ideally, the solution to this issue will have some way to ensure that all newly added saved object migrations for embeddables that can be either by value or by reference are also added to the clientside embeddable migrations registry. We will write jest tests to cover this case.
The text was updated successfully, but these errors were encountered: