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; }
@Retained public static Object getValueOffHeapOrDiskWithoutFaultIn(DiskEntry entry, DiskRegionView dr, RegionEntryContext context) { @Retained Object v = entry._getValueRetain(context, true); if (v == null || Token.isRemovedFromDisk(v)) { synchronized (entry) { v = entry._getValueRetain(context, true); if (v == null) { v = Helper.getOffHeapValueOnDiskOrBuffer(entry, dr, context, false); } } } if (Token.isRemovedFromDisk(v)) { // fix for bug 31800 v = null; } else if (v instanceof ByteSource) { // If the ByteSource contains a Delta or ListOfDelta then we want to deserialize it final ByteSource bs = (ByteSource)v; Object deserVal = bs.getDeserializedForReading(); if (deserVal != v) { bs.release(); v = deserVal; } } return v; }
@Retained public static Object getValueOffHeapOrDiskWithoutFaultIn(DiskEntry entry, LocalRegion region) { @Retained Object v = entry._getValueRetain(region, true); // TODO:KIRK:OK Object v = entry.getValueWithContext(region); if (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 = Helper.getOffHeapValueOnDiskOrBuffer(entry, region.getDiskRegion(),region); } } } if (Token.isRemovedFromDisk(v)) { // fix for bug 31800 v = null; // } else if (v instanceof ByteSource) { // // If the ByteSource contains a Delta or ListOfDelta then we want to deserialize it // Object deserVal = ((CachedDeserializable)v).getDeserializedForReading(); // if (deserVal != v) { // OffHeapHelper.release(v); // v = deserVal; // } } return v; }
/** * Writes the key/value object stored in the given entry to disk * @throws RegionClearedException * * @see DiskRegion#put */ private static void writeToDisk(DiskEntry entry, LocalRegion region, boolean async) throws RegionClearedException { DiskRegion dr = region.getDiskRegion(); @Retained @Released Object value = entry._getValueRetain(region, true); // TODO:KIRK:OK Rusty had Object value = entry.getValueWithContext(region); ValueWrapper vw; try { vw = ValueWrapper.create(value); } finally { OffHeapHelper.release(value); } writeBytesToDisk(entry, region, async, vw); }
((DiskRecoveryStore) drv)); value = de._getValueRetain(drv, true); // OFFHEAP: passed to SnapshotRecord who copies into byte[]; so for now copy to heap CD
@Retained Object value = entry._getValueRetain(region, true); try { return createValueWrapper(value, event);
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;
@Retained Object v = entry._getValueRetain(region, true); // TODO:KIRK:OK Object v = entry.getValueWithContext(region); boolean lruFaultedIn = false; boolean done = false; && (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);
@Retained Object v = entry._getValueRetain(region, true); // TODO:KIRK:OK Object v = entry.getValueWithContext(region); boolean lruFaultedIn = false; boolean done = false; && (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);
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) {
ReferenceCountHelper.skipRefCountTracking(); @Retained @Released Object value = entry._getValueRetain(dr, true); ReferenceCountHelper.unskipRefCountTracking();
long oplogOffset = did.getOffsetInOplog(); SimpleMemoryAllocatorImpl.skipRefCountTracking(); @Retained @Released Object value = entry._getValueRetain(dr, true); // OFFHEAP for now copy into heap CD; todo optimize by keeping offheap for life of wrapper SimpleMemoryAllocatorImpl.unskipRefCountTracking();
v = de._getValueRetain(context, true); // OFFHEAP copied to heap entry; todo allow entry to refer to offheap since it will be copied to network. SimpleMemoryAllocatorImpl.setReferenceCountOwner(null); if (v == null) {