Uploaded image for project: 'Pig'
  1. Pig
  2. PIG-4012

java.lang.IllegalArgumentException: Comparison method violates its general contract! SpillableMemoryManager

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.12.0
    • 0.15.0
    • impl
    • None
    • java version "1.7.0_60-ea"
      Java(TM) SE Runtime Environment (build 1.7.0_60-ea-b02)
      Java HotSpot(TM) 64-Bit Server VM (build 24.60-b04, mixed mode)

    Description

      java.lang.IllegalArgumentException: Comparison method violates its general contract!
      at java.util.TimSort.mergeHi(TimSort.java:868)
      at java.util.TimSort.mergeAt(TimSort.java:485)
      at java.util.TimSort.mergeForceCollapse(TimSort.java:426)
      at java.util.TimSort.sort(TimSort.java:223)
      at java.util.TimSort.sort(TimSort.java:173)
      at java.util.Arrays.sort(Arrays.java:659)
      at java.util.Collections.sort(Collections.java:217)
      at org.apache.pig.impl.util.SpillableMemoryManager.handleNotification(SpillableMemoryManager.java:199)
      at sun.management.NotificationEmitterSupport.sendNotification(NotificationEmitterSupport.java:156)
      at sun.management.MemoryImpl.createNotification(MemoryImpl.java:168)
      at sun.management.MemoryPoolImpl$PoolSensor.triggerAction(MemoryPoolImpl.java:301)
      at sun.management.Sensor.trigger(Sensor.java:137)

      From SpillableMemoryManager.java:
      /**

      • We don't lock anything, so this sort may not be stable if a WeakReference suddenly
      • becomes null, but it will be close enough.
      • Also between the time we sort and we use these spillables, they
      • may actually change in size - so this is just best effort
        */
        Issue may be due to Java 7 and reporting vs ignoring the exception.
        Trying
        -Djava.util.Arrays.useLegacyMergeSort=true

      http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6804124
      suggests the newer MergeSort is much faster.

      Someone may want to make the sorting stable in SpillableMemoryManager so that the new merge sort can be used without failure.

      Attachments

        Issue Links

          Activity

            People

              rohini Rohini Palaniswamy
              ddreyfus David Dreyfus
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: