public void handleRegionEntry(RegionEntry re) { DiskEntry de = (DiskEntry)re; synchronized (de) { DiskId id = de.getDiskId(); if (id != null) { id.setRecoveredFromDisk(true); } } } });
private static Object getValueRetain(DiskEntry entry, RegionEntryContext context, boolean rawValue) { @Retained Object v = entry._getValueRetain(context, true); if (rawValue && GemFireCacheImpl.hasNewOffHeap() && (v instanceof SerializedDiskBuffer)) { return ((SerializedDiskBuffer)v).getValueRetain(FetchRequest.ORIGINAL); } return v; }
public static void handleFullAsyncQueue(DiskEntry entry, LocalRegion region, VersionTag tag) { DiskRegion dr = region.getDiskRegion(); DiskId did = entry.getDiskId(); synchronized (entry) { dr.acquireReadLock(); if (did.isPendingAsync()) { did.setPendingAsync(false); final Token entryVal = entry.getValueAsToken(); final int entryValSize = region.calculateRegionEntryValueSize(entry); boolean remove = false; && ((LRUEntry)entry).testEvicted()) { region.updateSizeOnEvict(entry.getKey(), entryValSize); did.getValueLength()); try { entry.handleValueOverflow(region); entry.setValueWithContext(region,null); }finally { entry.afterValueOverflow(region); VersionStamp stamp = entry.getVersionStamp(); if(tag != null && stamp != null && (stamp.getMemberID() != tag.getMemberID()
Token entryVal = entry.getValueAsToken(); if (entryVal == null || Token.isRemovedFromDisk(entryVal)) { DiskId did = entry.getDiskId(); if (did == null) { ((LRUEntry)entry).setDelayedDiskId(region); did = entry.getDiskId(); synchronized (did) { if (entry.isRemovedFromDisk()) { return 0; change = entry.updateAsyncEntrySize(ccHelper); region.updateSizeOnEvict(entry.getKey(), oldSize); entry.handleValueOverflow(region); entry.setValueWithContext(region,null); }finally { entry.afterValueOverflow(region);
boolean scheduleAsync = false; boolean callRemoveFromDisk = false; DiskId did = entry.getDiskId(); VersionTag tag = null; Object syncObj = did; oldValue = entry.getValueAsToken(); if (Token.isRemovedFromDisk(newValue)) { if (dr.isBackup()) { entry.setValueWithContext(region, newValue); // OFFHEAP newValue was already preparedForCache if (!entry.isValueNull()) { try { entry.handleValueOverflow(region); entry.setValueWithContext(region, null); // fixes bug 41119 }finally { entry.afterValueOverflow(region); did.getValueLength()); } else { entry.setValueWithContext(region, entry.prepareValueForCache(region, re.getValue(), false, false)); dr.incNumEntriesInVM(1L); incrementBucketStats(region, 1/*InVM*/, 0/*OnDisk*/, 0); entry.setValueWithContext(region, newValue); // OFFHEAP newValue already prepared } else { writeBytesToDisk(entry, region, false, ValueWrapper.create(newValue));
throw new NullPointerException(LocalizedStrings.DiskEntry_ENTRYS_VALUE_SHOULD_NOT_BE_NULL.toLocalizedString()); DiskId did = entry.getDiskId(); synchronized (did) { boolean oldValueWasNull = entry.isValueNull(); did.setValueLength(newValue.getValueLength()); if (newValue.getRecoveredKeyId() >= 0) { entry.setValueWithContext(context, entry.prepareValueForCache(drv, newValue.getValue(), false, false)); } else { if (!oldValueWasNull) { try { entry.handleValueOverflow(context); entry.setValueWithContext(context,null); // fixes bug 41119 }finally { entry.afterValueOverflow(context);
logger.trace(LogMarker.PERSIST_RECOVERY, "replacing incompatible entry key = {} old = {} new = {} oldDiskId = {} new diskId = {} tag = {} in child oplog #{}", old.getKey(), System.identityHashCode(old), System.identityHashCode(repl), old.getDiskId(), repl.getDiskId(), old .getVersionStamp(), this.getOplogId());
DiskId did = entry.getDiskId(); VersionTag tag = null; Object syncObj = did; scheduledAsyncHere = true; did.setPendingAsync(true); VersionStamp stamp = entry.getVersionStamp(); if(stamp != null) { tag = stamp.asVersionTag(); valueWasNull = entry.isValueNull(); entry._removePhase1(region);
/** * 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(); } }
DiskEntry.Helper.recoverValue(de, de.getDiskId().getOplogId(), ((DiskRecoveryStore) drv)); value = de._getValueRetain(drv, true); // OFFHEAP: passed to SnapshotRecord who copies into byte[]; so for now copy to heap CD
DiskId di = de.getDiskId(); if (di == null) { return false; if(de.isRemovedFromDisk()) { valueOffset = di.getOffsetInOplog(); valueLength = di.getValueLength(); deKey = de.getKeyCopy(); if (valueOffset < 0) { assert (EntryBits.isAnyInvalid(userBits) || EntryBits.isTombstone(userBits)); if (EntryBits.isWithVersions(userBits) && de.getVersionStamp()!=null) { tag = de.getVersionStamp().asVersionTag(); } else if(de.getVersionStamp() != null) { throw new AssertionError("No version bits on entry we're writing to the krf " + de); oplogKeyId, valueOffset, tag, de.getLastModified(), currentTime);
DiskId di = de.getDiskId(); if (di == null) { return; if (de.isRemovedFromDisk()) { valueOffset = di.getOffsetInOplog(); valueLength = di.getValueLength(); deKey = de.getKey(); if (valueOffset < 0) { assert (EntryBits.isAnyInvalid(userBits) || EntryBits.isTombstone(userBits)); if (EntryBits.isWithVersions(userBits) && de.getVersionStamp() != null) { tag = de.getVersionStamp().asVersionTag(); } else if (de.getVersionStamp() != null) { throw new AssertionError("No version bits on entry we're writing to the krf " + de);
DiskId did; synchronized (de) { did = de.getDiskId(); entry.setLastModified(mgr, de.getLastModified()); v = de._getValueRetain(context, true); // OFFHEAP copied to heap entry; todo allow entry to refer to offheap since it will be copied to network. ReferenceCountHelper.setReferenceCountOwner(null); if (v == null) { did = de.getDiskId();
@Retained static Object getOffHeapValueOnDiskOrBuffer(DiskEntry entry, DiskRegion dr, RegionEntryContext context) { DiskId did = entry.getDiskId(); Object syncObj = did; if (syncObj == null) { synchronized (syncObj) { if (did != null && did.isPendingAsync()) { @Retained Object v = entry._getValueRetain(context, true); // TODO:KIRK:OK Rusty had Object v = entry.getValueWithContext(context); if (Token.isRemovedFromDisk(v)) { v = null; || (!entry.isValueNull() && did.needsToBeWritten() && !EntryBits.isRecoveredFromDisk(did.getUserBits()))/*fix for bug 41942*/) { return null;
Object key = entry.getKeyCopy(); this.keyBytes = EntryEventImpl.serialize(key); this.size += (4 + this.keyBytes.length); long keyId = entry.getDiskId().getKeyId(); if(keyId == 0) { Assert.fail("Attempting to write an entry with keyId=0 to oplog. Entry key=" + entry.getKey() + " diskId=" + entry.getDiskId() + " region=" + dr);
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()); } } } } });
@Retained Object v = entry._getValueRetain(region, true); // TODO:KIRK:OK Object v = entry.getValueWithContext(region); boolean lruFaultedIn = false; boolean done = false; DiskId did = entry.getDiskId(); if (did != null && did.isPendingAsync()) { done = true; && (v == null || Token.isRemovedFromDisk(v) && !region.isIndexCreationThread())) { synchronized (entry) { v = entry._getValueRetain(region, true); // TODO:KIRK:OK v = entry.getValueWithContext(region); if (v == null) { v = readValueFromDisk(entry, region); entry.setRecentlyUsed();