Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-29707

Fix possible comparator violation for "flink list"

    XMLWordPrintableJSON

Details

    Description

      For the list CLI option, the code that prints the jobs, there is a startTimeComparator definition, which orders the jobs and it is done this way:

      Comparator<JobStatusMessage> startTimeComparator =
                      (o1, o2) -> (int) (o1.getStartTime() - o2.getStartTime());
      

      In some rare situation this can lead to this:

      2022-10-19 09:58:11,690 ERROR org.apache.flink.client.cli.CliFrontend                      [] - Error while running the command.
      java.lang.IllegalArgumentException: Comparison method violates its general contract!
      	at java.util.TimSort.mergeLo(TimSort.java:777) ~[?:1.8.0_312]
      	at java.util.TimSort.mergeAt(TimSort.java:514) ~[?:1.8.0_312]
      	at java.util.TimSort.mergeForceCollapse(TimSort.java:457) ~[?:1.8.0_312]
      	at java.util.TimSort.sort(TimSort.java:254) ~[?:1.8.0_312]
      	at java.util.Arrays.sort(Arrays.java:1512) ~[?:1.8.0_312]
      	at java.util.ArrayList.sort(ArrayList.java:1464) ~[?:1.8.0_312]
      	at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392) ~[?:1.8.0_312]
      	at java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[?:1.8.0_312]
      	at java.util.stream.Sink$ChainedReference.end(Sink.java:258) ~[?:1.8.0_312]
      	at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:363) ~[?:1.8.0_312]
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:483) ~[?:1.8.0_312]
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:1.8.0_312]
      	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:1.8.0_312]
      	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:1.8.0_312]
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_312]
      	at java.util.stream.ReferencePipeline.forEachOrdered(ReferencePipeline.java:490) ~[?:1.8.0_312]
      	at org.apache.flink.client.cli.CliFrontend.printJobStatusMessages(CliFrontend.java:574)
      

      Attachments

        Issue Links

          Activity

            People

              ferenc-csaky Ferenc Csaky
              ferenc-csaky Ferenc Csaky
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: