Expand my Community achievements bar.

Learn about Edge Delivery Services in upcoming GEM session
SOLVED

Receiving jcr:versionStorage warning messages, how do we fix this

Avatar

Level 1

Our system logs in both QA and Prod environment is getting a lot of WARN messages like this: 

WARN [pool-6-thread-1] org.apache.jackrabbit.oak.security.authorization.permission.CompiledPermissionImpl Cannot retrieve versionable node for /jcr:system/jcr:versionStorage/d4/29/7b/(full uuid here)

When we look for these particular nodes they are not there, there are no child nodes under the 7b in the example above.  I'm guessing that the pages that correspond to these version nodes no longer exist, and I'd like to be able to clean these up and prevent these warning messages from showing up.

Any assistance would be appreciated.

1 Accepted Solution

Avatar

Correct answer by
Level 5

Hello jefferyd1891808

The warning you're facing essentially means that the reported version histories do not contain any useful information and could be removed. However, Oak currently does not allow for deletion of such nodes using the JCR API. They are protected as required by the specification and unreferenced version histories with only a jcr:rootVersion are not automatically removed. Jackrabbit 2.x does it, but this feature is missing in Oak.

There is an improvement request logged [1] for this with Oak for automatically removing orphaned version history and it will be introduced in Oak 1.6, i.e. for AEM 6.3. The only alternative at this point is to ignore these harmless log messages by setting the log level to ERROR for CompiledPermissionImpl. This can be done by the following steps

1) Go to http://host:port/system/console/slinglog

2) Click on Add a new logger

3) Select logging level as ERROR, change log file from logs/error.log to logs/permissionserror.log and put the logger as org.apache.jackrabbit.oak.security.authorization.permission.CompiledPermissionImpl

Now once the traversal happens, nodes will be traversed but your logs won't be filled up with the warning messages.

Please create this logger on all your instances.

I hope this helps move to a conclusion on this issue.

Best Regards,

Aneet

[1] https://issues.apache.org/jira/browse/OAK-4370

View solution in original post

3 Replies

Avatar

Correct answer by
Level 5

Hello jefferyd1891808

The warning you're facing essentially means that the reported version histories do not contain any useful information and could be removed. However, Oak currently does not allow for deletion of such nodes using the JCR API. They are protected as required by the specification and unreferenced version histories with only a jcr:rootVersion are not automatically removed. Jackrabbit 2.x does it, but this feature is missing in Oak.

There is an improvement request logged [1] for this with Oak for automatically removing orphaned version history and it will be introduced in Oak 1.6, i.e. for AEM 6.3. The only alternative at this point is to ignore these harmless log messages by setting the log level to ERROR for CompiledPermissionImpl. This can be done by the following steps

1) Go to http://host:port/system/console/slinglog

2) Click on Add a new logger

3) Select logging level as ERROR, change log file from logs/error.log to logs/permissionserror.log and put the logger as org.apache.jackrabbit.oak.security.authorization.permission.CompiledPermissionImpl

Now once the traversal happens, nodes will be traversed but your logs won't be filled up with the warning messages.

Please create this logger on all your instances.

I hope this helps move to a conclusion on this issue.

Best Regards,

Aneet

[1] https://issues.apache.org/jira/browse/OAK-4370

Avatar

Employee

Another way you might be able to fix these as this seems to be case where orphaned version history nodes being accessed which were migrated from CRX2 repository but don't exists now.

In order to try fix this, Please do the following on your lower test environment :

- Make sure your Oak version is up to date for your AEM version

- Perform a version purge (Check with the customer on criteria to retain the versions)

- Install the attached tool via the package manager version-checker-tool (1)

- Then run it by visiting http://HOST:PORT/apps/tools/components/checkversions/run.html

- Use the output to decide which nodes need to be deleted

- Remove mix:versionable from the nodes that reference the version histories

- Use oak-run and this script https://gist.github.com/stillalex/43c49af065e3dd1fd5bf to delete the bad version histories

(1) : Dropbox - version-checker-tool-1.2 (1).zip

Avatar

Level 10

Have you guys configured and have version purging running ?