Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-5908

DiskStoreID.compare treat different DiskStoreID with same leastSig as equal

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.8.0
    • core

    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

          Activity

            People

              zhouxj Xiaojian Zhou
              zhouxj Xiaojian Zhou
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 10m
                  1h 10m