-
Notifications
You must be signed in to change notification settings - Fork 3
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
Support a way to do technical maintenance of URLs within the dialog aggregate #1497
Comments
Some suggestions arose during refinement:
GuiAction uri reference is used as an example in the image below, however this could be any part of the system which reference an external resource. Templates makes it easy for a service owner to update url references without having to deep dive into every dialog they've ever created to do so. Suggestion 2 is better for updating the host. However, looping over all UrlTemplates in suggestion 1 and changing host that way is a viable alternative while keeping the structure simple. The assumption is that the UrlTemplates set for a service owner is small. Changing SO api target version would also be easy through templates. The only challenge would be altering the template placeholders on existing templates.
How we connect the template placeholder with the actual value affects migration strategy when altering the template. Needs more consideration... |
Refinement: We want to investigate whether or not we can have a more generic templating system to be used across all properties that use more or less free-form text (content and URLs). Something akin to:
This can be used in a backwards-compatible way (ie. no need to change the API contract), as it introduces a separate root for these placeholders, that is defined on a per-serviceowner basis. Ie. support arbitrary parameterized placeholders, with recursion support. This will solve both this issue, and potentially some of #1650 , where we can drastically reduce disk space usage caused by content/URLs by eliminating much of the redundancy. This will however cause search to become more complex (see #1651), and will probably require that we maintain a separate index in ElasticSearch or similar, which is populated with the resolved text-data whenever a given dialog is created/updated. Whenever a placeholder is changed, this will have to cause all dialogs that (indirectly) refer that placeholder to be reindexed. But this will also could greatly improve search performance and functionality for end users. Disaster recovery will have to be considered, as we need to be have ES and PG in sync. During recovery/resync, we might have to be able to fall back to more simple PG-based search. Some initial considerations:
|
Introduction
The dialogs contain several URLs, some of which are immutable (transmissions). Over time, there might arise a need to update the URLs due to system changes/updates which causes the original URLs to become invalid.
Transmissions are immutable and cannot be changed at all. Actions, content references and dialoglevel attachments are immutable, and may have the URLs changed, but it is not desirable to invoke the full range change handling mechanisms (bump updatedAt, produce events, reset system labels etc) for a change that is only done due to technical maintenance related need.
Description
Endpoints should be established that allow for only URL changing, that also bypass the normal change pipeline.
There are some options:
Which accepts a body like:
Dialogporten will then match the
{urlId}
to the corresponding URL within any part of the aggreateIn both cases, IDs will have to be exposed on all URLs (including values used for content references).
Implementation
TBD
Tasks
Threat modelling
Acceptance criteria
GIVEN ...
WHEN ....
THEN ...
GIVEN ...
WHEN ....
THEN ...
The text was updated successfully, but these errors were encountered: