Project

General

Profile

Actions

Idea #7988

closed

[Keep] Single keepstore responsible for trash lists on S3

Added by Peter Amstutz over 8 years ago. Updated almost 7 years ago.

Status:
Closed
Priority:
Normal
Assigned To:
-
Category:
-
Target version:
-
Start date:
Due date:
Story points:
-

Description

The S3 API does not support transactional deletes, so there is a race condition between checking the timestamp of a block and deleting the block, where the block can have its metadata refreshed but then deleted.

While this could potentially be solved using AWS S3 object versioning, this solution is not available with other storage systems that provide S3 compatible APIs, such as Google and Ceph.

Proposed solution:

  1. Designate a single keepstore to handle trash lists for a given S3 bucket.
  2. On PUT, if the blocks are new or of an existing block that is less than 2 weeks old, can be handled by any server
  3. Otherwise, do PUT-copy to update new block to "hash.copy"
  4. For each block on the trash list:
    1. Get the modification time
    2. Try to PUT-copy from "hash.copy" to "hash". If this succeeds, don't do anything else.
    3. Send delete request
    4. Try to PUT-copy again from "hash.copy" to "hash" (ignore errors)
  5. When the trash list is empty (because we finished processing, or an empty trash list was received from data manager), search and delete all blocks matching the pattern "*.copy"

Related issues

Related to Arvados - Idea #7393: [Keep] Prototype S3 blob storageResolvedTom Clegg09/23/2015Actions
Related to Arvados - Feature #8555: [Keep] Implement trash/untrash behavior in s3_volumeResolvedTom Clegg06/16/2016Actions
Actions #1

Updated by Peter Amstutz over 8 years ago

  • Subject changed from [Keep] Single keepstore to [Keep] Single keepstore responsible for trash lists on S3
  • Description updated (diff)
Actions #2

Updated by Peter Amstutz over 8 years ago

  • Description updated (diff)
Actions #3

Updated by Peter Amstutz over 8 years ago

  • Description updated (diff)
Actions #4

Updated by Tom Clegg almost 7 years ago

Superseded by the keepstore trash/untrash API, implemented in #8555.

Actions #5

Updated by Tom Clegg almost 7 years ago

  • Status changed from New to Closed
Actions

Also available in: Atom PDF