mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-08-20 09:53:01 +08:00
fix java.lang.IllegalArgumentException: Comparison method violates its general contract! (#6239)
This commit is contained in:
parent
a5fe6e21bc
commit
008ac38ebc
@ -14,20 +14,23 @@ public class ReadChunks {
|
|||||||
points.add(new Point(chunk.getOffset(), chunk, true));
|
points.add(new Point(chunk.getOffset(), chunk, true));
|
||||||
points.add(new Point(chunk.getOffset() + chunk.getSize(), chunk, false));
|
points.add(new Point(chunk.getOffset() + chunk.getSize(), chunk, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.sort(points, new Comparator<Point>() {
|
Collections.sort(points, new Comparator<Point>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(Point a, Point b) {
|
public int compare(Point a, Point b) {
|
||||||
int x = (int) (a.x - b.x);
|
int xComparison = Long.compare(a.x, b.x);
|
||||||
if (a.x != b.x) {
|
if (xComparison != 0) {
|
||||||
return (int) (a.x - b.x);
|
return xComparison;
|
||||||
}
|
}
|
||||||
if (a.ts != b.ts) {
|
|
||||||
return (int) (a.ts - b.ts);
|
// If x values are equal, compare ts
|
||||||
|
int tsComparison = Long.compare(a.ts, b.ts);
|
||||||
|
if (tsComparison != 0) {
|
||||||
|
return tsComparison;
|
||||||
}
|
}
|
||||||
if (!a.isStart) {
|
|
||||||
return -1;
|
// If both x and ts are equal, prioritize start points
|
||||||
}
|
return Boolean.compare(b.isStart, a.isStart); // b.isStart first to prioritize starts
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user