Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
When reviewing code, I found this actually is a bug, and will impact our
checkForConflict() to throw CME in following case:
stamps's DiskStoreID is: 5a42b9ec2e6e45db-87559e428bd3ad67
tag's DiskStoreID is: a870e3a0126e4b0d-87559e428bd3ad67
tag is actually bigger than stamp's. But in current code, they will be treated as equal.
I wrote a junit test to reproduce this problem.
The root cause is:
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskStoreID.java b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskStoreID.java
index 601d24899..0392e92dd 100644
-
-
-
- a/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskStoreID.java*
-
-
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/persistence/DiskStoreID.java
@@ -80,7 +80,7 @@ public class DiskStoreID implements VersionSource<DiskStoreID>, Serializable
{ return 1; }int result = Long.signum(mostSig - tagID.mostSig);
- if (result != 0) {
+ if (result == 0)
{ result = Long.signum(leastSig - tagID.leastSig); }return result;
Attachments
Issue Links
- links to