mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-11-27 12:49:41 +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.getSize(), chunk, false));
|
||||
}
|
||||
|
||||
Collections.sort(points, new Comparator<Point>() {
|
||||
@Override
|
||||
public int compare(Point a, Point b) {
|
||||
int x = (int) (a.x - b.x);
|
||||
if (a.x != b.x) {
|
||||
return (int) (a.x - b.x);
|
||||
int xComparison = Long.compare(a.x, b.x);
|
||||
if (xComparison != 0) {
|
||||
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;
|
||||
}
|
||||
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
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user