You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "xiaojian zhou (JIRA)" <ji...@apache.org> on 2018/10/21 05:46:00 UTC
[jira] [Created] (GEODE-5908) DiskStoreID.compare treat different
DiskStoreID with same leastSig as equal
xiaojian zhou created GEODE-5908:
------------------------------------
Summary: DiskStoreID.compare treat different DiskStoreID with same leastSig as equal
Key: GEODE-5908
URL: https://issues.apache.org/jira/browse/GEODE-5908
Project: Geode
Issue Type: Bug
Components: core
Reporter: xiaojian zhou
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;
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)