Author: frm
Date: Thu Dec  6 13:02:30 2018
New Revision: 1848302

URL: http://svn.apache.org/viewvc?rev=1848302&view=rev
Log:
OAK-7945 - Document the recover-journal command

Modified:
    jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md

Modified: 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md?rev=1848302&r1=1848301&r2=1848302&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md 
(original)
+++ 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md 
Thu Dec  6 13:02:30 2018
@@ -34,6 +34,7 @@
     * [IOTrace](#iotrace)
     * [Diff](#diff)
     * [History](#history)
+    * [Recover Journal](#recover-journal)
 
 ## <a name="overview"/> Overview
 
@@ -939,3 +940,30 @@ The `--depth` parameter determines if th
 `DEPTH` must be a positive integer specifying how deep the printed content 
should be.
 If this option is not specified, the depth is assumed to be `0`, i.e. only 
information about the node will be printed.
 
+### <a name="recover-journal"/> Recover journal
+
+```
+java -jar oak-run.jar recover-journal [--help] PATH
+```
+
+The `recover-journal` command rebuilds a journal by scanning the content of 
the Segment Store at `PATH`.
+
+The command performs the following steps:
+
+- It scans the content of all segments for potential head states.
+- It sorts the found head states from older to newer.
+- It checks the consistency of the found head states until the first 
consistent head state is found.
+
+During the consistency check, some segments might be missing.
+The command outputs a stack trace on stderr every time it finds a new missing 
segment.
+If the command finds a segment missing more than once, further stack traces 
are suppressed.
+
+The last revision in the recovered journal is guaranteed to have a consistent 
head state.
+For the sake of speed, checkpoints are **not** checked.
+Moreover, since the consistency check stops as soon as it finds a consistent 
head state, older revisions in the recovered journal might still be 
inconsistent.
+For a deeper analysis of the consistency of the recovered journal, see the 
`check` command.
+
+The `recover-journal` command is not destructive and tries its best to leave 
the Segment Store folder in a consistent, usable state.
+Before creating a new journal, the old one is backed up in the Segment Store 
folder as `journal.log.bak.XXX`, where `XXX` is a monotonically increasing, 
three-digit number.
+Only after the backup of the old journal is successful, the command installs 
the recovered journal as the canonical `journal.log`.
+If any error occurs in the process, the command will roll the old journal back 
and discard the backup.
\ No newline at end of file


Reply via email to