Darrel Schneider created GEODE-2536: ---------------------------------------
Summary: DiskId code confusing in how it implements needsToBeWritten Key: GEODE-2536 URL: https://issues.apache.org/jira/browse/GEODE-2536 Project: Geode Issue Type: Improvement Components: persistence Reporter: Darrel Schneider DiskId has an abstract method "needsToBeWritten." It is set to true by "markForWriting" and set to false by "unmarkForWriting." DiskId has two types of implementations: one for overflow only regions and one for persistent regions. The needsToBeWritten only makes sense for overflow only. But the persistent DiskIds also implement these methods and do so in a way that can be confused with "isKeyIdNegative." Since markForWriting will only be called for overflow only disk ids I recommend that the persistent implementation of this method be changed to always throw an exception. unmarkForWriting may be called on any type of disk id but for persistent ones should be changed to do nothing. needsToBeWritten should be changed to always return false for persistent DiskIds since they are immediately written to disk (or scheduled to be written if async) by whoever gives them a new value. needsToBeWritten is only called by the overflowToDisk method and for a persistent+overflow region it should never need to write the value to disk; all it needs to do is remove the value from memory since it is written to disk. The current implementation of these methods on persistent DiskIds do it by negating the keyId. Unfortunately this is also done to indicate that the value was not recovered from disk. -- This message was sent by Atlassian JIRA (v6.3.15#6346)