Open thecoop opened 7 months ago
Pinging @elastic/es-core-infra (Team:Core/Infra)
Pinging @elastic/es-distributed (Team:Distributed)
I'm looking at using an equality check on build version within RestoreService
, but the general check in RestoreService
is a semantic check - it can restore snapshots from previous versions, but not future versions. Build version is just a string, and can only be used for an equality check. We would need to have a specific comparison check...somewhere...just for CCR. I think our options here are:
RestoreService
@DaveCTurner @rjernst Thoughts?
I had a brief discussion with @thecoop on the topic and started looking if there's a more CCR specific alternative to reverting back to storing the build version in snapshot info (Simon's 2nd point in the previous comment).
How about we add a CCR specific build version check in CcrRepository.getSnapshotInfo
to enforce version constraints for patch versions. That way RestoreService
remains generic and only needs to check based on index version, as it should be.
When testing locally that seems to work well, but I'm pretty sure there's a million use cases I haven't covered. Are you aware of any other use case that would be negatively impacted by this?
@thecoop @rjernst @DaveCTurner
Relates #104620
Whenever we release a new minor version, the release automation should bump index and transport versions on main after the release is branched. This helps define rollback & compatibility boundaries as well as helping with mapping from version ids to release versions.
We should not automatically bump versions on patch releases - if we do so we're inserting patch versions into the version ids, which should only be used if we really have to.
This has a few consequences: