DVCS comparator in remove duplicates method is throwing exception Comparison method violates its general contract!

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Low
    • 8.20.8, 8.22.0
    • Affects Version/s: 8.17.0, 8.18.0, 8.19.0, 8.20.0
    • Component/s: DVCS Connector
    • None
    • 8.17
    • Severity 3 - Minor

      Issue Summary

      If for some reason (i.e. some changes weren't properly rollback together with transaction) database will contains some commit duplicates there is a method which during sync process removes them and leave only one commit. 

      Steps to Reproduce

      None because source of bug is not known yet.

      Expected Results

      This exception shouldn't be thrown.

      Actual Results

      The below exception is thrown:

      java.lang.IllegalArgumentException: Comparison method violates its general contract!
      	at java.base/java.util.TimSort.mergeHi(TimSort.java:903)
      	at java.base/java.util.TimSort.mergeAt(TimSort.java:520)
      	at java.base/java.util.TimSort.mergeCollapse(TimSort.java:448)
      	at java.base/java.util.TimSort.sort(TimSort.java:245)
      	at java.base/java.util.Arrays.sort(Arrays.java:1515)
      	at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:353)
      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
      	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
      	at com.atlassian.jira.plugins.dvcs.dao.impl.ChangesetDaoImpl.removeDuplicates(ChangesetDaoImpl.java:166)
      	at com.atlassian.jira.plugins.dvcs.dao.impl.ChangesetDaoImpl.createOrAssociate(ChangesetDaoImpl.java:155)
      	at com.atlassian.jira.plugins.dvcs.dao.impl.querydsl.ChangesetDaoQueryDsl.createOrAssociate(ChangesetDaoQueryDsl.java:72)
      	at com.atlassian.jira.plugins.dvcs.service.ChangesetServiceImpl.create(ChangesetServiceImpl.java:73)
      	at com.atlassian.jira.plugins.dvcs.sync.MessageConsumerSupport.onReceive(MessageConsumerSupport.java:75)
      	at com.atlassian.jira.plugins.dvcs.service.MessageExecutor$MessageRunnable.doRun(MessageExecutor.java:342)
      	at com.atlassian.jira.plugins.dvcs.service.MessageExecutor$ReleaseTokenAndEnqueueNextMessage.run(MessageExecutor.java:256)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:834) 

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available

            Assignee:
            Artur Luszcz (Inactive)
            Reporter:
            Artur Luszcz (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: