Skip to content

Use UUIDs in working with snapshots #18156

@abeyad

Description

@abeyad

The fact that snapshots are only identified by a name has led to some issues, especially with how snapshots are represented in their underlying storage repositories. For example, if a snapshot is deleted, but the deletion fails to delete some of the files in the repository, then a snapshot by the same name is created again, this could lead to some conflict and/or overwriting with the left over snapshot files. This is captured in #15579 and #13159.

In addition, snapshot names don't necessarily make good blob names for the snapshot repository. For example, having a : in the snapshot name is legal, but presents an issue with accessing that snapshot in URI based repositories. Therefore, we would have to strip those problematic characters when naming blobs and as a result, the name itself is no longer a valid way to uniquely identify each snapshot. See issue #7540.

A solution is to introduce the notion of a UUID for each snapshot. In this way, we can store the UUID along with the name for each snapshot, and the repository should identify, store, and retrieve snapshots using the UUID. UUIDs will also help define the repository semantics more clearly, as discussed in #15580.

This effort can be broken up with the following tasks, each of which will build on top of the previous tasks:

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions