feat (sync-service)!: clean all shapes when switching to a different DB #1703
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1689.
This PR uses Postgres'
system_identifier
to detect when Electric is connected to a different Postgres database than before. When that is the case, we log a warning and clean all shapes. Cleaning all shapes is consistent with how we handle Point In Time Recoveries (where we also clean all shapes).Note: this is a breaking change because we modify the structure of the timeline we store persistently. We used to just store the timeline ID, but now we store a list
[pg_id, timeline_id]
so we can't read out old persisted timeline information as we are expecting the new structure.