http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java index a57570b..4ef3153 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.java @@ -15,85 +15,126 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + import java.util.UUID; + + 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.InternalStatisticsDisabledException; + + 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 -// stats: STATS -// versioned: VERSIONED -// offheap: OFFHEAP +// disk: 1 +// lru: 1 +// stats: 1 +// 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 uuid: 1 // 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 VersionedStatsDiskLRURegionEntryOffHeapUUIDKey - extends VersionedStatsDiskLRURegionEntryOffHeap { - public VersionedStatsDiskLRURegionEntryOffHeapUUIDKey(RegionEntryContext context, UUID key, - @Retained Object value) { - super(context, (value instanceof RecoveredEntry ? null : value)); +public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey extends VersionedStatsDiskLRURegionEntryOffHeap { + public VersionedStatsDiskLRURegionEntryOffHeapUUIDKey (RegionEntryContext context, UUID 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.keyMostSigBits = key.getMostSignificantBits(); this.keyLeastSigBits = key.getLeastSignificantBits(); + } // 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<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, - "lastModified"); + private static final AtomicLongFieldUpdater<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.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<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> ohAddrUpdater = - AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, - "ohAddress"); - + private final static AtomicLongFieldUpdater<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, "ohAddress"); + @Override public Token getValueAsToken() { return OffHeapRegionEntryHelper.getValueAsToken(this); } - + @Override protected Object getValueField() { return OffHeapRegionEntryHelper._getValue(this); @@ -101,13 +142,18 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey // 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); } @@ -121,47 +167,44 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey 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() { + 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() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -169,12 +212,15 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey 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 { @@ -185,22 +231,23 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey diskInitialize(drs, value); } } - @Override public final 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); } @@ -210,158 +257,162 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey * * @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 + 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 final 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 ); + // 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() { return areAnyBitsSet(RECENTLY_USED); } - @Override public final void setRecentlyUsed() { setBits(RECENTLY_USED); } - public final void unsetRecentlyUsed() { clearBits(~RECENTLY_USED); } - public final boolean testEvicted() { return areAnyBitsSet(EVICTED); } - public final void setEvicted() { setBits(EVICTED); } - public final 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 final void setNextLRUNode( LRUClockNode next ) { this.nextLRU = next; } - public final LRUClockNode nextLRUNode() { return this.nextLRU; } - - public final void setPrevLRUNode(LRUClockNode prev) { + public final void setPrevLRUNode( LRUClockNode prev ) { this.prevLRU = prev; } - public final LRUClockNode prevLRUNode() { return this.prevLRU; } - public final int getEntrySize() { return this.size; } - protected final 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 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 + // stats code @Override - public final void updateStatsForGet(boolean hit, long time) { + public final void updateStatsForGet(boolean hit, long time) + { setLastAccessed(time); if (hit) { incrementHitCount(); @@ -369,59 +420,51 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey incrementMissCount(); } } - @Override protected final void setLastModifiedAndAccessedTimes(long lastModified, long lastAccessed) { _setLastModified(lastModified); - if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { + if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { setLastAccessed(lastAccessed); } } - private volatile long lastAccessed; private volatile int hitCount; private volatile int missCount; - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> hitCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, - "hitCount"); - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> missCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, - "missCount"); - + + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> hitCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, "hitCount"); + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskLRURegionEntryOffHeapUUIDKey> missCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskLRURegionEntryOffHeapUUIDKey.class, "missCount"); + @Override public final long getLastAccessed() throws InternalStatisticsDisabledException { return this.lastAccessed; } - private void setLastAccessed(long lastAccessed) { this.lastAccessed = lastAccessed; } - @Override public final long getHitCount() throws InternalStatisticsDisabledException { return this.hitCount & 0xFFFFFFFFL; } - @Override public final long getMissCount() throws InternalStatisticsDisabledException { return this.missCount & 0xFFFFFFFFL; } - private void incrementHitCount() { hitCountUpdater.incrementAndGet(this); } - private void incrementMissCount() { missCountUpdater.incrementAndGet(this); } - @Override public final void resetCounts() throws InternalStatisticsDisabledException { - hitCountUpdater.set(this, 0); - missCountUpdater.set(this, 0); + hitCountUpdater.set(this,0); + missCountUpdater.set(this,0); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public final void txDidDestroy(long currTime) { setLastModified(currTime); @@ -429,13 +472,15 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey this.hitCount = 0; this.missCount = 0; } - @Override public boolean hasStats() { return true; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // versioned code private VersionSource memberID; private short entryVersionLowBytes; @@ -447,15 +492,16 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey 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); } @@ -463,17 +509,17 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey 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()) { @@ -485,11 +531,11 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey } 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 @@ -498,6 +544,7 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + public VersionTag asVersionTag() { VersionTag tag = VersionTag.create(memberID); tag.setEntryVersion(getEntryVersion()); @@ -507,9 +554,9 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey 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); } @@ -524,22 +571,23 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey 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 keyMostSigBits; private final long keyLeastSigBits; - @Override public final Object getKey() { return new UUID(this.keyMostSigBits, this.keyLeastSigBits); } - @Override public boolean isKeyEqual(Object k) { if (k instanceof UUID) { @@ -549,5 +597,8 @@ public class VersionedStatsDiskLRURegionEntryOffHeapUUIDKey } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } +
http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapIntKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapIntKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapIntKey.java index ed51506..e0ee49b 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapIntKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapIntKey.java @@ -15,91 +15,132 @@ 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.InternalStatisticsDisabledException; + + + + + + 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.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: -// disk: DISK +// disk: 1 // lru: LRU -// stats: STATS -// versioned: VERSIONED +// stats: 1 +// versioned: 1 // offheap: OFFHEAP // 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 VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskRegionEntryHeap { - public VersionedStatsDiskRegionEntryHeapIntKey(RegionEntryContext context, int key, - Object value) { - super(context, (value instanceof RecoveredEntry ? null : value)); + public VersionedStatsDiskRegionEntryHeapIntKey (RegionEntryContext context, int key, + + + + 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<VersionedStatsDiskRegionEntryHeapIntKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapIntKey.class, - "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VersionedStatsDiskRegionEntryHeapIntKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapIntKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + 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() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -107,23 +148,27 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR this.next = n; } + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // disk code + protected void initialize(RegionEntryContext context, Object value) { diskInitialize(context, value); } - @Override public int updateAsyncEntrySize(EnableLRU capacityController) { throw new IllegalStateException("should never be called"); } + // 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); } @@ -133,60 +178,64 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR * * @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 + // stats code @Override - public final void updateStatsForGet(boolean hit, long time) { + public final void updateStatsForGet(boolean hit, long time) + { setLastAccessed(time); if (hit) { incrementHitCount(); @@ -194,59 +243,51 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR incrementMissCount(); } } - @Override protected final void setLastModifiedAndAccessedTimes(long lastModified, long lastAccessed) { _setLastModified(lastModified); - if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { + if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { setLastAccessed(lastAccessed); } } - private volatile long lastAccessed; private volatile int hitCount; private volatile int missCount; - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapIntKey> hitCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapIntKey.class, - "hitCount"); - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapIntKey> missCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapIntKey.class, - "missCount"); - + + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapIntKey> hitCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapIntKey.class, "hitCount"); + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapIntKey> missCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapIntKey.class, "missCount"); + @Override public final long getLastAccessed() throws InternalStatisticsDisabledException { return this.lastAccessed; } - private void setLastAccessed(long lastAccessed) { this.lastAccessed = lastAccessed; } - @Override public final long getHitCount() throws InternalStatisticsDisabledException { return this.hitCount & 0xFFFFFFFFL; } - @Override public final long getMissCount() throws InternalStatisticsDisabledException { return this.missCount & 0xFFFFFFFFL; } - private void incrementHitCount() { hitCountUpdater.incrementAndGet(this); } - private void incrementMissCount() { missCountUpdater.incrementAndGet(this); } - @Override public final void resetCounts() throws InternalStatisticsDisabledException { - hitCountUpdater.set(this, 0); - missCountUpdater.set(this, 0); + hitCountUpdater.set(this,0); + missCountUpdater.set(this,0); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public final void txDidDestroy(long currTime) { setLastModified(currTime); @@ -254,13 +295,15 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR this.hitCount = 0; this.missCount = 0; } - @Override public boolean hasStats() { return true; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // versioned code private VersionSource memberID; private short entryVersionLowBytes; @@ -272,15 +315,16 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR 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); } @@ -288,17 +332,17 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR 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()) { @@ -310,11 +354,11 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR } 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 @@ -323,6 +367,7 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + public VersionTag asVersionTag() { VersionTag tag = VersionTag.create(memberID); tag.setEntryVersion(getEntryVersion()); @@ -332,9 +377,9 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR 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); } @@ -349,21 +394,29 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR 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() { return this.key; } - @Override public boolean isKeyEqual(Object k) { if (k instanceof Integer) { @@ -371,5 +424,8 @@ public class VersionedStatsDiskRegionEntryHeapIntKey extends VersionedStatsDiskR } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapLongKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapLongKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapLongKey.java index 32f0528..71ced2e 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapLongKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapLongKey.java @@ -15,91 +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.InternalStatisticsDisabledException; + + + + + + 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.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: -// disk: DISK +// disk: 1 // lru: LRU -// stats: STATS -// versioned: VERSIONED +// stats: 1 +// versioned: 1 // offheap: OFFHEAP // 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 VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDiskRegionEntryHeap { - public VersionedStatsDiskRegionEntryHeapLongKey(RegionEntryContext context, long key, - Object value) { - super(context, (value instanceof RecoveredEntry ? null : value)); + public VersionedStatsDiskRegionEntryHeapLongKey (RegionEntryContext context, long key, + + + + 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<VersionedStatsDiskRegionEntryHeapLongKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapLongKey.class, - "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VersionedStatsDiskRegionEntryHeapLongKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapLongKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + 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() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -107,23 +150,27 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk this.next = n; } + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // disk code + protected void initialize(RegionEntryContext context, Object value) { diskInitialize(context, value); } - @Override public int updateAsyncEntrySize(EnableLRU capacityController) { throw new IllegalStateException("should never be called"); } + // 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); } @@ -133,60 +180,64 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk * * @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 + // stats code @Override - public final void updateStatsForGet(boolean hit, long time) { + public final void updateStatsForGet(boolean hit, long time) + { setLastAccessed(time); if (hit) { incrementHitCount(); @@ -194,59 +245,51 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk incrementMissCount(); } } - @Override protected final void setLastModifiedAndAccessedTimes(long lastModified, long lastAccessed) { _setLastModified(lastModified); - if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { + if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { setLastAccessed(lastAccessed); } } - private volatile long lastAccessed; private volatile int hitCount; private volatile int missCount; - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapLongKey> hitCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapLongKey.class, - "hitCount"); - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapLongKey> missCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapLongKey.class, - "missCount"); - + + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapLongKey> hitCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapLongKey.class, "hitCount"); + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapLongKey> missCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapLongKey.class, "missCount"); + @Override public final long getLastAccessed() throws InternalStatisticsDisabledException { return this.lastAccessed; } - private void setLastAccessed(long lastAccessed) { this.lastAccessed = lastAccessed; } - @Override public final long getHitCount() throws InternalStatisticsDisabledException { return this.hitCount & 0xFFFFFFFFL; } - @Override public final long getMissCount() throws InternalStatisticsDisabledException { return this.missCount & 0xFFFFFFFFL; } - private void incrementHitCount() { hitCountUpdater.incrementAndGet(this); } - private void incrementMissCount() { missCountUpdater.incrementAndGet(this); } - @Override public final void resetCounts() throws InternalStatisticsDisabledException { - hitCountUpdater.set(this, 0); - missCountUpdater.set(this, 0); + hitCountUpdater.set(this,0); + missCountUpdater.set(this,0); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public final void txDidDestroy(long currTime) { setLastModified(currTime); @@ -254,13 +297,15 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk this.hitCount = 0; this.missCount = 0; } - @Override public boolean hasStats() { return true; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // versioned code private VersionSource memberID; private short entryVersionLowBytes; @@ -272,15 +317,16 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk 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); } @@ -288,17 +334,17 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk 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()) { @@ -310,11 +356,11 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk } 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 @@ -323,6 +369,7 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + public VersionTag asVersionTag() { VersionTag tag = VersionTag.create(memberID); tag.setEntryVersion(getEntryVersion()); @@ -332,9 +379,9 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk 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); } @@ -349,21 +396,22 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk 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() { return this.key; } - @Override public boolean isKeyEqual(Object k) { if (k instanceof Long) { @@ -371,5 +419,8 @@ public class VersionedStatsDiskRegionEntryHeapLongKey extends VersionedStatsDisk } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapObjectKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapObjectKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapObjectKey.java index 0a31af4..445a4cc 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapObjectKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VersionedStatsDiskRegionEntryHeapObjectKey.java @@ -15,91 +15,130 @@ 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.InternalStatisticsDisabledException; + + + + + + 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.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: -// disk: DISK +// disk: 1 // lru: LRU -// stats: STATS -// versioned: VERSIONED +// stats: 1 +// versioned: 1 // offheap: OFFHEAP // 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 VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDiskRegionEntryHeap { - public VersionedStatsDiskRegionEntryHeapObjectKey(RegionEntryContext context, Object key, - Object value) { - super(context, (value instanceof RecoveredEntry ? null : value)); + public VersionedStatsDiskRegionEntryHeapObjectKey (RegionEntryContext context, Object key, + + + + 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<VersionedStatsDiskRegionEntryHeapObjectKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapObjectKey.class, - "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VersionedStatsDiskRegionEntryHeapObjectKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapObjectKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + 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() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -107,23 +146,27 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi this.next = n; } + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // disk code + protected void initialize(RegionEntryContext context, Object value) { diskInitialize(context, value); } - @Override public int updateAsyncEntrySize(EnableLRU capacityController) { throw new IllegalStateException("should never be called"); } + // 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); } @@ -133,60 +176,64 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi * * @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 + // stats code @Override - public final void updateStatsForGet(boolean hit, long time) { + public final void updateStatsForGet(boolean hit, long time) + { setLastAccessed(time); if (hit) { incrementHitCount(); @@ -194,59 +241,51 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi incrementMissCount(); } } - @Override protected final void setLastModifiedAndAccessedTimes(long lastModified, long lastAccessed) { _setLastModified(lastModified); - if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { + if (!DISABLE_ACCESS_TIME_UPDATE_ON_PUT) { setLastAccessed(lastAccessed); } } - private volatile long lastAccessed; private volatile int hitCount; private volatile int missCount; - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapObjectKey> hitCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapObjectKey.class, - "hitCount"); - private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapObjectKey> missCountUpdater = - AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapObjectKey.class, - "missCount"); - + + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapObjectKey> hitCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapObjectKey.class, "hitCount"); + private static final AtomicIntegerFieldUpdater<VersionedStatsDiskRegionEntryHeapObjectKey> missCountUpdater + = AtomicIntegerFieldUpdater.newUpdater(VersionedStatsDiskRegionEntryHeapObjectKey.class, "missCount"); + @Override public final long getLastAccessed() throws InternalStatisticsDisabledException { return this.lastAccessed; } - private void setLastAccessed(long lastAccessed) { this.lastAccessed = lastAccessed; } - @Override public final long getHitCount() throws InternalStatisticsDisabledException { return this.hitCount & 0xFFFFFFFFL; } - @Override public final long getMissCount() throws InternalStatisticsDisabledException { return this.missCount & 0xFFFFFFFFL; } - private void incrementHitCount() { hitCountUpdater.incrementAndGet(this); } - private void incrementMissCount() { missCountUpdater.incrementAndGet(this); } - @Override public final void resetCounts() throws InternalStatisticsDisabledException { - hitCountUpdater.set(this, 0); - missCountUpdater.set(this, 0); + hitCountUpdater.set(this,0); + missCountUpdater.set(this,0); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public final void txDidDestroy(long currTime) { setLastModified(currTime); @@ -254,13 +293,15 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi this.hitCount = 0; this.missCount = 0; } - @Override public boolean hasStats() { return true; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // versioned code private VersionSource memberID; private short entryVersionLowBytes; @@ -272,15 +313,16 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi 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); } @@ -288,17 +330,17 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi 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()) { @@ -310,11 +352,11 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi } 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 @@ -323,6 +365,7 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + public VersionTag asVersionTag() { VersionTag tag = VersionTag.create(memberID); tag.setEntryVersion(getEntryVersion()); @@ -332,9 +375,9 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi 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); } @@ -349,19 +392,24 @@ public class VersionedStatsDiskRegionEntryHeapObjectKey extends VersionedStatsDi 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() { return this.key; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } +
