java.lang.RuntimeException: Element 10 has been forgotten

Pentaho BI Platform Tracking | Julian Hyde | 8 years ago
tip
Click on the to mark the solution that helps you, Samebug will learn from it.
As a community member, you’ll be rewarded for you help.
  1. 0

    I broke 3 of the test cases in HighCardinalityTest in my change 11947. Now testPromotionsTwoDimensions, testHead, testNonEmpty all fail. Error stack as follows: java.lang.RuntimeException: Element 10 has been forgotten at mondrian.rolap.Target$1.get(Target.java:209) at mondrian.rolap.Target$1.get(Target.java:175) at mondrian.util.TraversalList.get(TraversalList.java:52) at mondrian.util.TraversalList$1.hasNext(TraversalList.java:76) at mondrian.rolap.SqlMemberSource$1$1.hasNext(SqlMemberSource.java:483) at mondrian.rolap.RolapCubeHierarchy$NoCacheRolapCubeHierarchyMemberReader$1$1.hasNext(RolapCubeHierarchy.java:954) at mondrian.util.FilteredIterableList$1.postNext(FilteredIterableList.java:92) at mondrian.util.FilteredIterableList$1.next(FilteredIterableList.java:108) at mondrian.util.FilteredIterableList$1.postNext(FilteredIterableList.java:93) at mondrian.util.FilteredIterableList$1.next(FilteredIterableList.java:108) at mondrian.rolap.RolapAxis$MemberList$PositionList$1.next(RolapAxis.java:342) at mondrian.rolap.RolapAxis$MemberList$PositionList$1.next(RolapAxis.java:335) at mondrian.rolap.HighDimensionsTest.execHighCardTest(HighDimensionsTest.java:179) at mondrian.rolap.HighDimensionsTest.testPromotionsTwoDimensions(HighDimensionsTest.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) I surmise the following cause (I may be mistaken). High-cardinality dimensions return lists which are backed by iterators, and those iterators cannot be restarted. Mondrian sometimes iterates over lists more than once, or accesses elements them in arbitrary order. The problem is not with the mondrian code, it is with the high-cardinality dimension code that claims to implement the List interface but does not. I have disabled these tests.

    Pentaho BI Platform Tracking | 8 years ago | Julian Hyde
    java.lang.RuntimeException: Element 10 has been forgotten
  2. 0

    I broke 3 of the test cases in HighCardinalityTest in my change 11947. Now testPromotionsTwoDimensions, testHead, testNonEmpty all fail. Error stack as follows: java.lang.RuntimeException: Element 10 has been forgotten at mondrian.rolap.Target$1.get(Target.java:209) at mondrian.rolap.Target$1.get(Target.java:175) at mondrian.util.TraversalList.get(TraversalList.java:52) at mondrian.util.TraversalList$1.hasNext(TraversalList.java:76) at mondrian.rolap.SqlMemberSource$1$1.hasNext(SqlMemberSource.java:483) at mondrian.rolap.RolapCubeHierarchy$NoCacheRolapCubeHierarchyMemberReader$1$1.hasNext(RolapCubeHierarchy.java:954) at mondrian.util.FilteredIterableList$1.postNext(FilteredIterableList.java:92) at mondrian.util.FilteredIterableList$1.next(FilteredIterableList.java:108) at mondrian.util.FilteredIterableList$1.postNext(FilteredIterableList.java:93) at mondrian.util.FilteredIterableList$1.next(FilteredIterableList.java:108) at mondrian.rolap.RolapAxis$MemberList$PositionList$1.next(RolapAxis.java:342) at mondrian.rolap.RolapAxis$MemberList$PositionList$1.next(RolapAxis.java:335) at mondrian.rolap.HighDimensionsTest.execHighCardTest(HighDimensionsTest.java:179) at mondrian.rolap.HighDimensionsTest.testPromotionsTwoDimensions(HighDimensionsTest.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) I surmise the following cause (I may be mistaken). High-cardinality dimensions return lists which are backed by iterators, and those iterators cannot be restarted. Mondrian sometimes iterates over lists more than once, or accesses elements them in arbitrary order. The problem is not with the mondrian code, it is with the high-cardinality dimension code that claims to implement the List interface but does not. I have disabled these tests.

    Pentaho BI Platform Tracking | 8 years ago | Julian Hyde
    java.lang.RuntimeException: Element 10 has been forgotten

    Root Cause Analysis

    1. java.lang.RuntimeException

      Element 10 has been forgotten

      at mondrian.rolap.Target$1.get()
    2. mondrian.rolap
      Target$1.get
      1. mondrian.rolap.Target$1.get(Target.java:209)
      2. mondrian.rolap.Target$1.get(Target.java:175)
      2 frames
    3. mondrian.util
      TraversalList$1.hasNext
      1. mondrian.util.TraversalList.get(TraversalList.java:52)
      2. mondrian.util.TraversalList$1.hasNext(TraversalList.java:76)
      2 frames
    4. mondrian.rolap
      RolapCubeHierarchy$NoCacheRolapCubeHierarchyMemberReader$1$1.hasNext
      1. mondrian.rolap.SqlMemberSource$1$1.hasNext(SqlMemberSource.java:483)
      2. mondrian.rolap.RolapCubeHierarchy$NoCacheRolapCubeHierarchyMemberReader$1$1.hasNext(RolapCubeHierarchy.java:954)
      2 frames
    5. mondrian.util
      FilteredIterableList$1.next
      1. mondrian.util.FilteredIterableList$1.postNext(FilteredIterableList.java:92)
      2. mondrian.util.FilteredIterableList$1.next(FilteredIterableList.java:108)
      3. mondrian.util.FilteredIterableList$1.postNext(FilteredIterableList.java:93)
      4. mondrian.util.FilteredIterableList$1.next(FilteredIterableList.java:108)
      4 frames
    6. mondrian.rolap
      HighDimensionsTest.testPromotionsTwoDimensions
      1. mondrian.rolap.RolapAxis$MemberList$PositionList$1.next(RolapAxis.java:342)
      2. mondrian.rolap.RolapAxis$MemberList$PositionList$1.next(RolapAxis.java:335)
      3. mondrian.rolap.HighDimensionsTest.execHighCardTest(HighDimensionsTest.java:179)
      4. mondrian.rolap.HighDimensionsTest.testPromotionsTwoDimensions(HighDimensionsTest.java:59)
      4 frames
    7. Java RT
      DelegatingMethodAccessorImpl.invoke
      1. sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      2. sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      3. sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      3 frames
    8. IDEA
      JUnitStarter.main
      1. com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
      1 frame
    9. Java RT
      DelegatingMethodAccessorImpl.invoke
      1. sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      2. sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      3. sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      3 frames
    10. IDEA
      AppMain.main
      1. com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
      1 frame