Resolve Downloaded Assets Report failures in AEM 6.5 due to RuntimeNodeTraversalException
This article describes how to resolve Downloaded Assets Report failures in Adobe Experience Manager (AEM) 6.5 when a RuntimeNodeTraversalException occurs because the query traverses more than 100,000 nodes without sufficient index coverage.
Description description
Environment
Adobe Experience Manager (AEM) 6.5 Service Pack 23 and later (all platforms)
Symptoms
- The Downloaded Assets Report in AEM DAM consistently fails with status Failed.
- Other reports (such as Upload or Modification) continue to work normally.
- The error log contains: The query read or traversed more than 100000 nodes. To avoid affecting other tasks, processing was stopped.
Cause
The Downloaded Assets Report issues a query that searches for download audit events under the user home node path, filtering by the verb property and a date range on jcr:created. The default Lucene index for nt:base nodes doesn’t index the jcr:created property for these nodes. As a result, the repository engine (Oak) must scan all matching nodes to evaluate the query, and when the traversal exceeds 100,000 nodes, Oak throws a RuntimeNodeTraversalException and the report fails.
Resolution resolution
Follow the steps below to resolve the issue:
I. Choose one of the following approaches to ensure Oak has an index that fully covers the Downloaded Assets Report query:
Option A – Extend the existing Lucene index for nt:base nodes
-
In the AEM repository, navigate to the Lucene index definition for
nt:basenodes (typically under/oak:index/ntBaseLucene). -
Under
indexRulesfornt:base, add or update the properties:- Add
jcr:createdwithtype“Date”,propertyIndex=true,ordered=true. - Ensure
verbis present withtype“String”,propertyIndex=true.
- Add
-
Set
reindex=true on the index definition node to trigger a reindex. -
Save the changes, and allow the index to rebuild.
Option B – Create a dedicated Lucene index for download events (Recommended)
-
Define a new Lucene index (For example:
/oak:index/dedicatedDownloadEventIndex) with the following properties:-
type= “lucene” -
includedPaths=[“”] -
indexRulesfornt:basewith properties:verb:type= “String”,propertyIndex=truejcr:created:type= “Date”,propertyIndex=true,ordered=true
-
-
Deploy the new index definition to your AEM instance.
-
Allow the index to build asynchronously.
II. After the index has been built, rerun the Downloaded Assets Report to verify that it completes successfully without triggering a RuntimeNodeTraversalException.