[
https://issues.apache.org/jira/browse/OAK-1159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13830026#comment-13830026
]
Alex Parvulescu commented on OAK-1159:
--------------------------------------
So I went ahead and implemented a simple version of the backup:
{noformat}
current = store.retrieve(store.checkpoint(DEFAULT_LIFETIME));
backupFS = new FileStore(destination, CACHE_SIZE, CACHE_SIZE, true);
backup = new SegmentNodeStore(backupFS);
backup.merge(current.builder(), EmptyHook.INSTANCE, null);
backupFS.close();
{noformat}
I over simplified the code (no try/catch) to have a less verbose view of how
this looks like.
When I ran this against a bigger repo (CQ) I noticed a strange behavior:
This is the original repo file list (file size, file name):
* 256M, bulk00000.tar
* 183M, bulk00001.tar
* 256M, data00000.tar
* 20M, data00001.tar
... and this is the backup directory:
* 256M, data00000.tar
Anything I might have missed in the code?
> Backup and restore
> ------------------
>
> Key: OAK-1159
> URL: https://issues.apache.org/jira/browse/OAK-1159
> Project: Jackrabbit Oak
> Issue Type: New Feature
> Components: core, mk
> Reporter: Michael Marth
> Assignee: Alex Parvulescu
>
> We need a way to backup and restore a repository. I was thinking that the MK
> impl could expose an interface for this, as the actual implementation would
> differ quite a bit between e.g. TarMK and MongoMK.
> Also, I think we could leverage the MVCC nature of the MKs and mark a
> specific revision as "the revision to backup" (regardless of ongoing writes).
> That would allow us to prevent the ugly situation in JR2, that we need to
> stop writes for a while to produce a consistent backup.
> The restore in such a scenario would discard revisions that happened after
> said marker (but still made it into the backup).
--
This message was sent by Atlassian JIRA
(v6.1#6144)