Ferenc Csaky created FLINK-29707:
------------------------------------

             Summary: Fix possible comparator violation for "flink list"
                 Key: FLINK-29707
                 URL: https://issues.apache.org/jira/browse/FLINK-29707
             Project: Flink
          Issue Type: Bug
          Components: Command Line Client
    Affects Versions: 1.16.0
            Reporter: Ferenc Csaky


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:
{code:java}
Comparator<JobStatusMessage> startTimeComparator =
                (o1, o2) -> (int) (o1.getStartTime() - o2.getStartTime());
{code}
In some rare situation this can lead to this:
{code:java}
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)
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to