Cold Standby throws “DataStoreException Record does not exist” error

This is working as designed and doesn’t indicate a problem with the File Datastore. To confirm that the blob ID is actually not missing, follow the steps in the Resolution section.

Description description

Environment
Adobe Experience Manager (AEM)

Issue
Cold Standby with dedicated File Datastore throws warning on missing blob id similar to the error here:

*WARN* [ standby-run-1]  org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore Error occurred while loading bytes from steam while fetching for id xxxxxxxxxx

java.util.concurrent.ExecutionException: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record xxxxxxxx does not exist

    at org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1017) [ org.apache.jackrabbit.oak-core-spi:1.10.3]

...

Caused by: org.apache.jackrabbit.core.data.DataStoreException: Record xxxxxxxx does not exist

    at org.apache.jackrabbit.core.data.AbstractDataStore.getRecord(AbstractDataStore.java:59)

Resolution resolution

Solution
This is working as designed and doesn’t indicate a problem with the File Datastore.

To confirm that the blob id is actually not missing, follow these steps:

  1. For example, take your sample blob id that is showing as missing in the logs (For example: cabdc49c6562afe71da796b57c2d1a86753091073f1935a2c49c20).
  2. For this blob id in this example, the filesystem address should be: ca/bd/c4/9c6562afe71da796b57c2d1a6a3495026dfafff4d1073f1935a2c49c20.
  3. Search the filesystem on the standby instance, and check if the named file is present in the File Datastore.
  4. Within /repository/datastore, use the list (For example: ls -ald) command: ls -ald ca/bd/c4/9c6562afe71da786753095026dfafff4d1073f1935a2c49c20.
  5. You should be able to see the file and confirm that the blob id is actually not missing.

Cause

This is just a warning, not an error. It comes from the fact that the File Datastore has no way to verify if a binary exists locally, except by trying to load the blob id. If the id gets loaded, the logs don’t show this warning. However, if it’s not found, the standby knows that it has to sync it, so that’s why you see this kind of warning in the logs.

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