CQL search "with parent" that have more than 500 child pages cause increase in CPU usage and load indefinitely

XMLWordPrintable

    • 5
    • Severity 2 - Major
    • 6

      Summary

      When searching using the filter 'with parent', the search will load indefinately if the parent page have more than 500 child pages.

      Environment

      Confluence 6.5.2

      Steps to Reproduce

      1. Create a page (pageA)
      2. Create 505 child pages under the pageA
      3. Go to Confluence Search
      4. "Add a filter" "With parent" and insert pageA in the value.

      Expected Results

      The search will find all the child pages under the parent page

      Actual Results

      The search load indefinately and the CPU usage kept increasing until the server restart. We will see the thread similar to the one below hogging most of the CPU in the server when this issue occur:

      "http-nio-8672-exec-5" #37 daemon prio=5 os_prio=0 tid=0x00007fca3c77a000 nid=0x25ad runnable [0x00007fc9abef1000]
         java.lang.Thread.State: RUNNABLE
      ........
      	at com.atlassian.confluence.plugins.cql.fields.ParentFieldHandler.fetchChildren(ParentFieldHandler.java:83)
      	at com.atlassian.confluence.plugins.cql.fields.ParentFieldHandler.build(ParentFieldHandler.java:58)
      	at com.atlassian.confluence.plugins.cql.fields.ParentFieldHandler.build(ParentFieldHandler.java:29)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitEntityExpr(CQLtoV2SearchParseTreeVisitor.java:170)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitEntityExpr(CQLtoV2SearchParseTreeVisitor.java:30)
      	at com.atlassian.querylang.antlrgen.AqlParser$EntityExprContext.accept(AqlParser.java:2035)
      	at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72)
      	at com.atlassian.querylang.antlrgen.AqlBaseVisitor.visitExpr(AqlBaseVisitor.java:300)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitSubClause(CQLtoV2SearchParseTreeVisitor.java:101)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitNotClause(CQLtoV2SearchParseTreeVisitor.java:87)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitAndClause(CQLtoV2SearchParseTreeVisitor.java:68)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitOrClause(CQLtoV2SearchParseTreeVisitor.java:53)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitOrClause(CQLtoV2SearchParseTreeVisitor.java:30)
      	at com.atlassian.querylang.antlrgen.AqlParser$OrClauseContext.accept(AqlParser.java:903)
      	at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72)
      	at com.atlassian.querylang.antlrgen.AqlBaseVisitor.visitClause(AqlBaseVisitor.java:316)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitSubClause(CQLtoV2SearchParseTreeVisitor.java:98)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitAndClause(CQLtoV2SearchParseTreeVisitor.java:66)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitOrClause(CQLtoV2SearchParseTreeVisitor.java:53)
      	at com.atlassian.confluence.plugins.cql.impl.CQLtoV2SearchParseTreeVisitor.visitOrClause(CQLtoV2SearchParseTreeVisitor.java:30)
      	at com.atlassian.querylang.antlrgen.AqlParser$OrClauseContext.accept(AqlParser.java:903)
      	at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72)
      	at com.atlassian.querylang.antlrgen.AqlBaseVisitor.visitClause(AqlBaseVisitor.java:316)
      	at com.atlassian.querylang.antlrgen.AqlParser$ClauseContext.accept(AqlParser.java:853)
      	at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72)
      	..
      

      Notes

      This issue will also affect macro such as "page properties report" that make use of the CQL as well.

      Workaround

      Reduce the number of child pages to 500 or below

            Assignee:
            Unassigned
            Reporter:
            Jing Hwa Cheok (Inactive)
            Votes:
            2 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: