Project

General

Profile

Actions

Feature #13109

closed

Support collection versions

Added by Tom Morris about 6 years ago. Updated over 5 years ago.

Status:
Resolved
Priority:
Normal
Assigned To:
-
Category:
-
Target version:
Story points:
-
Release:
Release relationship:
Auto

Description

See Collection version history

For some types of collections, particularly things like reference data, it is desirable to keep old versions around if they are updated.

User-facing features

  • A collection has a current version number, so that the pair (uuid, version_nr) is be enough as a reference to a specific version of a particular collection.
  • Whenever a collection get its manifest_text, description, properties or name fields updated, a new version is created (a 'snapshot' of the collection-to-be-changed record is created pointing to the updated, most current version.)
  • The user can request a collection via an API call that includes past versions.
  • The user can search on collections including past versions.
  • Whenever a collection changes owner, uuid, storage classes, replication levels and trashed status, its past versions follow it.
  • In order to modify a past version, the user needs to copy it into a new collection.

On workbench

  • A new 'History' tab show the currently viewed collection position on a list of versions.
  • On the 'History' tab, versions have the possibility to be copied to an entirely new collection and also to be copied as the current version (revert feature) on the history
  • The collection's main pane show an indication if its the current version or an old one.

System wide configurations

  • Flag to enable version history retention (OFF by default)

Implementation details

  • All past versions go on the same collections table (so it's easier to do paging)
  • New column current_version_uuid to hold the current version's UUID.
  • New column version_number to hold a consecutive integer, starting at 1 for new collections.
  • The following fields are synced with their past versions counterparts: replication_*, storage_classes_*, trash_at/delete_at/is_trashed, owner_uuid, uuid (update current_uuid to retain database consistency)
  • Old versions with the same name shouldn't conflict with each other or other collections.

Related issues

Related to Arvados - Feature #13561: [API] Store, and add APIs to retrieve, previous versions of collection objectsResolvedLucas Di Pentima10/04/2018Actions
Related to Arvados - Idea #14086: [keep-web] Serve previous collection versionsResolvedLucas Di Pentima10/15/2018Actions
Related to Arvados - Idea #14299: [keep-balance] Ensure blocks referenced by old collection versions are safe from garbage collectionResolvedLucas Di Pentima10/23/2018Actions
Actions

Also available in: Atom PDF