public void handleRegionEntry(RegionEntry re) { DiskEntry de = (DiskEntry)re; synchronized (de) { DiskId id = de.getDiskId(); if (id != null) { if (EntryBits.isRecoveredFromDisk(id.getUserBits())) { drs.destroyRecoveredEntry(de.getKeyCopy()); } } } } });
public void handleRegionEntry(RegionEntry re) { DiskEntry de = (DiskEntry)re; synchronized (de) { DiskId id = de.getDiskId(); if (id != null) { if (EntryBits.isRecoveredFromDisk(id.getUserBits())) { drs.destroyRecoveredEntry(de.getKey()); } } } } });
public boolean testIsRecoveredAndClear(DiskId id) { if (!isReadyForRecovery()) return false; if (id == null) return false; synchronized (id) { byte bits = id.getUserBits(); if (EntryBits.isRecoveredFromDisk(bits)) { bits = EntryBits.setRecoveredFromDisk(bits, false); id.setUserBits(bits); return true; } } return false; }
public boolean testIsRecovered(DiskId id, boolean clear) { if (!isReadyForRecovery()) return false; if (id == null) return false; synchronized (id) { byte bits = id.getUserBits(); if (EntryBits.isRecoveredFromDisk(bits)) { if (clear) { bits = EntryBits.setRecoveredFromDisk(bits, false); id.setUserBits(bits); } return true; } } return false; }
/** * Process a version tag. This overrides AbtractRegionEntry so * we can check to see if the old value was recovered from disk. * If so, we don't check for conflicts. */ @Override public void processVersionTag(EntryEvent cacheEvent) { DiskId did = getDiskId(); boolean checkConflicts = true; if(did != null) { LocalRegion lr = (LocalRegion)cacheEvent.getRegion(); if (lr != null && lr.getDiskRegion().isReadyForRecovery()) { synchronized(did) { checkConflicts = !EntryBits.isRecoveredFromDisk(did.getUserBits()); } } } processVersionTag(cacheEvent, checkConflicts); }
/** * Process a version tag. This overrides AbtractRegionEntry so * we can check to see if the old value was recovered from disk. * If so, we don't check for conflicts. */ @Override public void processVersionTag(EntryEvent cacheEvent) { DiskId did = getDiskId(); boolean checkConflicts = true; if(did != null) { LocalRegion lr = (LocalRegion)cacheEvent.getRegion(); if (lr != null && lr.getDiskRegion().isReadyForRecovery()) { synchronized(did) { checkConflicts = !EntryBits.isRecoveredFromDisk(did.getUserBits()); } } } processVersionTag(cacheEvent, checkConflicts); }
/** * Testing purpose only * Get the value of an entry that is on disk without faulting * it in and without looking in the io buffer. * @since 3.2.1 */ static Object getValueOnDisk(DiskEntry entry, DiskRegion dr) { DiskId id = entry.getDiskId(); if (id == null) { return null; } dr.acquireReadLock(); try { synchronized (id) { if ((dr.isBackup() && id.getKeyId() == DiskRegion.INVALID_ID) || (!entry.isValueNull() && id.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(id.getUserBits()))/*fix for bug 41942*/) { return null; } return dr.getNoBuffer(id); } } finally { dr.releaseReadLock(); } }
/** * Testing purpose only * Get the value of an entry that is on disk without faulting * it in and without looking in the io buffer. * @since 3.2.1 */ static Object getValueOnDisk(DiskEntry entry, DiskRegion dr) { DiskId id = entry.getDiskId(); if (id == null) { return null; } dr.acquireReadLock(); try { synchronized (id) { if (id == null || (dr.isBackup() && id.getKeyId() == DiskRegion.INVALID_ID) || (!entry.isValueNull() && id.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(id.getUserBits()))/*fix for bug 41942*/) { return null; } return dr.getNoBuffer(id); } } finally { dr.releaseReadLock(); } }
synchronized (de) { DiskId id = de.getDiskId(); if (id != null && EntryBits.isRecoveredFromDisk(id.getUserBits())) { this.region.destroyRecoveredEntry(key); if (isDebugEnabled) {
/** * Get the serialized value directly from disk. Returned object may be * a {@link CachedDeserializable}. Goes straight to disk without faulting * into memory. Only looks at the disk storage, not at heap storage. * @param entry the entry used to identify the value to fetch * @param dr the persistent storage from which to fetch the value * @return either null, byte array, or CacheDeserializable * @since gemfire57_hotfix */ public static Object getSerializedValueOnDisk( DiskEntry entry, DiskRegion dr) { DiskId did = entry.getDiskId(); if (did == null) { return null; } dr.acquireReadLock(); try { synchronized (did) { if (did == null || (dr.isBackup() && did.getKeyId() == DiskRegion.INVALID_ID)) { return null; } else if (!entry.isValueNull() && did.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(did.getUserBits())/*fix for bug 41942*/) { return null; } return dr.getSerializedData(did); } } finally { dr.releaseReadLock(); } }
/** * Get the serialized value directly from disk. Returned object may be * a {@link CachedDeserializable}. Goes straight to disk without faulting * into memory. Only looks at the disk storage, not at heap storage. * @param entry the entry used to identify the value to fetch * @param dr the persistent storage from which to fetch the value * @return either null, byte array, or CacheDeserializable * @since gemfire57_hotfix */ public static Object getSerializedValueOnDisk( DiskEntry entry, DiskRegion dr) { DiskId did = entry.getDiskId(); if (did == null) { return null; } dr.acquireReadLock(); try { synchronized (did) { if (did == null || (dr.isBackup() && did.getKeyId() == DiskRegion.INVALID_ID)) { return null; } else if (!entry.isValueNull() && did.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(did.getUserBits())/*fix for bug 41942*/) { return null; } return dr.getSerializedData(did); } } finally { dr.releaseReadLock(); } }
|| (!entry.isValueNull() && did.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(did.getUserBits()))/*fix for bug 41942*/) { return null;
|| (!entry.isValueNull() && did.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(did.getUserBits()))/*fix for bug 41942*/) { return null;
synchronized (de) { DiskId id = de.getDiskId(); if (id != null && EntryBits.isRecoveredFromDisk(id.getUserBits())) { this.region.destroyRecoveredEntry(key); this.region.getLogWriterI18n().info(LocalizedStrings.DEBUG, "Deleted unfinished keys:key="+key);
foundData = true; userBits = 0; if (EntryBits.isRecoveredFromDisk(did.getUserBits())) { userBits = EntryBits.setRecoveredFromDisk(userBits, true);
foundData = true; userBits = 0; if (EntryBits.isRecoveredFromDisk(did.getUserBits())) { userBits = EntryBits.setRecoveredFromDisk(userBits, true);