Open
0 of 6 issues completedDescription
This issue is about creating the full service allowing to perform 1-1 restore of the VNode keyspaces/column familes.
Design doc (https://docs.google.com/document/d/18jhhNo90JWy6fIgPCks3RI1zhHLI7eBLKpHGJRBmdpM/edit?tab=t.0#bookmark=id.e6nd5pbe9bjq)
The service must work on the following input:
- nodes mapping ( map[string]string where source node host ID is a key and the destination node host ID is the value )
- source-cluster-id (will be needed to find the snapshot)
- snapshot-id (it identifies which snapshot of the source-cluster to use to restore the data)
- backup location
The restore process consists of the following stages:
- validation
The service must check if agents can reach the backup location.
The service must compare if the cluster topology saved to the snapshot is the same as the destination cluster topology.
The service must compare if the source cluster ring topology (read from manifest files) is the same as the cluster ring of the destination cluster.
This process can be split into two parts (reading source cluster topology, reading destination cluster topology)
If validation fails, the service must stop and return meaningful error information - copy-data
nodes mapping informs which destination node is going to restore SSTables of which source node. SSTables of the source node must be copied to the corresponding /keyspace/column_family/upload directories on the destination node.
There must be (number_of_nodes) independent go-routines per destination node copying SSTables from the corresponding source node.
If the corresponding destination folder doesn't exists then it means that one of the prerequisities is not met (schema is not restored). It should just return error informing that the keyspace/column family is missing. - refresh SSTables
After the SSTables are copied to the upload directories, SM must callscylla-manager/v3/swagger/scylla_v1.json
Line 11841 in b501137