Benoit Tellier created JAMES-4209:
-------------------------------------

             Summary: S3: ability to restore content from solely the object 
store
                 Key: JAMES-4209
                 URL: https://issues.apache.org/jira/browse/JAMES-4209
             Project: James Server
          Issue Type: Improvement
          Components: cassandra, mailbox, s3
            Reporter: Benoit Tellier


h3. Goal

Recorvery Plan

GIVEN a major producton incident
WHEN I loose fully the Cassandra DB and its backup
THEN I want to be able to retrieve contents from S3 and set them back to users

Out of scope: folder structure and context (flag)

Recover point objective

GIVEN a major producton incident
WHEN I loose fully the Cassandra DB and need to restore a backup
THEN I want to be able to retrieve contents from S3 and set them back to users 
between the time-of backup and time of the incident

Effectively achieve RPO of 0 for contents, only folder sorting is subject to a 
loss.

h3. How

Optional config in cassandra.properties

{code:java}
mailbox.blob.recovery.mode=SYNCHRONOUS|ASYNCHRONOUS|NONE
{code}

NONE being the default.

The idea is to save a side objects recovery/YYY where YYY is the header blob 
ID. It contains the corresponding body blobId. 

Using the Delivered-To header It effectively allow rebuild of the message and 
it allows identifying who it was delivered to.

Please note that natural generation of the header blob then allow time sorting 
with a month granularity, allowing finner grain restore.

Special care about the GC: do not delete the sidecar, but piggy back its 
deletion on actual content

h3. The restore script

Ship it as a binary in server/apps/distributed-app and use what we need from 
the guice wiring. One could override the main class to actually run it...

We should be able to restrict to a single generation. 

We should be able to provide a "since" date

-----------

Idea design done with Yann Biez



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to