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

  1. In the AEM repository, navigate to the Lucene index definition for nt:base nodes (typically under /oak:index/ntBaseLucene).

  2. Under indexRules for nt:base, add or update the properties:

    • Add jcr:created with type “Date”, propertyIndex=true, ordered=true.
    • Ensure verb is present with type “String”, propertyIndex=true.
  3. Set reindex=true on the index definition node to trigger a reindex.

  4. Save the changes, and allow the index to rebuild.

  1. Define a new Lucene index (For example: /oak:index/dedicatedDownloadEventIndex) with the following properties:

    • type = “lucene”

    • includedPaths = [ “”]

    • indexRules for nt:base with properties:

      • verb: type = “String”, propertyIndex=true
      • jcr:created: type = “Date”, propertyIndex=true, ordered=true
  2. Deploy the new index definition to your AEM instance.

  3. 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.

recommendation-more-help
experience-cloud-kcs-help-kbarticles