You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2017/05/16 02:19:18 UTC
[08/78] geode git commit: GEODE-2929: Remove superfluous final from
internal methods
http://git-wip-us.apache.org/repos/asf/geode/blob/30f455bb/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapIntKey.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapIntKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapIntKey.java
index ed76611..32585b0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapIntKey.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapIntKey.java
@@ -15,83 +15,121 @@
package org.apache.geode.internal.cache;
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
+
+
+
+
+
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
+
import org.apache.geode.cache.EntryEvent;
+
+
import org.apache.geode.internal.cache.lru.EnableLRU;
+
+
import org.apache.geode.internal.cache.persistence.DiskRecoveryStore;
+
+
+
+
+
import org.apache.geode.internal.cache.lru.LRUClockNode;
import org.apache.geode.internal.cache.lru.NewLRUClockHand;
+
+
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.versions.VersionSource;
import org.apache.geode.internal.cache.versions.VersionStamp;
import org.apache.geode.internal.cache.versions.VersionTag;
+
+
import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper;
import org.apache.geode.internal.offheap.annotations.Released;
import org.apache.geode.internal.offheap.annotations.Retained;
import org.apache.geode.internal.offheap.annotations.Unretained;
+
import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry;
// macros whose definition changes this class:
-// disk: DISK
-// lru: LRU
+// disk: 1
+// lru: 1
// stats: STATS
-// versioned: VERSIONED
-// offheap: OFFHEAP
+// versioned: 1
+// offheap: 1
// One of the following key macros must be defined:
// key object: KEY_OBJECT
-// key int: KEY_INT
+// key int: 1
// key long: KEY_LONG
// key uuid: KEY_UUID
// key string1: KEY_STRING1
// key string2: KEY_STRING2
+
/**
* Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run
* ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory).
*/
-public class VersionedThinDiskLRURegionEntryOffHeapIntKey
- extends VersionedThinDiskLRURegionEntryOffHeap {
- public VersionedThinDiskLRURegionEntryOffHeapIntKey(RegionEntryContext context, int key,
- @Retained Object value) {
- super(context, (value instanceof RecoveredEntry ? null : value));
+public class VersionedThinDiskLRURegionEntryOffHeapIntKey extends VersionedThinDiskLRURegionEntryOffHeap {
+ public VersionedThinDiskLRURegionEntryOffHeapIntKey (RegionEntryContext context, int key,
+
+ @Retained
+
+ Object value
+
+
+
+ ) {
+ super(context,
+
+ (value instanceof RecoveredEntry ? null : value)
+
+
+
+ );
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
initialize(context, value);
+
+
+
+
this.key = key;
+
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// common code
protected int hash;
private HashEntry<Object, Object> next;
@SuppressWarnings("unused")
private volatile long lastModified;
- private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapIntKey> lastModifiedUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapIntKey.class,
- "lastModified");
+ private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapIntKey> lastModifiedUpdater
+ = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapIntKey.class, "lastModified");
+
/**
* All access done using ohAddrUpdater so it is used even though the compiler can not tell it is.
*/
@SuppressWarnings("unused")
- @Retained
- @Released
- private volatile long ohAddress;
+ @Retained @Released private volatile long ohAddress;
/**
- * I needed to add this because I wanted clear to call setValue which normally can only be called
- * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the
- * disk regions because they also get a rw lock in clear. Some hardware platforms do not support
- * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the
- * re and we will once again be deadlocked. I don't know if we support any of the hardware
- * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions.
+ * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced.
+ * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear.
+ * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync
+ * on the re and we will once again be deadlocked.
+ * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks
+ * on disk regions.
*/
- private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapIntKey> ohAddrUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapIntKey.class,
- "ohAddress");
-
+ private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapIntKey> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapIntKey.class, "ohAddress");
+
@Override
public Token getValueAsToken() {
return OffHeapRegionEntryHelper.getValueAsToken(this);
}
-
+
@Override
protected Object getValueField() {
return OffHeapRegionEntryHelper._getValue(this);
@@ -99,13 +137,18 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
@Override
+
@Unretained
protected void setValueField(@Unretained Object v) {
+
+
+
OffHeapRegionEntryHelper.setValue(this, v);
}
-
@Override
+
@Retained
+
public Object _getValueRetain(RegionEntryContext context, boolean decompress) {
return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context);
}
@@ -119,60 +162,60 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
public boolean setAddress(long expectedAddr, long newAddr) {
return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr);
}
-
+
@Override
+
@Released
+
public void release() {
OffHeapRegionEntryHelper.releaseEntry(this);
}
-
+
@Override
public void returnToPool() {
// Deadcoded for now; never was working
- // if (this instanceof VMThinRegionEntryLongKey) {
- // factory.returnToPool((VMThinRegionEntryLongKey)this);
- // }
+// if (this instanceof VMThinRegionEntryLongKey) {
+// factory.returnToPool((VMThinRegionEntryLongKey)this);
+// }
}
protected long getLastModifiedField() {
return lastModifiedUpdater.get(this);
}
-
protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) {
return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue);
}
-
/**
* @see HashEntry#getEntryHash()
*/
- public final int getEntryHash() {
+ public int getEntryHash() {
return this.hash;
}
-
protected void setEntryHash(int v) {
this.hash = v;
}
-
/**
* @see HashEntry#getNextEntry()
*/
- public final HashEntry<Object, Object> getNextEntry() {
+ public HashEntry<Object, Object> getNextEntry() {
return this.next;
}
-
/**
* @see HashEntry#setNextEntry
*/
- public final void setNextEntry(final HashEntry<Object, Object> n) {
+ public void setNextEntry(final HashEntry<Object, Object> n) {
this.next = n;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// disk code
+
protected void initialize(RegionEntryContext drs, Object value) {
boolean isBackup;
if (drs instanceof LocalRegion) {
- isBackup = ((LocalRegion) drs).getDiskRegion().isBackup();
+ isBackup = ((LocalRegion)drs).getDiskRegion().isBackup();
} else if (drs instanceof PlaceHolderDiskRegion) {
isBackup = true;
} else {
@@ -183,22 +226,23 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
diskInitialize(drs, value);
}
}
-
@Override
- public final synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
+ public synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), null);
+ int newSize = capacityController.entrySize( getKeyForSizing(), null);
setEntrySize(newSize);
int delta = newSize - oldSize;
return delta;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private void diskInitialize(RegionEntryContext context, Object value) {
- DiskRecoveryStore drs = (DiskRecoveryStore) context;
+ DiskRecoveryStore drs = (DiskRecoveryStore)context;
DiskStoreImpl ds = drs.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
- // get appropriate instance of DiskId implementation based on maxOplogSize
+ //get appropriate instance of DiskId implementation based on maxOplogSize
this.id = DiskId.createDiskId(maxOplogSize, true/* is persistence */, ds.needsLinkedList());
Helper.initialize(this, drs, value);
}
@@ -208,155 +252,146 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
*
* @since GemFire 5.1
*/
- protected DiskId id;// = new DiskId();
-
+ protected DiskId id;//= new DiskId();
public DiskId getDiskId() {
return this.id;
}
-
@Override
void setDiskId(RegionEntry old) {
- this.id = ((AbstractDiskRegionEntry) old).getDiskId();
- }
-
- // // inlining DiskId
- // // always have these fields
- // /**
- // * id consists of
- // * most significant
- // * 1 byte = users bits
- // * 2-8 bytes = oplog id
- // * least significant.
- // *
- // * The highest bit in the oplog id part is set to 1 if the oplog id
- // * is negative.
- // * @todo this field could be an int for an overflow only region
- // */
- // private long id;
- // /**
- // * Length of the bytes on disk.
- // * This is always set. If the value is invalid then it will be set to 0.
- // * The most significant bit is used by overflow to mark it as needing to be written.
- // */
- // protected int valueLength = 0;
- // // have intOffset or longOffset
- // // intOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile int offsetInOplog;
- // // longOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile long offsetInOplog;
- // // have overflowOnly or persistence
- // // overflowOnly
- // // no fields
- // // persistent
- // /** unique entry identifier * */
- // private long keyId;
+ this.id = ((AbstractDiskRegionEntry)old).getDiskId();
+ }
+// // inlining DiskId
+// // always have these fields
+// /**
+// * id consists of
+// * most significant
+// * 1 byte = users bits
+// * 2-8 bytes = oplog id
+// * least significant.
+// *
+// * The highest bit in the oplog id part is set to 1 if the oplog id
+// * is negative.
+// * @todo this field could be an int for an overflow only region
+// */
+// private long id;
+// /**
+// * Length of the bytes on disk.
+// * This is always set. If the value is invalid then it will be set to 0.
+// * The most significant bit is used by overflow to mark it as needing to be written.
+// */
+// protected int valueLength = 0;
+// // have intOffset or longOffset
+// // intOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile int offsetInOplog;
+// // longOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile long offsetInOplog;
+// // have overflowOnly or persistence
+// // overflowOnly
+// // no fields
+// // persistent
+// /** unique entry identifier * */
+// private long keyId;
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// lru code
@Override
public void setDelayedDiskId(LocalRegion r) {
+
DiskStoreImpl ds = r.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
this.id = DiskId.createDiskId(maxOplogSize, false /* over flow only */, ds.needsLinkedList());
- }
- public final synchronized int updateEntrySize(EnableLRU capacityController) {
- return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing
- // refcount because we are synced and
- // only getting the size
- }
+
+ }
+ public synchronized int updateEntrySize(EnableLRU capacityController) {
+ return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size
+ }
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) {
+
+ public synchronized int updateEntrySize(EnableLRU capacityController,
+ Object value) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), value);
+ int newSize = capacityController.entrySize( getKeyForSizing(), value);
setEntrySize(newSize);
int delta = newSize - oldSize;
- // if ( debug ) log( "updateEntrySize key=" + getKey()
- // + (_getValue() == Token.INVALID ? " invalid" :
- // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" :
- // (_getValue()==null ? " evicted" : " valid")))
- // + " oldSize=" + oldSize
- // + " newSize=" + this.size );
return delta;
}
-
- public final boolean testRecentlyUsed() {
+ public boolean testRecentlyUsed() {
return areAnyBitsSet(RECENTLY_USED);
}
-
@Override
- public final void setRecentlyUsed() {
+ public void setRecentlyUsed() {
setBits(RECENTLY_USED);
}
-
- public final void unsetRecentlyUsed() {
+ public void unsetRecentlyUsed() {
clearBits(~RECENTLY_USED);
}
-
- public final boolean testEvicted() {
+ public boolean testEvicted() {
return areAnyBitsSet(EVICTED);
}
-
- public final void setEvicted() {
+ public void setEvicted() {
setBits(EVICTED);
}
-
- public final void unsetEvicted() {
+ public void unsetEvicted() {
clearBits(~EVICTED);
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private LRUClockNode nextLRU;
private LRUClockNode prevLRU;
private int size;
-
- public final void setNextLRUNode(LRUClockNode next) {
+ public void setNextLRUNode( LRUClockNode next ) {
this.nextLRU = next;
}
-
- public final LRUClockNode nextLRUNode() {
+ public LRUClockNode nextLRUNode() {
return this.nextLRU;
}
-
- public final void setPrevLRUNode(LRUClockNode prev) {
+ public void setPrevLRUNode( LRUClockNode prev ) {
this.prevLRU = prev;
}
-
- public final LRUClockNode prevLRUNode() {
+ public LRUClockNode prevLRUNode() {
return this.prevLRU;
}
-
- public final int getEntrySize() {
+ public int getEntrySize() {
return this.size;
}
-
- protected final void setEntrySize(int size) {
+ protected void setEntrySize(int size) {
this.size = size;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- // @Override
- // public StringBuilder appendFieldsToString(final StringBuilder sb) {
- // StringBuilder result = super.appendFieldsToString(sb);
- // result.append("; prev=").append(this.prevLRU==null?"null":"not null");
- // result.append("; next=").append(this.nextLRU==null?"null":"not null");
- // return result;
- // }
+
@Override
public Object getKeyForSizing() {
+
+
+
+
// inline keys always report null for sizing since the size comes from the entry size
return null;
+
}
+
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// versioned code
private VersionSource memberID;
private short entryVersionLowBytes;
@@ -368,15 +403,16 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
public int getEntryVersion() {
return ((entryVersionHighByte << 16) & 0xFF0000) | (entryVersionLowBytes & 0xFFFF);
}
-
+
public long getRegionVersion() {
- return (((long) regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
+ return (((long)regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
}
-
+
+
public long getVersionTimeStamp() {
return getLastModified();
}
-
+
public void setVersionTimeStamp(long time) {
setLastModified(time);
}
@@ -384,17 +420,17 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
public VersionSource getMemberID() {
return this.memberID;
}
-
public int getDistributedSystemId() {
return this.distributedSystemId;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public void setVersions(VersionTag tag) {
this.memberID = tag.getMemberID();
int eVersion = tag.getEntryVersion();
- this.entryVersionLowBytes = (short) (eVersion & 0xffff);
- this.entryVersionHighByte = (byte) ((eVersion & 0xff0000) >> 16);
+ this.entryVersionLowBytes = (short)(eVersion & 0xffff);
+ this.entryVersionHighByte = (byte)((eVersion & 0xff0000) >> 16);
this.regionVersionHighBytes = tag.getRegionVersionHighBytes();
this.regionVersionLowBytes = tag.getRegionVersionLowBytes();
if (!(tag.isGatewayTag()) && this.distributedSystemId == tag.getDistributedSystemId()) {
@@ -406,11 +442,11 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
} else {
setVersionTimeStamp(tag.getVersionTimeStamp());
}
- this.distributedSystemId = (byte) (tag.getDistributedSystemId() & 0xff);
+ this.distributedSystemId = (byte)(tag.getDistributedSystemId() & 0xff);
}
public void setMemberID(VersionSource memberID) {
- this.memberID = memberID;
+ this.memberID = memberID;
}
@Override
@@ -419,6 +455,7 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public VersionTag asVersionTag() {
VersionTag tag = VersionTag.create(memberID);
tag.setEntryVersion(getEntryVersion());
@@ -428,9 +465,9 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
return tag;
}
- public void processVersionTag(LocalRegion r, VersionTag tag, boolean isTombstoneFromGII,
- boolean hasDelta, VersionSource thisVM, InternalDistributedMember sender,
- boolean checkForConflicts) {
+ public void processVersionTag(LocalRegion r, VersionTag tag,
+ boolean isTombstoneFromGII, boolean hasDelta,
+ VersionSource thisVM, InternalDistributedMember sender, boolean checkForConflicts) {
basicProcessVersionTag(r, tag, isTombstoneFromGII, hasDelta, thisVM, sender, checkForConflicts);
}
@@ -445,21 +482,29 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
public short getRegionVersionHighBytes() {
return this.regionVersionHighBytes;
}
-
+
/** get rvv internal low bytes. Used by region entries for transferring to storage */
public int getRegionVersionLowBytes() {
return this.regionVersionLowBytes;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// key code
- private final int key;
+
+
+
+
+
+
+
+ private final int key;
@Override
- public final Object getKey() {
+ public Object getKey() {
return this.key;
}
-
@Override
public boolean isKeyEqual(Object k) {
if (k instanceof Integer) {
@@ -467,5 +512,8 @@ public class VersionedThinDiskLRURegionEntryOffHeapIntKey
}
return false;
}
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
}
+
http://git-wip-us.apache.org/repos/asf/geode/blob/30f455bb/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapLongKey.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapLongKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapLongKey.java
index ae46556..324ce68 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapLongKey.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapLongKey.java
@@ -15,83 +15,123 @@
package org.apache.geode.internal.cache;
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
+
+
+
+
+
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
+
import org.apache.geode.cache.EntryEvent;
+
+
import org.apache.geode.internal.cache.lru.EnableLRU;
+
+
import org.apache.geode.internal.cache.persistence.DiskRecoveryStore;
+
+
+
+
+
import org.apache.geode.internal.cache.lru.LRUClockNode;
import org.apache.geode.internal.cache.lru.NewLRUClockHand;
+
+
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.versions.VersionSource;
import org.apache.geode.internal.cache.versions.VersionStamp;
import org.apache.geode.internal.cache.versions.VersionTag;
+
+
import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper;
import org.apache.geode.internal.offheap.annotations.Released;
import org.apache.geode.internal.offheap.annotations.Retained;
import org.apache.geode.internal.offheap.annotations.Unretained;
+
import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry;
// macros whose definition changes this class:
-// disk: DISK
-// lru: LRU
+// disk: 1
+// lru: 1
// stats: STATS
-// versioned: VERSIONED
-// offheap: OFFHEAP
+// versioned: 1
+// offheap: 1
// One of the following key macros must be defined:
// key object: KEY_OBJECT
// key int: KEY_INT
-// key long: KEY_LONG
+// key long: 1
// key uuid: KEY_UUID
// key string1: KEY_STRING1
// key string2: KEY_STRING2
+
/**
* Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run
* ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory).
*/
-public class VersionedThinDiskLRURegionEntryOffHeapLongKey
- extends VersionedThinDiskLRURegionEntryOffHeap {
- public VersionedThinDiskLRURegionEntryOffHeapLongKey(RegionEntryContext context, long key,
- @Retained Object value) {
- super(context, (value instanceof RecoveredEntry ? null : value));
+public class VersionedThinDiskLRURegionEntryOffHeapLongKey extends VersionedThinDiskLRURegionEntryOffHeap {
+ public VersionedThinDiskLRURegionEntryOffHeapLongKey (RegionEntryContext context, long key,
+
+ @Retained
+
+ Object value
+
+
+
+ ) {
+ super(context,
+
+ (value instanceof RecoveredEntry ? null : value)
+
+
+
+ );
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
initialize(context, value);
+
+
+
+
+
+
this.key = key;
+
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// common code
protected int hash;
private HashEntry<Object, Object> next;
@SuppressWarnings("unused")
private volatile long lastModified;
- private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapLongKey> lastModifiedUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapLongKey.class,
- "lastModified");
+ private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapLongKey> lastModifiedUpdater
+ = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapLongKey.class, "lastModified");
+
/**
* All access done using ohAddrUpdater so it is used even though the compiler can not tell it is.
*/
@SuppressWarnings("unused")
- @Retained
- @Released
- private volatile long ohAddress;
+ @Retained @Released private volatile long ohAddress;
/**
- * I needed to add this because I wanted clear to call setValue which normally can only be called
- * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the
- * disk regions because they also get a rw lock in clear. Some hardware platforms do not support
- * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the
- * re and we will once again be deadlocked. I don't know if we support any of the hardware
- * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions.
+ * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced.
+ * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear.
+ * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync
+ * on the re and we will once again be deadlocked.
+ * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks
+ * on disk regions.
*/
- private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapLongKey> ohAddrUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapLongKey.class,
- "ohAddress");
-
+ private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapLongKey> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapLongKey.class, "ohAddress");
+
@Override
public Token getValueAsToken() {
return OffHeapRegionEntryHelper.getValueAsToken(this);
}
-
+
@Override
protected Object getValueField() {
return OffHeapRegionEntryHelper._getValue(this);
@@ -99,13 +139,18 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
@Override
+
@Unretained
protected void setValueField(@Unretained Object v) {
+
+
+
OffHeapRegionEntryHelper.setValue(this, v);
}
-
@Override
+
@Retained
+
public Object _getValueRetain(RegionEntryContext context, boolean decompress) {
return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context);
}
@@ -119,60 +164,60 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
public boolean setAddress(long expectedAddr, long newAddr) {
return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr);
}
-
+
@Override
+
@Released
+
public void release() {
OffHeapRegionEntryHelper.releaseEntry(this);
}
-
+
@Override
public void returnToPool() {
// Deadcoded for now; never was working
- // if (this instanceof VMThinRegionEntryLongKey) {
- // factory.returnToPool((VMThinRegionEntryLongKey)this);
- // }
+// if (this instanceof VMThinRegionEntryLongKey) {
+// factory.returnToPool((VMThinRegionEntryLongKey)this);
+// }
}
protected long getLastModifiedField() {
return lastModifiedUpdater.get(this);
}
-
protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) {
return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue);
}
-
/**
* @see HashEntry#getEntryHash()
*/
- public final int getEntryHash() {
+ public int getEntryHash() {
return this.hash;
}
-
protected void setEntryHash(int v) {
this.hash = v;
}
-
/**
* @see HashEntry#getNextEntry()
*/
- public final HashEntry<Object, Object> getNextEntry() {
+ public HashEntry<Object, Object> getNextEntry() {
return this.next;
}
-
/**
* @see HashEntry#setNextEntry
*/
- public final void setNextEntry(final HashEntry<Object, Object> n) {
+ public void setNextEntry(final HashEntry<Object, Object> n) {
this.next = n;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// disk code
+
protected void initialize(RegionEntryContext drs, Object value) {
boolean isBackup;
if (drs instanceof LocalRegion) {
- isBackup = ((LocalRegion) drs).getDiskRegion().isBackup();
+ isBackup = ((LocalRegion)drs).getDiskRegion().isBackup();
} else if (drs instanceof PlaceHolderDiskRegion) {
isBackup = true;
} else {
@@ -183,22 +228,23 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
diskInitialize(drs, value);
}
}
-
@Override
- public final synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
+ public synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), null);
+ int newSize = capacityController.entrySize( getKeyForSizing(), null);
setEntrySize(newSize);
int delta = newSize - oldSize;
return delta;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private void diskInitialize(RegionEntryContext context, Object value) {
- DiskRecoveryStore drs = (DiskRecoveryStore) context;
+ DiskRecoveryStore drs = (DiskRecoveryStore)context;
DiskStoreImpl ds = drs.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
- // get appropriate instance of DiskId implementation based on maxOplogSize
+ //get appropriate instance of DiskId implementation based on maxOplogSize
this.id = DiskId.createDiskId(maxOplogSize, true/* is persistence */, ds.needsLinkedList());
Helper.initialize(this, drs, value);
}
@@ -208,155 +254,146 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
*
* @since GemFire 5.1
*/
- protected DiskId id;// = new DiskId();
-
+ protected DiskId id;//= new DiskId();
public DiskId getDiskId() {
return this.id;
}
-
@Override
void setDiskId(RegionEntry old) {
- this.id = ((AbstractDiskRegionEntry) old).getDiskId();
- }
-
- // // inlining DiskId
- // // always have these fields
- // /**
- // * id consists of
- // * most significant
- // * 1 byte = users bits
- // * 2-8 bytes = oplog id
- // * least significant.
- // *
- // * The highest bit in the oplog id part is set to 1 if the oplog id
- // * is negative.
- // * @todo this field could be an int for an overflow only region
- // */
- // private long id;
- // /**
- // * Length of the bytes on disk.
- // * This is always set. If the value is invalid then it will be set to 0.
- // * The most significant bit is used by overflow to mark it as needing to be written.
- // */
- // protected int valueLength = 0;
- // // have intOffset or longOffset
- // // intOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile int offsetInOplog;
- // // longOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile long offsetInOplog;
- // // have overflowOnly or persistence
- // // overflowOnly
- // // no fields
- // // persistent
- // /** unique entry identifier * */
- // private long keyId;
+ this.id = ((AbstractDiskRegionEntry)old).getDiskId();
+ }
+// // inlining DiskId
+// // always have these fields
+// /**
+// * id consists of
+// * most significant
+// * 1 byte = users bits
+// * 2-8 bytes = oplog id
+// * least significant.
+// *
+// * The highest bit in the oplog id part is set to 1 if the oplog id
+// * is negative.
+// * @todo this field could be an int for an overflow only region
+// */
+// private long id;
+// /**
+// * Length of the bytes on disk.
+// * This is always set. If the value is invalid then it will be set to 0.
+// * The most significant bit is used by overflow to mark it as needing to be written.
+// */
+// protected int valueLength = 0;
+// // have intOffset or longOffset
+// // intOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile int offsetInOplog;
+// // longOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile long offsetInOplog;
+// // have overflowOnly or persistence
+// // overflowOnly
+// // no fields
+// // persistent
+// /** unique entry identifier * */
+// private long keyId;
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// lru code
@Override
public void setDelayedDiskId(LocalRegion r) {
+
DiskStoreImpl ds = r.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
this.id = DiskId.createDiskId(maxOplogSize, false /* over flow only */, ds.needsLinkedList());
- }
- public final synchronized int updateEntrySize(EnableLRU capacityController) {
- return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing
- // refcount because we are synced and
- // only getting the size
- }
+
+ }
+ public synchronized int updateEntrySize(EnableLRU capacityController) {
+ return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size
+ }
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) {
+
+ public synchronized int updateEntrySize(EnableLRU capacityController,
+ Object value) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), value);
+ int newSize = capacityController.entrySize( getKeyForSizing(), value);
setEntrySize(newSize);
int delta = newSize - oldSize;
- // if ( debug ) log( "updateEntrySize key=" + getKey()
- // + (_getValue() == Token.INVALID ? " invalid" :
- // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" :
- // (_getValue()==null ? " evicted" : " valid")))
- // + " oldSize=" + oldSize
- // + " newSize=" + this.size );
return delta;
}
-
- public final boolean testRecentlyUsed() {
+ public boolean testRecentlyUsed() {
return areAnyBitsSet(RECENTLY_USED);
}
-
@Override
- public final void setRecentlyUsed() {
+ public void setRecentlyUsed() {
setBits(RECENTLY_USED);
}
-
- public final void unsetRecentlyUsed() {
+ public void unsetRecentlyUsed() {
clearBits(~RECENTLY_USED);
}
-
- public final boolean testEvicted() {
+ public boolean testEvicted() {
return areAnyBitsSet(EVICTED);
}
-
- public final void setEvicted() {
+ public void setEvicted() {
setBits(EVICTED);
}
-
- public final void unsetEvicted() {
+ public void unsetEvicted() {
clearBits(~EVICTED);
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private LRUClockNode nextLRU;
private LRUClockNode prevLRU;
private int size;
-
- public final void setNextLRUNode(LRUClockNode next) {
+ public void setNextLRUNode( LRUClockNode next ) {
this.nextLRU = next;
}
-
- public final LRUClockNode nextLRUNode() {
+ public LRUClockNode nextLRUNode() {
return this.nextLRU;
}
-
- public final void setPrevLRUNode(LRUClockNode prev) {
+ public void setPrevLRUNode( LRUClockNode prev ) {
this.prevLRU = prev;
}
-
- public final LRUClockNode prevLRUNode() {
+ public LRUClockNode prevLRUNode() {
return this.prevLRU;
}
-
- public final int getEntrySize() {
+ public int getEntrySize() {
return this.size;
}
-
- protected final void setEntrySize(int size) {
+ protected void setEntrySize(int size) {
this.size = size;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- // @Override
- // public StringBuilder appendFieldsToString(final StringBuilder sb) {
- // StringBuilder result = super.appendFieldsToString(sb);
- // result.append("; prev=").append(this.prevLRU==null?"null":"not null");
- // result.append("; next=").append(this.nextLRU==null?"null":"not null");
- // return result;
- // }
+
@Override
public Object getKeyForSizing() {
+
+
+
+
// inline keys always report null for sizing since the size comes from the entry size
return null;
+
}
+
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// versioned code
private VersionSource memberID;
private short entryVersionLowBytes;
@@ -368,15 +405,16 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
public int getEntryVersion() {
return ((entryVersionHighByte << 16) & 0xFF0000) | (entryVersionLowBytes & 0xFFFF);
}
-
+
public long getRegionVersion() {
- return (((long) regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
+ return (((long)regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
}
-
+
+
public long getVersionTimeStamp() {
return getLastModified();
}
-
+
public void setVersionTimeStamp(long time) {
setLastModified(time);
}
@@ -384,17 +422,17 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
public VersionSource getMemberID() {
return this.memberID;
}
-
public int getDistributedSystemId() {
return this.distributedSystemId;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public void setVersions(VersionTag tag) {
this.memberID = tag.getMemberID();
int eVersion = tag.getEntryVersion();
- this.entryVersionLowBytes = (short) (eVersion & 0xffff);
- this.entryVersionHighByte = (byte) ((eVersion & 0xff0000) >> 16);
+ this.entryVersionLowBytes = (short)(eVersion & 0xffff);
+ this.entryVersionHighByte = (byte)((eVersion & 0xff0000) >> 16);
this.regionVersionHighBytes = tag.getRegionVersionHighBytes();
this.regionVersionLowBytes = tag.getRegionVersionLowBytes();
if (!(tag.isGatewayTag()) && this.distributedSystemId == tag.getDistributedSystemId()) {
@@ -406,11 +444,11 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
} else {
setVersionTimeStamp(tag.getVersionTimeStamp());
}
- this.distributedSystemId = (byte) (tag.getDistributedSystemId() & 0xff);
+ this.distributedSystemId = (byte)(tag.getDistributedSystemId() & 0xff);
}
public void setMemberID(VersionSource memberID) {
- this.memberID = memberID;
+ this.memberID = memberID;
}
@Override
@@ -419,6 +457,7 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public VersionTag asVersionTag() {
VersionTag tag = VersionTag.create(memberID);
tag.setEntryVersion(getEntryVersion());
@@ -428,9 +467,9 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
return tag;
}
- public void processVersionTag(LocalRegion r, VersionTag tag, boolean isTombstoneFromGII,
- boolean hasDelta, VersionSource thisVM, InternalDistributedMember sender,
- boolean checkForConflicts) {
+ public void processVersionTag(LocalRegion r, VersionTag tag,
+ boolean isTombstoneFromGII, boolean hasDelta,
+ VersionSource thisVM, InternalDistributedMember sender, boolean checkForConflicts) {
basicProcessVersionTag(r, tag, isTombstoneFromGII, hasDelta, thisVM, sender, checkForConflicts);
}
@@ -445,21 +484,22 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
public short getRegionVersionHighBytes() {
return this.regionVersionHighBytes;
}
-
+
/** get rvv internal low bytes. Used by region entries for transferring to storage */
public int getRegionVersionLowBytes() {
return this.regionVersionLowBytes;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// key code
- private final long key;
+ private final long key;
@Override
- public final Object getKey() {
+ public Object getKey() {
return this.key;
}
-
@Override
public boolean isKeyEqual(Object k) {
if (k instanceof Long) {
@@ -467,5 +507,8 @@ public class VersionedThinDiskLRURegionEntryOffHeapLongKey
}
return false;
}
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
}
+
http://git-wip-us.apache.org/repos/asf/geode/blob/30f455bb/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java
index 4be97cb..c68cd02 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapObjectKey.java
@@ -15,83 +15,119 @@
package org.apache.geode.internal.cache;
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
+
+
+
+
+
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
+
import org.apache.geode.cache.EntryEvent;
+
+
import org.apache.geode.internal.cache.lru.EnableLRU;
+
+
import org.apache.geode.internal.cache.persistence.DiskRecoveryStore;
+
+
+
+
+
import org.apache.geode.internal.cache.lru.LRUClockNode;
import org.apache.geode.internal.cache.lru.NewLRUClockHand;
+
+
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.versions.VersionSource;
import org.apache.geode.internal.cache.versions.VersionStamp;
import org.apache.geode.internal.cache.versions.VersionTag;
+
+
import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper;
import org.apache.geode.internal.offheap.annotations.Released;
import org.apache.geode.internal.offheap.annotations.Retained;
import org.apache.geode.internal.offheap.annotations.Unretained;
+
import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry;
// macros whose definition changes this class:
-// disk: DISK
-// lru: LRU
+// disk: 1
+// lru: 1
// stats: STATS
-// versioned: VERSIONED
-// offheap: OFFHEAP
+// versioned: 1
+// offheap: 1
// One of the following key macros must be defined:
-// key object: KEY_OBJECT
+// key object: 1
// key int: KEY_INT
// key long: KEY_LONG
// key uuid: KEY_UUID
// key string1: KEY_STRING1
// key string2: KEY_STRING2
+
/**
* Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run
* ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory).
*/
-public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
- extends VersionedThinDiskLRURegionEntryOffHeap {
- public VersionedThinDiskLRURegionEntryOffHeapObjectKey(RegionEntryContext context, Object key,
- @Retained Object value) {
- super(context, (value instanceof RecoveredEntry ? null : value));
+public class VersionedThinDiskLRURegionEntryOffHeapObjectKey extends VersionedThinDiskLRURegionEntryOffHeap {
+ public VersionedThinDiskLRURegionEntryOffHeapObjectKey (RegionEntryContext context, Object key,
+
+ @Retained
+
+ Object value
+
+
+
+ ) {
+ super(context,
+
+ (value instanceof RecoveredEntry ? null : value)
+
+
+
+ );
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
initialize(context, value);
+
+
this.key = key;
+
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// common code
protected int hash;
private HashEntry<Object, Object> next;
@SuppressWarnings("unused")
private volatile long lastModified;
- private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapObjectKey> lastModifiedUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapObjectKey.class,
- "lastModified");
+ private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapObjectKey> lastModifiedUpdater
+ = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapObjectKey.class, "lastModified");
+
/**
* All access done using ohAddrUpdater so it is used even though the compiler can not tell it is.
*/
@SuppressWarnings("unused")
- @Retained
- @Released
- private volatile long ohAddress;
+ @Retained @Released private volatile long ohAddress;
/**
- * I needed to add this because I wanted clear to call setValue which normally can only be called
- * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the
- * disk regions because they also get a rw lock in clear. Some hardware platforms do not support
- * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the
- * re and we will once again be deadlocked. I don't know if we support any of the hardware
- * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions.
+ * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced.
+ * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear.
+ * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync
+ * on the re and we will once again be deadlocked.
+ * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks
+ * on disk regions.
*/
- private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapObjectKey> ohAddrUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapObjectKey.class,
- "ohAddress");
-
+ private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapObjectKey> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapObjectKey.class, "ohAddress");
+
@Override
public Token getValueAsToken() {
return OffHeapRegionEntryHelper.getValueAsToken(this);
}
-
+
@Override
protected Object getValueField() {
return OffHeapRegionEntryHelper._getValue(this);
@@ -99,13 +135,18 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
@Override
+
@Unretained
protected void setValueField(@Unretained Object v) {
+
+
+
OffHeapRegionEntryHelper.setValue(this, v);
}
-
@Override
+
@Retained
+
public Object _getValueRetain(RegionEntryContext context, boolean decompress) {
return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context);
}
@@ -119,60 +160,60 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
public boolean setAddress(long expectedAddr, long newAddr) {
return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr);
}
-
+
@Override
+
@Released
+
public void release() {
OffHeapRegionEntryHelper.releaseEntry(this);
}
-
+
@Override
public void returnToPool() {
// Deadcoded for now; never was working
- // if (this instanceof VMThinRegionEntryLongKey) {
- // factory.returnToPool((VMThinRegionEntryLongKey)this);
- // }
+// if (this instanceof VMThinRegionEntryLongKey) {
+// factory.returnToPool((VMThinRegionEntryLongKey)this);
+// }
}
protected long getLastModifiedField() {
return lastModifiedUpdater.get(this);
}
-
protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) {
return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue);
}
-
/**
* @see HashEntry#getEntryHash()
*/
- public final int getEntryHash() {
+ public int getEntryHash() {
return this.hash;
}
-
protected void setEntryHash(int v) {
this.hash = v;
}
-
/**
* @see HashEntry#getNextEntry()
*/
- public final HashEntry<Object, Object> getNextEntry() {
+ public HashEntry<Object, Object> getNextEntry() {
return this.next;
}
-
/**
* @see HashEntry#setNextEntry
*/
- public final void setNextEntry(final HashEntry<Object, Object> n) {
+ public void setNextEntry(final HashEntry<Object, Object> n) {
this.next = n;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// disk code
+
protected void initialize(RegionEntryContext drs, Object value) {
boolean isBackup;
if (drs instanceof LocalRegion) {
- isBackup = ((LocalRegion) drs).getDiskRegion().isBackup();
+ isBackup = ((LocalRegion)drs).getDiskRegion().isBackup();
} else if (drs instanceof PlaceHolderDiskRegion) {
isBackup = true;
} else {
@@ -183,22 +224,23 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
diskInitialize(drs, value);
}
}
-
@Override
- public final synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
+ public synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), null);
+ int newSize = capacityController.entrySize( getKeyForSizing(), null);
setEntrySize(newSize);
int delta = newSize - oldSize;
return delta;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private void diskInitialize(RegionEntryContext context, Object value) {
- DiskRecoveryStore drs = (DiskRecoveryStore) context;
+ DiskRecoveryStore drs = (DiskRecoveryStore)context;
DiskStoreImpl ds = drs.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
- // get appropriate instance of DiskId implementation based on maxOplogSize
+ //get appropriate instance of DiskId implementation based on maxOplogSize
this.id = DiskId.createDiskId(maxOplogSize, true/* is persistence */, ds.needsLinkedList());
Helper.initialize(this, drs, value);
}
@@ -208,155 +250,146 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
*
* @since GemFire 5.1
*/
- protected DiskId id;// = new DiskId();
-
+ protected DiskId id;//= new DiskId();
public DiskId getDiskId() {
return this.id;
}
-
@Override
void setDiskId(RegionEntry old) {
- this.id = ((AbstractDiskRegionEntry) old).getDiskId();
- }
-
- // // inlining DiskId
- // // always have these fields
- // /**
- // * id consists of
- // * most significant
- // * 1 byte = users bits
- // * 2-8 bytes = oplog id
- // * least significant.
- // *
- // * The highest bit in the oplog id part is set to 1 if the oplog id
- // * is negative.
- // * @todo this field could be an int for an overflow only region
- // */
- // private long id;
- // /**
- // * Length of the bytes on disk.
- // * This is always set. If the value is invalid then it will be set to 0.
- // * The most significant bit is used by overflow to mark it as needing to be written.
- // */
- // protected int valueLength = 0;
- // // have intOffset or longOffset
- // // intOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile int offsetInOplog;
- // // longOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile long offsetInOplog;
- // // have overflowOnly or persistence
- // // overflowOnly
- // // no fields
- // // persistent
- // /** unique entry identifier * */
- // private long keyId;
+ this.id = ((AbstractDiskRegionEntry)old).getDiskId();
+ }
+// // inlining DiskId
+// // always have these fields
+// /**
+// * id consists of
+// * most significant
+// * 1 byte = users bits
+// * 2-8 bytes = oplog id
+// * least significant.
+// *
+// * The highest bit in the oplog id part is set to 1 if the oplog id
+// * is negative.
+// * @todo this field could be an int for an overflow only region
+// */
+// private long id;
+// /**
+// * Length of the bytes on disk.
+// * This is always set. If the value is invalid then it will be set to 0.
+// * The most significant bit is used by overflow to mark it as needing to be written.
+// */
+// protected int valueLength = 0;
+// // have intOffset or longOffset
+// // intOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile int offsetInOplog;
+// // longOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile long offsetInOplog;
+// // have overflowOnly or persistence
+// // overflowOnly
+// // no fields
+// // persistent
+// /** unique entry identifier * */
+// private long keyId;
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// lru code
@Override
public void setDelayedDiskId(LocalRegion r) {
+
DiskStoreImpl ds = r.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
this.id = DiskId.createDiskId(maxOplogSize, false /* over flow only */, ds.needsLinkedList());
- }
- public final synchronized int updateEntrySize(EnableLRU capacityController) {
- return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing
- // refcount because we are synced and
- // only getting the size
- }
+
+ }
+ public synchronized int updateEntrySize(EnableLRU capacityController) {
+ return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size
+ }
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) {
+
+ public synchronized int updateEntrySize(EnableLRU capacityController,
+ Object value) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), value);
+ int newSize = capacityController.entrySize( getKeyForSizing(), value);
setEntrySize(newSize);
int delta = newSize - oldSize;
- // if ( debug ) log( "updateEntrySize key=" + getKey()
- // + (_getValue() == Token.INVALID ? " invalid" :
- // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" :
- // (_getValue()==null ? " evicted" : " valid")))
- // + " oldSize=" + oldSize
- // + " newSize=" + this.size );
return delta;
}
-
- public final boolean testRecentlyUsed() {
+ public boolean testRecentlyUsed() {
return areAnyBitsSet(RECENTLY_USED);
}
-
@Override
- public final void setRecentlyUsed() {
+ public void setRecentlyUsed() {
setBits(RECENTLY_USED);
}
-
- public final void unsetRecentlyUsed() {
+ public void unsetRecentlyUsed() {
clearBits(~RECENTLY_USED);
}
-
- public final boolean testEvicted() {
+ public boolean testEvicted() {
return areAnyBitsSet(EVICTED);
}
-
- public final void setEvicted() {
+ public void setEvicted() {
setBits(EVICTED);
}
-
- public final void unsetEvicted() {
+ public void unsetEvicted() {
clearBits(~EVICTED);
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private LRUClockNode nextLRU;
private LRUClockNode prevLRU;
private int size;
-
- public final void setNextLRUNode(LRUClockNode next) {
+ public void setNextLRUNode( LRUClockNode next ) {
this.nextLRU = next;
}
-
- public final LRUClockNode nextLRUNode() {
+ public LRUClockNode nextLRUNode() {
return this.nextLRU;
}
-
- public final void setPrevLRUNode(LRUClockNode prev) {
+ public void setPrevLRUNode( LRUClockNode prev ) {
this.prevLRU = prev;
}
-
- public final LRUClockNode prevLRUNode() {
+ public LRUClockNode prevLRUNode() {
return this.prevLRU;
}
-
- public final int getEntrySize() {
+ public int getEntrySize() {
return this.size;
}
-
- protected final void setEntrySize(int size) {
+ protected void setEntrySize(int size) {
this.size = size;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- // @Override
- // public StringBuilder appendFieldsToString(final StringBuilder sb) {
- // StringBuilder result = super.appendFieldsToString(sb);
- // result.append("; prev=").append(this.prevLRU==null?"null":"not null");
- // result.append("; next=").append(this.nextLRU==null?"null":"not null");
- // return result;
- // }
+
@Override
public Object getKeyForSizing() {
+
// default implementation.
return getKey();
+
+
+
+
}
+
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// versioned code
private VersionSource memberID;
private short entryVersionLowBytes;
@@ -368,15 +401,16 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
public int getEntryVersion() {
return ((entryVersionHighByte << 16) & 0xFF0000) | (entryVersionLowBytes & 0xFFFF);
}
-
+
public long getRegionVersion() {
- return (((long) regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
+ return (((long)regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
}
-
+
+
public long getVersionTimeStamp() {
return getLastModified();
}
-
+
public void setVersionTimeStamp(long time) {
setLastModified(time);
}
@@ -384,17 +418,17 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
public VersionSource getMemberID() {
return this.memberID;
}
-
public int getDistributedSystemId() {
return this.distributedSystemId;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public void setVersions(VersionTag tag) {
this.memberID = tag.getMemberID();
int eVersion = tag.getEntryVersion();
- this.entryVersionLowBytes = (short) (eVersion & 0xffff);
- this.entryVersionHighByte = (byte) ((eVersion & 0xff0000) >> 16);
+ this.entryVersionLowBytes = (short)(eVersion & 0xffff);
+ this.entryVersionHighByte = (byte)((eVersion & 0xff0000) >> 16);
this.regionVersionHighBytes = tag.getRegionVersionHighBytes();
this.regionVersionLowBytes = tag.getRegionVersionLowBytes();
if (!(tag.isGatewayTag()) && this.distributedSystemId == tag.getDistributedSystemId()) {
@@ -406,11 +440,11 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
} else {
setVersionTimeStamp(tag.getVersionTimeStamp());
}
- this.distributedSystemId = (byte) (tag.getDistributedSystemId() & 0xff);
+ this.distributedSystemId = (byte)(tag.getDistributedSystemId() & 0xff);
}
public void setMemberID(VersionSource memberID) {
- this.memberID = memberID;
+ this.memberID = memberID;
}
@Override
@@ -419,6 +453,7 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public VersionTag asVersionTag() {
VersionTag tag = VersionTag.create(memberID);
tag.setEntryVersion(getEntryVersion());
@@ -428,9 +463,9 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
return tag;
}
- public void processVersionTag(LocalRegion r, VersionTag tag, boolean isTombstoneFromGII,
- boolean hasDelta, VersionSource thisVM, InternalDistributedMember sender,
- boolean checkForConflicts) {
+ public void processVersionTag(LocalRegion r, VersionTag tag,
+ boolean isTombstoneFromGII, boolean hasDelta,
+ VersionSource thisVM, InternalDistributedMember sender, boolean checkForConflicts) {
basicProcessVersionTag(r, tag, isTombstoneFromGII, hasDelta, thisVM, sender, checkForConflicts);
}
@@ -445,19 +480,24 @@ public class VersionedThinDiskLRURegionEntryOffHeapObjectKey
public short getRegionVersionHighBytes() {
return this.regionVersionHighBytes;
}
-
+
/** get rvv internal low bytes. Used by region entries for transferring to storage */
public int getRegionVersionLowBytes() {
return this.regionVersionLowBytes;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// key code
- private final Object key;
+ private final Object key;
@Override
- public final Object getKey() {
+ public Object getKey() {
return this.key;
}
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
}
+
http://git-wip-us.apache.org/repos/asf/geode/blob/30f455bb/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java
index b4e861d..6a312de 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedThinDiskLRURegionEntryOffHeapStringKey1.java
@@ -15,100 +15,134 @@
package org.apache.geode.internal.cache;
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
+
+
+
+
+
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
+
import org.apache.geode.cache.EntryEvent;
+
+
import org.apache.geode.internal.cache.lru.EnableLRU;
+
+
import org.apache.geode.internal.cache.persistence.DiskRecoveryStore;
+
+
+
+
+
import org.apache.geode.internal.cache.lru.LRUClockNode;
import org.apache.geode.internal.cache.lru.NewLRUClockHand;
+
+
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.cache.versions.VersionSource;
import org.apache.geode.internal.cache.versions.VersionStamp;
import org.apache.geode.internal.cache.versions.VersionTag;
+
+
import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper;
import org.apache.geode.internal.offheap.annotations.Released;
import org.apache.geode.internal.offheap.annotations.Retained;
import org.apache.geode.internal.offheap.annotations.Unretained;
+
import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry;
// macros whose definition changes this class:
-// disk: DISK
-// lru: LRU
+// disk: 1
+// lru: 1
// stats: STATS
-// versioned: VERSIONED
-// offheap: OFFHEAP
+// versioned: 1
+// offheap: 1
// One of the following key macros must be defined:
// key object: KEY_OBJECT
// key int: KEY_INT
// key long: KEY_LONG
// key uuid: KEY_UUID
-// key string1: KEY_STRING1
+// key string1: 1
// key string2: KEY_STRING2
+
/**
* Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run
* ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory).
*/
-public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
- extends VersionedThinDiskLRURegionEntryOffHeap {
- public VersionedThinDiskLRURegionEntryOffHeapStringKey1(RegionEntryContext context, String key,
- @Retained Object value, boolean byteEncode) {
- super(context, (value instanceof RecoveredEntry ? null : value));
+public class VersionedThinDiskLRURegionEntryOffHeapStringKey1 extends VersionedThinDiskLRURegionEntryOffHeap {
+ public VersionedThinDiskLRURegionEntryOffHeapStringKey1 (RegionEntryContext context, String key,
+
+ @Retained
+
+ Object value
+
+ , boolean byteEncode
+
+ ) {
+ super(context,
+
+ (value instanceof RecoveredEntry ? null : value)
+
+
+
+ );
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
initialize(context, value);
+
// caller has already confirmed that key.length <= MAX_INLINE_STRING_KEY
long tmpBits1 = 0L;
if (byteEncode) {
- for (int i = key.length() - 1; i >= 0; i--) {
- // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to
- // keep findbugs happy.
- tmpBits1 |= (byte) key.charAt(i) & 0xff;
+ for (int i=key.length()-1; i >= 0; i--) {
+ // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to keep findbugs happy.
+ tmpBits1 |= (byte)key.charAt(i) & 0xff;
tmpBits1 <<= 8;
}
- tmpBits1 |= 1 << 6;
+ tmpBits1 |= 1<<6;
} else {
- for (int i = key.length() - 1; i >= 0; i--) {
+ for (int i=key.length()-1; i >= 0; i--) {
tmpBits1 |= key.charAt(i);
tmpBits1 <<= 16;
}
}
tmpBits1 |= key.length();
this.bits1 = tmpBits1;
+
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// common code
protected int hash;
private HashEntry<Object, Object> next;
@SuppressWarnings("unused")
private volatile long lastModified;
- private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapStringKey1> lastModifiedUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapStringKey1.class,
- "lastModified");
+ private static final AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapStringKey1> lastModifiedUpdater
+ = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapStringKey1.class, "lastModified");
+
/**
* All access done using ohAddrUpdater so it is used even though the compiler can not tell it is.
*/
@SuppressWarnings("unused")
- @Retained
- @Released
- private volatile long ohAddress;
+ @Retained @Released private volatile long ohAddress;
/**
- * I needed to add this because I wanted clear to call setValue which normally can only be called
- * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the
- * disk regions because they also get a rw lock in clear. Some hardware platforms do not support
- * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the
- * re and we will once again be deadlocked. I don't know if we support any of the hardware
- * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions.
+ * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced.
+ * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear.
+ * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync
+ * on the re and we will once again be deadlocked.
+ * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks
+ * on disk regions.
*/
- private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapStringKey1> ohAddrUpdater =
- AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapStringKey1.class,
- "ohAddress");
-
+ private final static AtomicLongFieldUpdater<VersionedThinDiskLRURegionEntryOffHeapStringKey1> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VersionedThinDiskLRURegionEntryOffHeapStringKey1.class, "ohAddress");
+
@Override
public Token getValueAsToken() {
return OffHeapRegionEntryHelper.getValueAsToken(this);
}
-
+
@Override
protected Object getValueField() {
return OffHeapRegionEntryHelper._getValue(this);
@@ -116,13 +150,18 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
@Override
+
@Unretained
protected void setValueField(@Unretained Object v) {
+
+
+
OffHeapRegionEntryHelper.setValue(this, v);
}
-
@Override
+
@Retained
+
public Object _getValueRetain(RegionEntryContext context, boolean decompress) {
return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context);
}
@@ -136,60 +175,60 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
public boolean setAddress(long expectedAddr, long newAddr) {
return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr);
}
-
+
@Override
+
@Released
+
public void release() {
OffHeapRegionEntryHelper.releaseEntry(this);
}
-
+
@Override
public void returnToPool() {
// Deadcoded for now; never was working
- // if (this instanceof VMThinRegionEntryLongKey) {
- // factory.returnToPool((VMThinRegionEntryLongKey)this);
- // }
+// if (this instanceof VMThinRegionEntryLongKey) {
+// factory.returnToPool((VMThinRegionEntryLongKey)this);
+// }
}
protected long getLastModifiedField() {
return lastModifiedUpdater.get(this);
}
-
protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) {
return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue);
}
-
/**
* @see HashEntry#getEntryHash()
*/
- public final int getEntryHash() {
+ public int getEntryHash() {
return this.hash;
}
-
protected void setEntryHash(int v) {
this.hash = v;
}
-
/**
* @see HashEntry#getNextEntry()
*/
- public final HashEntry<Object, Object> getNextEntry() {
+ public HashEntry<Object, Object> getNextEntry() {
return this.next;
}
-
/**
* @see HashEntry#setNextEntry
*/
- public final void setNextEntry(final HashEntry<Object, Object> n) {
+ public void setNextEntry(final HashEntry<Object, Object> n) {
this.next = n;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// disk code
+
protected void initialize(RegionEntryContext drs, Object value) {
boolean isBackup;
if (drs instanceof LocalRegion) {
- isBackup = ((LocalRegion) drs).getDiskRegion().isBackup();
+ isBackup = ((LocalRegion)drs).getDiskRegion().isBackup();
} else if (drs instanceof PlaceHolderDiskRegion) {
isBackup = true;
} else {
@@ -200,22 +239,23 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
diskInitialize(drs, value);
}
}
-
@Override
- public final synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
+ public synchronized int updateAsyncEntrySize(EnableLRU capacityController) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), null);
+ int newSize = capacityController.entrySize( getKeyForSizing(), null);
setEntrySize(newSize);
int delta = newSize - oldSize;
return delta;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private void diskInitialize(RegionEntryContext context, Object value) {
- DiskRecoveryStore drs = (DiskRecoveryStore) context;
+ DiskRecoveryStore drs = (DiskRecoveryStore)context;
DiskStoreImpl ds = drs.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
- // get appropriate instance of DiskId implementation based on maxOplogSize
+ //get appropriate instance of DiskId implementation based on maxOplogSize
this.id = DiskId.createDiskId(maxOplogSize, true/* is persistence */, ds.needsLinkedList());
Helper.initialize(this, drs, value);
}
@@ -225,155 +265,146 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
*
* @since GemFire 5.1
*/
- protected DiskId id;// = new DiskId();
-
+ protected DiskId id;//= new DiskId();
public DiskId getDiskId() {
return this.id;
}
-
@Override
void setDiskId(RegionEntry old) {
- this.id = ((AbstractDiskRegionEntry) old).getDiskId();
- }
-
- // // inlining DiskId
- // // always have these fields
- // /**
- // * id consists of
- // * most significant
- // * 1 byte = users bits
- // * 2-8 bytes = oplog id
- // * least significant.
- // *
- // * The highest bit in the oplog id part is set to 1 if the oplog id
- // * is negative.
- // * @todo this field could be an int for an overflow only region
- // */
- // private long id;
- // /**
- // * Length of the bytes on disk.
- // * This is always set. If the value is invalid then it will be set to 0.
- // * The most significant bit is used by overflow to mark it as needing to be written.
- // */
- // protected int valueLength = 0;
- // // have intOffset or longOffset
- // // intOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile int offsetInOplog;
- // // longOffset
- // /**
- // * The position in the oplog (the oplog offset) where this entry's value is
- // * stored
- // */
- // private volatile long offsetInOplog;
- // // have overflowOnly or persistence
- // // overflowOnly
- // // no fields
- // // persistent
- // /** unique entry identifier * */
- // private long keyId;
+ this.id = ((AbstractDiskRegionEntry)old).getDiskId();
+ }
+// // inlining DiskId
+// // always have these fields
+// /**
+// * id consists of
+// * most significant
+// * 1 byte = users bits
+// * 2-8 bytes = oplog id
+// * least significant.
+// *
+// * The highest bit in the oplog id part is set to 1 if the oplog id
+// * is negative.
+// * @todo this field could be an int for an overflow only region
+// */
+// private long id;
+// /**
+// * Length of the bytes on disk.
+// * This is always set. If the value is invalid then it will be set to 0.
+// * The most significant bit is used by overflow to mark it as needing to be written.
+// */
+// protected int valueLength = 0;
+// // have intOffset or longOffset
+// // intOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile int offsetInOplog;
+// // longOffset
+// /**
+// * The position in the oplog (the oplog offset) where this entry's value is
+// * stored
+// */
+// private volatile long offsetInOplog;
+// // have overflowOnly or persistence
+// // overflowOnly
+// // no fields
+// // persistent
+// /** unique entry identifier * */
+// private long keyId;
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// lru code
@Override
public void setDelayedDiskId(LocalRegion r) {
+
DiskStoreImpl ds = r.getDiskStore();
long maxOplogSize = ds.getMaxOplogSize();
this.id = DiskId.createDiskId(maxOplogSize, false /* over flow only */, ds.needsLinkedList());
- }
- public final synchronized int updateEntrySize(EnableLRU capacityController) {
- return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing
- // refcount because we are synced and
- // only getting the size
- }
+
+ }
+ public synchronized int updateEntrySize(EnableLRU capacityController) {
+ return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size
+ }
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) {
+
+ public synchronized int updateEntrySize(EnableLRU capacityController,
+ Object value) {
int oldSize = getEntrySize();
- int newSize = capacityController.entrySize(getKeyForSizing(), value);
+ int newSize = capacityController.entrySize( getKeyForSizing(), value);
setEntrySize(newSize);
int delta = newSize - oldSize;
- // if ( debug ) log( "updateEntrySize key=" + getKey()
- // + (_getValue() == Token.INVALID ? " invalid" :
- // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" :
- // (_getValue()==null ? " evicted" : " valid")))
- // + " oldSize=" + oldSize
- // + " newSize=" + this.size );
return delta;
}
-
- public final boolean testRecentlyUsed() {
+ public boolean testRecentlyUsed() {
return areAnyBitsSet(RECENTLY_USED);
}
-
@Override
- public final void setRecentlyUsed() {
+ public void setRecentlyUsed() {
setBits(RECENTLY_USED);
}
-
- public final void unsetRecentlyUsed() {
+ public void unsetRecentlyUsed() {
clearBits(~RECENTLY_USED);
}
-
- public final boolean testEvicted() {
+ public boolean testEvicted() {
return areAnyBitsSet(EVICTED);
}
-
- public final void setEvicted() {
+ public void setEvicted() {
setBits(EVICTED);
}
-
- public final void unsetEvicted() {
+ public void unsetEvicted() {
clearBits(~EVICTED);
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
private LRUClockNode nextLRU;
private LRUClockNode prevLRU;
private int size;
-
- public final void setNextLRUNode(LRUClockNode next) {
+ public void setNextLRUNode( LRUClockNode next ) {
this.nextLRU = next;
}
-
- public final LRUClockNode nextLRUNode() {
+ public LRUClockNode nextLRUNode() {
return this.nextLRU;
}
-
- public final void setPrevLRUNode(LRUClockNode prev) {
+ public void setPrevLRUNode( LRUClockNode prev ) {
this.prevLRU = prev;
}
-
- public final LRUClockNode prevLRUNode() {
+ public LRUClockNode prevLRUNode() {
return this.prevLRU;
}
-
- public final int getEntrySize() {
+ public int getEntrySize() {
return this.size;
}
-
- protected final void setEntrySize(int size) {
+ protected void setEntrySize(int size) {
this.size = size;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
- // @Override
- // public StringBuilder appendFieldsToString(final StringBuilder sb) {
- // StringBuilder result = super.appendFieldsToString(sb);
- // result.append("; prev=").append(this.prevLRU==null?"null":"not null");
- // result.append("; next=").append(this.nextLRU==null?"null":"not null");
- // return result;
- // }
+
@Override
public Object getKeyForSizing() {
+
+
+
+
// inline keys always report null for sizing since the size comes from the entry size
return null;
+
}
+
+
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// versioned code
private VersionSource memberID;
private short entryVersionLowBytes;
@@ -385,15 +416,16 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
public int getEntryVersion() {
return ((entryVersionHighByte << 16) & 0xFF0000) | (entryVersionLowBytes & 0xFFFF);
}
-
+
public long getRegionVersion() {
- return (((long) regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
+ return (((long)regionVersionHighBytes) << 32) | (regionVersionLowBytes & 0x00000000FFFFFFFFL);
}
-
+
+
public long getVersionTimeStamp() {
return getLastModified();
}
-
+
public void setVersionTimeStamp(long time) {
setLastModified(time);
}
@@ -401,17 +433,17 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
public VersionSource getMemberID() {
return this.memberID;
}
-
public int getDistributedSystemId() {
return this.distributedSystemId;
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public void setVersions(VersionTag tag) {
this.memberID = tag.getMemberID();
int eVersion = tag.getEntryVersion();
- this.entryVersionLowBytes = (short) (eVersion & 0xffff);
- this.entryVersionHighByte = (byte) ((eVersion & 0xff0000) >> 16);
+ this.entryVersionLowBytes = (short)(eVersion & 0xffff);
+ this.entryVersionHighByte = (byte)((eVersion & 0xff0000) >> 16);
this.regionVersionHighBytes = tag.getRegionVersionHighBytes();
this.regionVersionLowBytes = tag.getRegionVersionLowBytes();
if (!(tag.isGatewayTag()) && this.distributedSystemId == tag.getDistributedSystemId()) {
@@ -423,11 +455,11 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
} else {
setVersionTimeStamp(tag.getVersionTimeStamp());
}
- this.distributedSystemId = (byte) (tag.getDistributedSystemId() & 0xff);
+ this.distributedSystemId = (byte)(tag.getDistributedSystemId() & 0xff);
}
public void setMemberID(VersionSource memberID) {
- this.memberID = memberID;
+ this.memberID = memberID;
}
@Override
@@ -436,6 +468,7 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
public VersionTag asVersionTag() {
VersionTag tag = VersionTag.create(memberID);
tag.setEntryVersion(getEntryVersion());
@@ -445,9 +478,9 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
return tag;
}
- public void processVersionTag(LocalRegion r, VersionTag tag, boolean isTombstoneFromGII,
- boolean hasDelta, VersionSource thisVM, InternalDistributedMember sender,
- boolean checkForConflicts) {
+ public void processVersionTag(LocalRegion r, VersionTag tag,
+ boolean isTombstoneFromGII, boolean hasDelta,
+ VersionSource thisVM, InternalDistributedMember sender, boolean checkForConflicts) {
basicProcessVersionTag(r, tag, isTombstoneFromGII, hasDelta, thisVM, sender, checkForConflicts);
}
@@ -462,38 +495,38 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
public short getRegionVersionHighBytes() {
return this.regionVersionHighBytes;
}
-
+
/** get rvv internal low bytes. Used by region entries for transferring to storage */
public int getRegionVersionLowBytes() {
return this.regionVersionLowBytes;
}
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
// key code
- private final long bits1;
+ private final long bits1;
private int getKeyLength() {
return (int) (this.bits1 & 0x003fL);
}
-
private int getEncoding() {
// 0 means encoded as char
// 1 means encoded as bytes that are all <= 0x7f;
return (int) (this.bits1 >> 6) & 0x03;
}
-
@Override
- public final Object getKey() {
+ public Object getKey() {
int keylen = getKeyLength();
char[] chars = new char[keylen];
long tmpBits1 = this.bits1;
if (getEncoding() == 1) {
- for (int i = 0; i < keylen; i++) {
+ for (int i=0; i < keylen; i++) {
tmpBits1 >>= 8;
- chars[i] = (char) (tmpBits1 & 0x00ff);
+ chars[i] = (char) (tmpBits1 & 0x00ff);
}
} else {
- for (int i = 0; i < keylen; i++) {
+ for (int i=0; i < keylen; i++) {
tmpBits1 >>= 16;
chars[i] = (char) (tmpBits1 & 0x00FFff);
}
@@ -502,15 +535,16 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
}
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
+
@Override
public boolean isKeyEqual(Object k) {
if (k instanceof String) {
- String str = (String) k;
+ String str = (String)k;
int keylen = getKeyLength();
if (str.length() == keylen) {
long tmpBits1 = this.bits1;
if (getEncoding() == 1) {
- for (int i = 0; i < keylen; i++) {
+ for (int i=0; i < keylen; i++) {
tmpBits1 >>= 8;
char c = (char) (tmpBits1 & 0x00ff);
if (str.charAt(i) != c) {
@@ -518,7 +552,7 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
}
}
} else {
- for (int i = 0; i < keylen; i++) {
+ for (int i=0; i < keylen; i++) {
tmpBits1 >>= 16;
char c = (char) (tmpBits1 & 0x00FFff);
if (str.charAt(i) != c) {
@@ -531,5 +565,8 @@ public class VersionedThinDiskLRURegionEntryOffHeapStringKey1
}
return false;
}
+
+
// DO NOT modify this class. It was generated from LeafRegionEntry.cpp
}
+