Pentaho Analysis - Mondrian
  1. Pentaho Analysis - Mondrian
  2. MONDRIAN-1203

Error "Failed to load all aggregations after 10 passes" while evaluating composite slicer

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Severe Severe
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Mondrian Backlog
    • Component/s: None
    • Labels:
      None
    • Story Points:
      3
    • Notice:
      When an issue is open, the "Fix Version/s" field conveys a target, not necessarily a commitment. When an issue is closed, the "Fix Version/s" field conveys the version that the issue was fixed in.
    • QA Validation Status:
      Not Yet Validated

      Description

      Mondrian gives error "Failed to load all aggregations after 10 passes" while evaluating composite slicer.

      A reproducible test case is to run CompoundSlicerTest.testBugMondrian899() followed by NamedSetSet.testNamedSetRangeInSlicer().

      The cause is subtle (a one-line fix in SegmentCacheIndexImpl). It occurs when the cache has many fragmentary segments, and in trying to match a particular combination of values (x, y, z) for columns (X, Y, Z, A), where A needs to be wildcarded to be safely rolled up, it accidentally picks a segment that doesn't have the required value of x. So when the rollup occurs, the resulting segment does not contain the cell (x, y, z) as promised. Mondrian goes into a loop, repeatedly trying the same rollup.

        Activity

        Show
        Julian Hyde added a comment - Fixed in https://github.com/pentaho/mondrian/commit/2782a5f879458e937aa02de9488c3499d9d56d4b .
        Hide
        Curtis Boyden added a comment -
        This test fails for ALL non-native regression tests (MySQL / Oracle, w/Agg & w/o Agg)
        Show
        Curtis Boyden added a comment - This test fails for ALL non-native regression tests (MySQL / Oracle, w/Agg & w/o Agg)
        Hide
        Curtis Boyden added a comment -
        Should it even be run when there are no aggregates?

        Should it be working or disabled for non-native executions?
        Show
        Curtis Boyden added a comment - Should it even be run when there are no aggregates? Should it be working or disabled for non-native executions?
        Hide
        Julian Hyde added a comment -
        The test does nothing unusual. It runs two queries and checks the results. It doesn't set any internal properties, or check for particular SQL being generated. It ought to succeed in all configurations.
        Show
        Julian Hyde added a comment - The test does nothing unusual. It runs two queries and checks the results. It doesn't set any internal properties, or check for particular SQL being generated. It ought to succeed in all configurations.
        Hide
        Brandon Bruce added a comment -
        Could you find out if this needs to be reopened?
        Show
        Brandon Bruce added a comment - Could you find out if this needs to be reopened?
        Hide
        Curtis Boyden added a comment -
        Re-opening since it should succeed in all configurations but fails in all non-native configurations.
        Show
        Curtis Boyden added a comment - Re-opening since it should succeed in all configurations but fails in all non-native configurations.
        Hide
        Luc Boudreau added a comment - - edited
        I've been investigating this case and I've found out that this is caused by RolapResult line 264. When we evaluate a slicer, we iterate over the members of a compound slicer containing multiple members for the same hierarchy and push them into the Evaluator one after the other. At the end of this iteration, the Evaluator contains, for the compounded hierarchy, only the last member which was iterated over. This last member will linger into the evaluator and sneak into the TopCount evaluation, where it will mess up the results and order them by that particular lingering member instead of the sum of the compounded slicer's member.

        This only happens in non-native mode, because in native mode, we explicitly constraint the members when generating SQL.
        Show
        Luc Boudreau added a comment - - edited I've been investigating this case and I've found out that this is caused by RolapResult line 264. When we evaluate a slicer, we iterate over the members of a compound slicer containing multiple members for the same hierarchy and push them into the Evaluator one after the other. At the end of this iteration, the Evaluator contains, for the compounded hierarchy, only the last member which was iterated over. This last member will linger into the evaluator and sneak into the TopCount evaluation, where it will mess up the results and order them by that particular lingering member instead of the sum of the compounded slicer's member. This only happens in non-native mode, because in native mode, we explicitly constraint the members when generating SQL.

          People

          • Assignee:
            Unassigned User
            Reporter:
            Julian Hyde
          • Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated: