[jira] [Created] (JAMES-4209) S3: ability to restore content from solely the object store
"Benoit Tellier (Jira)" <[email protected]> Thu, 28 May 2026 08:26:00 +0000 (UTC)
| Newsgroups | gmane.comp.jakarta.james.devel |
|---|---|
| Message-ID | <[email protected]> |
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)