Run datastore consistency check via oak-run

Learn how to run a datastore consistency check via oak-run in AEM 6.4 and Oak.

Description description

Environment

  • Adobe Experience Manager (AEM) 6.4
  • Oak 1.8.8 and later versions

Issue/Symptoms

The oak-run tool is helpful when you observe an error like this one:

09.11.2017 13:42:17.512 *WARN* [ async-index-update-async]  org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore Error occurred while loading bytes from steam while fetching for id «record ID»
    java.util.concurrent.ExecutionException: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record «record ID» does not exist
    Caused by: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record «record ID» does not exist

Unlike the /system/console/repositorycheck UI, the oak-run tool checks the hidden Lucene index files under /oak: index in addition to the rest of the content paths.  This tool gives you the option to restore index files to the datastore or only rebuild the indexes that are corrupt instead of reindexing all of them. This is documented in Use oak-run.jar to Manage Indexes in AEM Foundation Tutorials.

Resolution resolution

  1. Download oak-run jar 1.8.8 or later version to your AEM server.

  2. Run the command below (but swap out the paths to the segmentstore and datastore to match your environment):

    java -jar oak-run-*.jar datastorecheck --consistency --ref --id --fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config --repoHome crx-quickstart/repository --store crx-quickstart/repository/segmentstore --dump temp --verbose --track

  3. The command outputs a datastore consistency check.

  4. Use the output to restore or fix any missing files. For details follow Use oak-run.jar to Manage Indexes in AEM Foundation Tutorials.

Consistency checker for the DataStore can also list all the blob references in the node store and all the blob ids available in the data store. Use the following command:

$ java -jar oak-run-*.jar datastorecheck [ --id] [ --ref] [ --consistency] \

[ --store |] \

[ --s3ds |--fds] \

[ --dump] \

[ --track]

Provide one or more of these available options:

  • –id - List all the ids in the data store.
  • –ref - List all the blob references in the node store.
  • –consistency - List all the missing blobs by doing a consistency check.

The following options are optional:

  • –store - Path to the segment store of mongo uri (required for --ref and --consistency options above).
  • –dump - Path where to dump the files (optional). Otherwise, files are dumped in the user tmp directory.
  • –s3ds - Path to the S3DataStore configuration file.
  • –fds - Path to the FileDataStore configuration file (‘path’ property is mandatory).
  • –track - Path of the local repository home folder (optional). It places a copy of the downloaded blob ids to be tracked.

More like this

Oak DataStore Check

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f