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 2016/03/15 19:38:39 UTC

[01/45] incubator-geode git commit: GEODE-1052

Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-1050 e72b7718e -> 216bbbd6f


GEODE-1052

specify logLevel in command line of gradle for running dunit test


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/c9f1e04e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/c9f1e04e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/c9f1e04e

Branch: refs/heads/feature/GEODE-1050
Commit: c9f1e04eb4ee042368682da548da1f7872fe48bc
Parents: 79e2a43
Author: zhouxh <gz...@pivotal.io>
Authored: Fri Mar 4 17:47:11 2016 -0800
Committer: zhouxh <gz...@pivotal.io>
Committed: Tue Mar 8 11:37:11 2016 -0800

----------------------------------------------------------------------
 .../com/gemstone/gemfire/test/dunit/DistributedTestCase.java  | 7 ++++++-
 gradle/test.gradle                                            | 4 ++++
 2 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c9f1e04e/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
index 65224e8..1203570 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
@@ -241,7 +241,12 @@ public abstract class DistributedTestCase extends TestCase implements java.io.Se
    * @since 3.0
    */
   public Properties getDistributedSystemProperties() {
-    return new Properties();
+    String logLevel = System.getProperty("logLevel");
+    Properties props = new Properties();
+    if (logLevel != null) {
+      props.setProperty("log-level", logLevel);
+    }
+    return props;
   }
 
   public static void disconnectAllFromDS() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c9f1e04e/gradle/test.gradle
----------------------------------------------------------------------
diff --git a/gradle/test.gradle b/gradle/test.gradle
index d8af4ba..6153212 100644
--- a/gradle/test.gradle
+++ b/gradle/test.gradle
@@ -204,6 +204,10 @@ subprojects {
         systemProperty 'gemfire.DEFAULT_MAX_OPLOG_SIZE', '10'
         systemProperty 'gemfire.disallowMcastDefaults', 'true'
         systemProperty 'jline.terminal', 'jline.UnsupportedTerminal'
+        def logLevel = System.getProperty('logLevel')
+        if (logLevel != null) {
+          systemProperty 'logLevel', logLevel
+        }
 
         def eol = System.getProperty('line.separator')
         def progress = new File(resultsDir, "$test.name-progress.txt")


[10/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
GEODE-982: refactor off-heap

- removed unused MemoryChunk implementations
- collapsed OffHeapCacheDeserializable into StoredObject
- Added Slab, SlabFactory, SlabImpl, and AddressableMemoryManager.
- collapsed MemoryChunkWithRefCount into StoredObject
- methods that access and modify the data now have Data in their name
- collapsed AddressableStoredObject into StoredObject
- changed product code to use the StoredObject interface
  instead of internal class implementations of it
- renamed DataAsAddress to TinyStoredObject
- renamed ObjectChunk to OffHeapStoredObject
- renamed ObjectChunkWithHeapForm to OffHeapStoredObjectWithHeapForm
- renamed allocateChunk to allocateOffHeapStoredObject
- renamed FakeChunk to SearchMarker
- renamed ObjectChunkSlice to OffHeapStoredObjectSlice
- renamed SyncChunkStack to OffHeapStoredObjectAddressStack
- renamed ChunkValueWrapper to OffHeapValueWrapper


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/3087c86f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/3087c86f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/3087c86f

Branch: refs/heads/feature/GEODE-1050
Commit: 3087c86f729785ad9fa021f4437d25ca5ef9231d
Parents: 8d7a00e
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Tue Mar 8 15:44:03 2016 -0800
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Tue Mar 8 15:44:03 2016 -0800

----------------------------------------------------------------------
 .../gemfire/cache/client/internal/PutAllOp.java |   8 +-
 .../gemfire/cache/client/internal/PutOp.java    |  15 +-
 .../internal/GetOperationContextImpl.java       |  24 +-
 .../query/internal/index/AbstractIndex.java     |   8 +-
 .../query/internal/index/DummyQRegion.java      |  14 +-
 .../cache/query/internal/index/HashIndex.java   |   6 +-
 .../internal/cache/AbstractRegionEntry.java     |  85 +-
 .../internal/cache/AbstractRegionMap.java       |  81 +-
 .../gemfire/internal/cache/BucketRegion.java    |   5 +-
 .../cache/BytesAndBitsForCompactor.java         |  18 +-
 .../internal/cache/CachedDeserializable.java    |   8 +
 .../gemfire/internal/cache/DiskEntry.java       | 113 +--
 .../gemfire/internal/cache/DiskStoreImpl.java   |   4 -
 .../internal/cache/DistributedRegion.java       |  10 -
 .../gemfire/internal/cache/EntryEventImpl.java  | 161 ++--
 .../gemfire/internal/cache/LocalRegion.java     |  11 +-
 .../gemstone/gemfire/internal/cache/Oplog.java  |  12 +-
 .../internal/cache/PartitionedRegion.java       |   1 -
 .../cache/PreferBytesCachedDeserializable.java  |  11 +-
 .../gemfire/internal/cache/RegionEntry.java     |   8 +-
 .../internal/cache/RemoteDestroyMessage.java    |   4 +-
 .../cache/SearchLoadAndWriteProcessor.java      |   8 +-
 .../cache/StoreAllCachedDeserializable.java     |  11 +-
 .../internal/cache/VMCachedDeserializable.java  |   9 +-
 .../SnappyCompressedCachedDeserializable.java   |  10 +
 .../internal/cache/partitioned/PutMessage.java  |   8 +-
 .../internal/cache/tier/sockets/Part.java       |  51 +-
 .../cache/tier/sockets/command/Get70.java       |  19 +-
 .../cache/tier/sockets/command/Request.java     |   8 +-
 .../cache/wan/GatewaySenderEventImpl.java       |  12 +-
 .../internal/offheap/AbstractStoredObject.java  |  24 +
 .../offheap/AddressableMemoryChunk.java         |  29 -
 .../offheap/AddressableMemoryChunkFactory.java  |  27 -
 .../offheap/AddressableMemoryManager.java       | 261 ++++++
 .../internal/offheap/ByteArrayMemoryChunk.java  |  77 --
 .../internal/offheap/ByteBufferMemoryChunk.java |  90 --
 .../gemfire/internal/offheap/DataAsAddress.java | 131 ---
 .../gemfire/internal/offheap/Fragment.java      |  10 +-
 .../internal/offheap/FreeListManager.java       | 180 ++--
 .../internal/offheap/MemoryAllocator.java       |  18 +-
 .../gemfire/internal/offheap/MemoryBlock.java   |   2 +-
 .../internal/offheap/MemoryBlockNode.java       |  22 +-
 .../gemfire/internal/offheap/MemoryChunk.java   |  47 -
 .../offheap/MemoryChunkWithRefCount.java        |  34 -
 .../gemfire/internal/offheap/ObjectChunk.java   | 737 ---------------
 .../internal/offheap/ObjectChunkSlice.java      |  44 -
 .../offheap/ObjectChunkWithHeapForm.java        |  40 -
 .../offheap/OffHeapCachedDeserializable.java    | 142 ---
 .../gemfire/internal/offheap/OffHeapHelper.java |  24 +-
 .../offheap/OffHeapRegionEntryHelper.java       |  28 +-
 .../internal/offheap/OffHeapStoredObject.java   | 718 +++++++++++++++
 .../OffHeapStoredObjectAddressStack.java        | 141 +++
 .../offheap/OffHeapStoredObjectSlice.java       |  44 +
 .../OffHeapStoredObjectWithHeapForm.java        |  41 +
 .../offheap/SimpleMemoryAllocatorImpl.java      |  77 +-
 .../gemstone/gemfire/internal/offheap/Slab.java |  39 +
 .../gemfire/internal/offheap/SlabFactory.java   |  27 +
 .../gemfire/internal/offheap/SlabImpl.java      |  61 ++
 .../gemfire/internal/offheap/StoredObject.java  | 117 ++-
 .../internal/offheap/SyncChunkStack.java        | 141 ---
 .../internal/offheap/TinyStoredObject.java      | 229 +++++
 .../internal/offheap/UnsafeMemoryChunk.java     | 217 -----
 .../internal/tcp/ByteBufferInputStream.java     |  74 +-
 .../tcp/ImmutableByteBufferInputStream.java     |   4 +-
 .../gemfire/internal/util/BlobHelper.java       |   4 +-
 .../gemfire/pdx/internal/PdxInputStream.java    |   4 +-
 .../gemfire/cache30/MultiVMRegionTestCase.java  |  14 +-
 .../cache/ChunkValueWrapperJUnitTest.java       | 188 ----
 .../gemfire/internal/cache/OffHeapTestUtil.java |   2 +-
 .../cache/OffHeapValueWrapperJUnitTest.java     | 188 ++++
 .../cache/OldValueImporterTestBase.java         |  22 +-
 .../cache/tier/sockets/MessageJUnitTest.java    |   1 -
 .../offheap/ByteArrayMemoryChunkJUnitTest.java  |  30 -
 .../offheap/DataAsAddressJUnitTest.java         | 368 --------
 .../DirectByteBufferMemoryChunkJUnitTest.java   |  33 -
 .../internal/offheap/FragmentJUnitTest.java     |  22 +-
 .../internal/offheap/FreeListManagerTest.java   | 322 +++----
 .../offheap/FreeListOffHeapRegionJUnitTest.java |   2 +-
 .../HeapByteBufferMemoryChunkJUnitTest.java     |  33 -
 .../offheap/LifecycleListenerJUnitTest.java     |  24 +-
 .../offheap/MemoryBlockNodeJUnitTest.java       |  48 +-
 .../offheap/MemoryChunkJUnitTestBase.java       | 290 ------
 .../internal/offheap/MemoryChunkTestSuite.java  |  32 -
 .../internal/offheap/ObjectChunkJUnitTest.java  | 902 -------------------
 .../offheap/ObjectChunkSliceJUnitTest.java      |  72 --
 .../ObjectChunkWithHeapFormJUnitTest.java       |  64 --
 .../offheap/OffHeapHelperJUnitTest.java         |  14 +-
 .../internal/offheap/OffHeapRegionBase.java     |  16 +-
 .../OffHeapRegionEntryHelperJUnitTest.java      |  88 +-
 ...ffHeapStoredObjectAddressStackJUnitTest.java | 289 ++++++
 .../offheap/OffHeapStoredObjectJUnitTest.java   | 869 ++++++++++++++++++
 .../OffHeapStoredObjectSliceJUnitTest.java      |  72 ++
 ...ffHeapStoredObjectWithHeapFormJUnitTest.java |  64 ++
 .../offheap/OffHeapValidationJUnitTest.java     |   8 +-
 .../OffHeapWriteObjectAsByteArrayJUnitTest.java |  12 +-
 .../OldFreeListOffHeapRegionJUnitTest.java      |   2 +-
 ...moryAllocatorFillPatternIntegrationTest.java |  16 +-
 ...mpleMemoryAllocatorFillPatternJUnitTest.java |  24 +-
 .../offheap/SimpleMemoryAllocatorJUnitTest.java | 114 +--
 .../internal/offheap/StoredObjectTestSuite.java |   8 +-
 .../offheap/SyncChunkStackJUnitTest.java        | 289 ------
 .../offheap/TinyMemoryBlockJUnitTest.java       |  64 +-
 .../offheap/TinyStoredObjectJUnitTest.java      | 353 ++++++++
 .../offheap/UnsafeMemoryChunkJUnitTest.java     |  87 --
 .../management/OffHeapManagementDUnitTest.java  |   8 +-
 .../OffHeapByteBufferByteSourceJUnitTest.java   |   6 +-
 .../gemfire/pdx/OffHeapByteSourceJUnitTest.java |  10 +-
 .../sanctionedDataSerializables.txt             |   2 +-
 108 files changed, 4503 insertions(+), 5217 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutAllOp.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutAllOp.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutAllOp.java
index e81cd0c..2f06589 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutAllOp.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutAllOp.java
@@ -45,7 +45,6 @@ import com.gemstone.gemfire.internal.cache.tier.sockets.Message;
 import com.gemstone.gemfire.internal.cache.tier.sockets.Part;
 import com.gemstone.gemfire.internal.cache.tier.sockets.VersionedObjectList;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.offheap.StoredObject;
 
 /**
  * Does a region putAll on a server
@@ -307,11 +306,12 @@ public class PutAllOp {
         getMessage().addStringOrObjPart(key);
         Object value = mapEntry.getValue();
         if (value instanceof CachedDeserializable) {
-          if (value instanceof StoredObject && !((StoredObject) value).isSerialized()) {
+          CachedDeserializable cd = (CachedDeserializable) value;
+          if (!cd.isSerialized()) {
             // it is a byte[]
-            getMessage().addObjPart(((StoredObject) value).getDeserializedForReading());
+            getMessage().addObjPart(cd.getDeserializedForReading());
           } else {
-            Object cdValue = ((CachedDeserializable)value).getValue();
+            Object cdValue = cd.getValue();
             if (cdValue instanceof byte[]) {
               getMessage().addRawPart((byte[])cdValue, true);
             } else {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutOp.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutOp.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutOp.java
index ef4c9d3..c0273c5 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutOp.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PutOp.java
@@ -34,7 +34,6 @@ import com.gemstone.gemfire.internal.cache.tier.sockets.Message;
 import com.gemstone.gemfire.internal.cache.tier.sockets.Part;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.offheap.StoredObject;
 
 import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
@@ -221,13 +220,14 @@ public class PutOp {
           }
         }
         else if (value instanceof CachedDeserializable) {
-          if (value instanceof StoredObject && !((StoredObject) value).isSerialized()) {
+          CachedDeserializable cd = (CachedDeserializable) value;
+          if (!cd.isSerialized()) {
             // it is a byte[]
             getMessage().addObjPart(Boolean.FALSE);
-            getMessage().addObjPart(((StoredObject) value).getDeserializedForReading());
+            getMessage().addObjPart(cd.getDeserializedForReading());
           } else {
             getMessage().addObjPart(Boolean.FALSE);
-            Object cdValue = ((CachedDeserializable)value).getValue();
+            Object cdValue = cd.getValue();
             if (cdValue instanceof byte[]) {
               getMessage().addRawPart((byte[])cdValue, true);
             }
@@ -283,13 +283,14 @@ public class PutOp {
         }
       }
       else if (value instanceof CachedDeserializable) {
-        if (value instanceof StoredObject && !((StoredObject) value).isSerialized()) {
+        CachedDeserializable cd = (CachedDeserializable) value;
+        if (!cd.isSerialized()) {
           // it is a byte[]
           getMessage().addObjPart(Boolean.FALSE);
-          getMessage().addObjPart(((StoredObject) value).getDeserializedForReading());
+          getMessage().addObjPart(cd.getDeserializedForReading());
         } else {
           getMessage().addObjPart(Boolean.FALSE);
-          Object cdValue = ((CachedDeserializable)value).getValue();
+          Object cdValue = cd.getValue();
           if (cdValue instanceof byte[]) {
             getMessage().addRawPart((byte[])cdValue, true);
           }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/cache/operations/internal/GetOperationContextImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/operations/internal/GetOperationContextImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/operations/internal/GetOperationContextImpl.java
index 11d9248..3257051 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/operations/internal/GetOperationContextImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/operations/internal/GetOperationContextImpl.java
@@ -18,7 +18,6 @@ package com.gemstone.gemfire.cache.operations.internal;
 
 import com.gemstone.gemfire.SerializationException;
 import com.gemstone.gemfire.cache.operations.GetOperationContext;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
 import com.gemstone.gemfire.internal.offheap.Releasable;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
@@ -68,9 +67,9 @@ public class GetOperationContextImpl extends GetOperationContext implements Rele
     super.setValue(value, isObject);
   }
 
-  private void checkForReleasedOffHeapValue(Object v) {
-    // Note that we only care about Chunk (instead of all StoredObject) because it is the only one using a refcount
-    if (this.released && v instanceof ObjectChunk) {
+  private void checkForReleasedOffHeapValue(StoredObject so) {
+    // Note that we only care about stored objects with a ref count
+    if (this.released && so.hasRefCount()) {
       throw new IllegalStateException("Attempt to access off-heap value after the OperationContext callback returned.");
     }
   }
@@ -81,8 +80,9 @@ public class GetOperationContextImpl extends GetOperationContext implements Rele
     if (result == null) {
       Object v = super.getValue();
       if (v instanceof StoredObject) {
-        checkForReleasedOffHeapValue(v);
-        result = ((StoredObject) v).getValueAsHeapByteArray();
+        StoredObject so = (StoredObject) v;
+        checkForReleasedOffHeapValue(so);
+        result = so.getValueAsHeapByteArray();
       }
     }
     return result;
@@ -92,8 +92,9 @@ public class GetOperationContextImpl extends GetOperationContext implements Rele
   public Object getDeserializedValue() throws SerializationException {
     Object result = super.getDeserializedValue();
     if (result instanceof StoredObject) {
-      checkForReleasedOffHeapValue(result);
-      result = ((StoredObject) result).getValueAsDeserializedHeapObject();
+      StoredObject so = (StoredObject) result;
+      checkForReleasedOffHeapValue(so);
+      result = so.getValueAsDeserializedHeapObject();
     }
     return result;
   }
@@ -102,9 +103,10 @@ public class GetOperationContextImpl extends GetOperationContext implements Rele
   public Object getValue() {
     Object result = super.getValue();
     if (result instanceof StoredObject) {
-      checkForReleasedOffHeapValue(result);
+      StoredObject so = (StoredObject) result;
+      checkForReleasedOffHeapValue(so);
       // since they called getValue they don't care if it is serialized or deserialized so return it as serialized
-      result = ((StoredObject) result).getValueAsHeapByteArray();
+      result = so.getValueAsHeapByteArray();
     }
     return result;
   }
@@ -116,7 +118,7 @@ public class GetOperationContextImpl extends GetOperationContext implements Rele
     // our value (since this context did not retain it)
     // but we do make sure that any future attempt to access
     // the off-heap value fails.
-    if (super.getValue() instanceof ObjectChunk) {
+    if (super.getValue() instanceof StoredObject) {
       this.released = true;
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/AbstractIndex.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/AbstractIndex.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/AbstractIndex.java
index aab99cb..0923327 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/AbstractIndex.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/AbstractIndex.java
@@ -75,7 +75,7 @@ import com.gemstone.gemfire.internal.cache.RegionEntry;
 import com.gemstone.gemfire.internal.cache.persistence.query.CloseableIterator;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Released;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 import com.gemstone.gemfire.pdx.PdxInstance;
@@ -1477,9 +1477,9 @@ public abstract class AbstractIndex implements IndexProtocol
         valueInIndex = verifyAndGetPdxDomainObject(value);
       } else{
         @Released Object val = re.getValueInVM(context.getPartitionedRegion());
-        ObjectChunk valToFree = null;
-        if (val instanceof ObjectChunk) {
-          valToFree = (ObjectChunk)val;
+        StoredObject valToFree = null;
+        if (val instanceof StoredObject) {
+          valToFree = (StoredObject)val;
         }
         try {
         if (val instanceof CachedDeserializable) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/DummyQRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/DummyQRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/DummyQRegion.java
index bde948d..b888f99 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/DummyQRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/DummyQRegion.java
@@ -41,7 +41,7 @@ import com.gemstone.gemfire.internal.cache.LocalRegion;
 import com.gemstone.gemfire.internal.cache.RegionEntry;
 import com.gemstone.gemfire.internal.cache.RegionEntryContext;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Released;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 
@@ -134,8 +134,8 @@ public class DummyQRegion extends QRegion {
     }
     valueInList.clear();
     Object val = this.entry.getValueOffHeapOrDiskWithoutFaultIn((LocalRegion) getRegion());
-    if (val instanceof ObjectChunk) {
-      @Retained @Released ObjectChunk ohval = (ObjectChunk) val;
+    if (val instanceof StoredObject) {
+      @Retained @Released StoredObject ohval = (StoredObject) val;
       try {
         // TODO OFFHEAP: val may be off-heap PdxInstance
         val = ohval.getDeserializedValue(getRegion(), this.entry);
@@ -155,8 +155,8 @@ public class DummyQRegion extends QRegion {
       valueInArray = new  Object[1];      
     }   
     Object val = this.entry.getValueOffHeapOrDiskWithoutFaultIn((LocalRegion) getRegion());
-    if (val instanceof ObjectChunk) {      
-      @Retained @Released ObjectChunk ohval = (ObjectChunk) val;
+    if (val instanceof StoredObject) {      
+      @Retained @Released StoredObject ohval = (StoredObject) val;
       try {
         // TODO OFFHEAP: val may be off-heap PdxInstance
         val = ohval.getDeserializedValue(getRegion(), this.entry);
@@ -178,8 +178,8 @@ public class DummyQRegion extends QRegion {
     }
     values.clear();
     Object val = this.entry.getValueOffHeapOrDiskWithoutFaultIn((LocalRegion) getRegion());
-    if (val instanceof ObjectChunk) {
-      @Retained @Released ObjectChunk ohval = (ObjectChunk) val;
+    if (val instanceof StoredObject) {
+      @Retained @Released StoredObject ohval = (StoredObject) val;
       try {
         // TODO OFFHEAP: val may be off-heap PdxInstance
         val = ohval.getDeserializedValue(getRegion(), this.entry);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/HashIndex.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/HashIndex.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/HashIndex.java
index a30a264..f8a1b8d 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/HashIndex.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/index/HashIndex.java
@@ -79,7 +79,7 @@ import com.gemstone.gemfire.internal.cache.Token;
 import com.gemstone.gemfire.internal.cache.persistence.query.CloseableIterator;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Released;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 import com.gemstone.gemfire.pdx.internal.PdxString;
@@ -876,8 +876,8 @@ public class HashIndex extends AbstractIndex {
     if (this.indexOnValues) {
       Object o = entry.getValueOffHeapOrDiskWithoutFaultIn((LocalRegion) getRegion());
       try {
-        if (o instanceof ObjectChunk) {
-          ObjectChunk ohval = (ObjectChunk) o;
+        if (o instanceof StoredObject) {
+          StoredObject ohval = (StoredObject) o;
           try {
             o = ohval.getDeserializedForReading();
           } finally {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionEntry.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionEntry.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionEntry.java
index 558ea37..a103e96 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionEntry.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionEntry.java
@@ -61,11 +61,7 @@ import com.gemstone.gemfire.internal.lang.StringUtils;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.ObjectChunkWithHeapForm;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
 import com.gemstone.gemfire.internal.offheap.MemoryAllocator;
-import com.gemstone.gemfire.internal.offheap.OffHeapCachedDeserializable;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
 import com.gemstone.gemfire.internal.offheap.ReferenceCountHelper;
 import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
@@ -334,14 +330,14 @@ public abstract class AbstractRegionEntry implements RegionEntry,
 //        // For SQLFire we prefer eager deserialized
 //        dst.setEagerDeserialize();         
 //      }
-      
-      if (v instanceof StoredObject && !((StoredObject) v).isSerialized()) {
-        dst.value = ((StoredObject) v).getDeserializedForReading();
+      CachedDeserializable cd = (CachedDeserializable) v;
+      if (!cd.isSerialized()) {
+        dst.value = cd.getDeserializedForReading();
       } else {
         /*if (v instanceof ByteSource && CachedDeserializableFactory.preferObject()) {
           dst.value = v;
         } else */ {
-          Object tmp = ((CachedDeserializable) v).getValue();
+          Object tmp = cd.getValue();
           if (tmp instanceof byte[]) {
             byte[] bb = (byte[]) tmp;
             dst.value = bb;
@@ -989,10 +985,10 @@ public abstract class AbstractRegionEntry implements RegionEntry,
       return checkPdxEquals((PdxInstance)v1, v2);
     } else if (v2 instanceof PdxInstance) {
       return checkPdxEquals((PdxInstance)v2, v1);
-    } else if (v1 instanceof OffHeapCachedDeserializable) {
-      return checkOffHeapEquals((OffHeapCachedDeserializable)v1, v2);
-    } else if (v2 instanceof OffHeapCachedDeserializable) {
-      return checkOffHeapEquals((OffHeapCachedDeserializable)v2, v1);
+    } else if (v1 instanceof StoredObject) {
+      return checkOffHeapEquals((StoredObject)v1, v2);
+    } else if (v2 instanceof StoredObject) {
+      return checkOffHeapEquals((StoredObject)v2, v1);
     } else if (v1 instanceof CachedDeserializable) {
       return checkCDEquals((CachedDeserializable)v1, v2, isCompressedOffHeap);
     } else if (v2 instanceof CachedDeserializable) {
@@ -1001,35 +997,29 @@ public abstract class AbstractRegionEntry implements RegionEntry,
       return basicEquals(v1, v2);
     }
   }
-  private static boolean checkOffHeapEquals(@Unretained OffHeapCachedDeserializable cd, @Unretained Object obj) {
-    if (cd.isSerializedPdxInstance()) {
-      PdxInstance pi = InternalDataSerializer.readPdxInstance(cd.getSerializedValue(), GemFireCacheImpl.getForPdx("Could not check value equality"));
+  private static boolean checkOffHeapEquals(@Unretained StoredObject ohVal, @Unretained Object obj) {
+    if (ohVal.isSerializedPdxInstance()) {
+      PdxInstance pi = InternalDataSerializer.readPdxInstance(ohVal.getSerializedValue(), GemFireCacheImpl.getForPdx("Could not check value equality"));
       return checkPdxEquals(pi, obj);
     }
-    if (obj instanceof OffHeapCachedDeserializable) {
-      return cd.checkDataEquals((OffHeapCachedDeserializable)obj);
+    if (obj instanceof StoredObject) {
+      return ohVal.checkDataEquals((StoredObject)obj);
     } else {
       byte[] serializedObj;
       if (obj instanceof CachedDeserializable) {
-        if (!cd.isSerialized()) {
-          if (obj instanceof StoredObject && !((StoredObject) obj).isSerialized()) {
-            // both are byte[]
-            // obj must be DataAsAddress since it was not OffHeapCachedDeserializable
-            // so its byte[] will be small.
-            byte[] objBytes = (byte[]) ((StoredObject) obj).getDeserializedForReading();
-            return cd.checkDataEquals(objBytes);
-          } else {
-            return false;
-          }
+        CachedDeserializable cdObj = (CachedDeserializable) obj;
+        if (!ohVal.isSerialized()) {
+          assert cdObj.isSerialized();
+          return false;
         }
-        serializedObj = ((CachedDeserializable) obj).getSerializedValue();
+        serializedObj = cdObj.getSerializedValue();
       } else if (obj instanceof byte[]) {
-        if (cd.isSerialized()) {
+        if (ohVal.isSerialized()) {
           return false;
         }
         serializedObj = (byte[]) obj;
       } else {
-        if (!cd.isSerialized()) {
+        if (!ohVal.isSerialized()) {
           return false;
         }
         if (obj == null || obj == Token.NOT_AVAILABLE
@@ -1038,19 +1028,20 @@ public abstract class AbstractRegionEntry implements RegionEntry,
         }
         serializedObj = EntryEventImpl.serialize(obj);
       }
-      return cd.checkDataEquals(serializedObj);
+      return ohVal.checkDataEquals(serializedObj);
     }
   }
   
   private static boolean checkCDEquals(CachedDeserializable cd, Object obj, boolean isCompressedOffHeap) {
-    if (cd instanceof StoredObject && !((StoredObject) cd).isSerialized()) {
+    if (!cd.isSerialized()) {
       // cd is an actual byte[].
       byte[] ba2;
-      if (obj instanceof StoredObject) {
-        if (!((StoredObject) obj).isSerialized()) {
+      if (obj instanceof CachedDeserializable) {
+        CachedDeserializable cdObj = (CachedDeserializable) obj;
+        if (!cdObj.isSerialized()) {
           return false;
         }
-        ba2 = (byte[]) ((StoredObject) obj).getDeserializedForReading();
+        ba2 = (byte[]) cdObj.getDeserializedForReading();
       } else if (obj instanceof byte[]) {
         ba2 = (byte[]) obj;
       } else {
@@ -1128,11 +1119,12 @@ public abstract class AbstractRegionEntry implements RegionEntry,
     if (!(obj instanceof PdxInstance)) {
       // obj may be a CachedDeserializable in which case we want to convert it to a PdxInstance even if we are not readSerialized.
       if (obj instanceof CachedDeserializable) {
-        if (obj instanceof StoredObject && !((StoredObject) obj).isSerialized()) {
+        CachedDeserializable cdObj = (CachedDeserializable) obj;
+        if (!cdObj.isSerialized()) {
           // obj is actually a byte[] which will never be equal to a PdxInstance
           return false;
         }
-        Object cdVal = ((CachedDeserializable) obj).getValue();
+        Object cdVal = cdObj.getValue();
         if (cdVal instanceof byte[]) {
           byte[] cdValBytes = (byte[]) cdVal;
           PdxInstance pi = InternalDataSerializer.readPdxInstance(cdValBytes, GemFireCacheImpl.getForPdx("Could not check value equality"));
@@ -1311,9 +1303,9 @@ public abstract class AbstractRegionEntry implements RegionEntry,
           }
           return prepareValueForCache(r, heapValue, event, isEntryUpdate);
         }
-        if (val instanceof ObjectChunk) {
+        if (soVal.hasRefCount()) {
           // if the reused guy has a refcount then need to inc it
-          if (!((ObjectChunk)val).retain()) {
+          if (!soVal.retain()) {
             throw new IllegalStateException("Could not use an off heap value because it was freed");
           }
         }
@@ -1346,16 +1338,8 @@ public abstract class AbstractRegionEntry implements RegionEntry,
         boolean isCompressed = compressedData != data;
         ReferenceCountHelper.setReferenceCountOwner(this);
         MemoryAllocator ma = SimpleMemoryAllocatorImpl.getAllocator(); // fix for bug 47875
-        val = ma.allocateAndInitialize(compressedData, isSerialized, isCompressed); // TODO:KIRK:48068 race happens right after this line
+        val = ma.allocateAndInitialize(compressedData, isSerialized, isCompressed, data);
         ReferenceCountHelper.setReferenceCountOwner(null);
-        if (val instanceof ObjectChunk) {
-          val = new ObjectChunkWithHeapForm((ObjectChunk)val, data);
-        }
-//        if (val instanceof Chunk && r instanceof LocalRegion) {
-//          Chunk c = (Chunk) val;
-//          LocalRegion lr = (LocalRegion) r;
-//          SimpleMemoryAllocatorImpl.debugLog("allocated @" + Long.toHexString(c.getMemoryAddress()) + " reg=" + lr.getFullPath(), false);
-//        }
       }
       return val;
     }
@@ -1365,8 +1349,7 @@ public abstract class AbstractRegionEntry implements RegionEntry,
       byte[] data = ((StoredObject) nv).getSerializedValue();
       nv = CachedDeserializableFactory.create(data);
     }
-    // don't bother checking for SQLFire
-    if (!GemFireCacheImpl.sqlfSystem() && nv instanceof PdxInstanceImpl) {
+    if (nv instanceof PdxInstanceImpl) {
       // We do not want to put PDXs in the cache as values.
       // So get the serialized bytes and use a CachedDeserializable.
       try {
@@ -1574,7 +1557,7 @@ public abstract class AbstractRegionEntry implements RegionEntry,
 
   protected StringBuilder appendFieldsToString(final StringBuilder sb) {
     sb.append("key=").append(getKey()).append("; rawValue=")
-        .append(_getValue()); // OFFHEAP _getValue ok: the current toString on OffHeapCachedDeserializable is safe to use without incing refcount.
+        .append(_getValue()); // OFFHEAP _getValue ok: the current toString on ObjectChunk is safe to use without incing refcount.
     VersionStamp stamp = getVersionStamp();
     if (stamp != null) {
       sb.append("; version=").append(stamp.asVersionTag()+";member="+stamp.getMemberID());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionMap.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionMap.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionMap.java
index 699de2f..9058984 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionMap.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegionMap.java
@@ -75,7 +75,6 @@ import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
 import com.gemstone.gemfire.internal.offheap.OffHeapRegionEntryHelper;
 import com.gemstone.gemfire.internal.offheap.ReferenceCountHelper;
@@ -832,6 +831,7 @@ public abstract class AbstractRegionMap implements RegionMap {
                                        boolean deferLRUCallback,
                                        VersionTag entryVersion, InternalDistributedMember sender, boolean isSynchronizing)
   {
+    assert indexUpdater == null : "indexUpdater should only exist if sqlfire";
     boolean result = false;
     boolean done = false;
     boolean cleared = false;
@@ -922,73 +922,7 @@ public abstract class AbstractRegionMap implements RegionMap {
                 }
                 final boolean oldIsTombstone = oldRe.isTombstone();
                 final int oldSize = owner.calculateRegionEntryValueSize(oldRe);
-                // Neeraj: The below if block is to handle the special
-                // scenario witnessed in SqlFabric for now. (Though its
-                // a general scenario). The scenario is that during GII
-                // it is possible that updates start coming before the
-                // base value reaches through GII. In that scenario the deltas
-                // for that particular key is kept on being added to a list
-                // of deltas. When the base value arrives through this path
-                // of GII the oldValue will be that list of deltas. When the
-                // base values arrives the deltas are applied one by one on that list.
-                // The same scenario is applicable for GemFire also but the below 
-                // code will be executed only in case of sqlfabric now. Probably
-                // the code can be made more generic for both SQL Fabric and GemFire.
-                if (indexUpdater != null) {
-                  oldValue = oldRe.getValueInVM(owner); // OFFHEAP: ListOfDeltas
-                  if (oldValue instanceof ListOfDeltas) {
-                  // apply the deltas on this new value. update index
-                  // Make a new event object
-                  // make it an insert operation
-                  LocalRegion rgn = owner;
-                  if (owner instanceof BucketRegion) {
-                    rgn = ((BucketRegion)owner).getPartitionedRegion();
-                  }
-                  event = EntryEventImpl.create(rgn, Operation.CREATE, key, null,
-                      Boolean.TRUE /* indicate that GII is in progress */,
-                      false, null);
-                  try {
-                  event.setOldValue(newValue);
-                  if (logger.isDebugEnabled()) {
-                    logger.debug("initialImagePut: received base value for list of deltas; event: {}", event);
-                  }
-                  ((ListOfDeltas)oldValue).apply(event);
-                  Object preparedNewValue =oldRe.prepareValueForCache(owner,
-                      event.getNewValueAsOffHeapDeserializedOrRaw(), true);
-                  if(preparedNewValue instanceof ObjectChunk) {
-                    event.setNewValue(preparedNewValue);
-                  }
-                  oldRe.setValue(owner, preparedNewValue, event);
-                  //event.setNewValue(event.getOldValue());
-                  event.setOldValue(null);
-                  try {
-                    indexUpdater.onEvent(owner, event, oldRe);
-                    lruEntryUpdate(oldRe);
-                    owner.updateSizeOnPut(key, oldSize, owner.calculateRegionEntryValueSize(oldRe));
-                    EntryLogger.logInitialImagePut(_getOwnerObject(), key, newValue);
-                    result = true;
-                    done = true;
-                    break;
-                  } finally {
-                    // this must be done within the oldRe sync block
-                    indexUpdater.postEvent(owner, event, oldRe, done);
-                  }
-                  } finally {
-                    if (event != null) {
-                      event.release();
-                      event = null;
-                    }
-                  }
-                  }
-                }
                 try {
-                  if (indexUpdater != null) {
-                    event = EntryEventImpl.create(owner, Operation.CREATE, key,
-                        newValue,
-                        Boolean.TRUE /* indicate that GII is in progress */,
-                        false, null);
-                    indexUpdater.onEvent(owner, event, oldRe);
-                  }
                   result = oldRe.initialImagePut(owner, lastModified, newValue, wasRecovered, acceptedVersionTag);
                   if (result) {
                     if (oldIsTombstone) {
@@ -1025,9 +959,6 @@ public abstract class AbstractRegionMap implements RegionMap {
                   }
                   done = true;
                 } finally {
-                  if (indexUpdater != null) {
-                    indexUpdater.postEvent(owner, event, oldRe, result);
-                  }
                   if (event != null) {
                     event.release();
                     event = null;
@@ -1052,13 +983,6 @@ public abstract class AbstractRegionMap implements RegionMap {
                 true, wasRecovered, versionTagAccepted);
             try {
               if (result) {
-                if (indexUpdater != null) {
-                  event = EntryEventImpl.create(owner, Operation.CREATE, key,
-                      newValue,
-                      Boolean.TRUE /* indicate that GII is in progress */,
-                      false, null);
-                  indexUpdater.onEvent(owner, event, newRe);
-                }
                 if (newValue == Token.TOMBSTONE) {
                   owner.scheduleTombstone(newRe, entryVersion);
                 } else {
@@ -1075,9 +999,6 @@ public abstract class AbstractRegionMap implements RegionMap {
               }
               done = true;
             } finally {
-              if (result && indexUpdater != null) {
-                indexUpdater.postEvent(owner, event, newRe, done);
-              }
               if (event != null) {
                 event.release();
                 event = null;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegion.java
index 5b17040..413fc87 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketRegion.java
@@ -1829,11 +1829,12 @@ implements Bucket
       if (!(rawNewValue instanceof CachedDeserializable)) {
         return;
       }
-      if (rawNewValue instanceof StoredObject && !((StoredObject) rawNewValue).isSerialized()) {
+      CachedDeserializable cd = (CachedDeserializable) rawNewValue;
+      if (!cd.isSerialized()) {
         // it is a byte[]; not a Delta
         return;
       }
-      Object instance = ((CachedDeserializable)rawNewValue).getValue();
+      Object instance = cd.getValue();
       if (instance instanceof com.gemstone.gemfire.Delta
           && ((com.gemstone.gemfire.Delta)instance).hasDelta()) {
         try {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BytesAndBitsForCompactor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BytesAndBitsForCompactor.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BytesAndBitsForCompactor.java
index cc358f5..2746e29 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BytesAndBitsForCompactor.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BytesAndBitsForCompactor.java
@@ -16,7 +16,7 @@
  */
 package com.gemstone.gemfire.internal.cache;
 
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
 
 /**
@@ -32,11 +32,11 @@ import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
  */
 public class BytesAndBitsForCompactor {
   /**
-   * If dataChunk is set then ignore the "data" and "validLength" fields.
-   * The dataChunk field is unretained so it can only be used while the RegionEntry is still synced.
-   * When done with the dataChunk, null it out if you want to reuse the byte[] later.
+   * If offHeapData is set then ignore the "data" and "validLength" fields.
+   * The offHeapData field is unretained so it can only be used while the RegionEntry is still synced.
+   * When done with the offHeapData, null it out if you want to reuse the byte[] later.
    */
-  private @Unretained ObjectChunk dataChunk;
+  private @Unretained StoredObject offHeapData;
   private  byte[] data;
   private  byte userBits=0;
   // length of the data present in the byte array 
@@ -56,8 +56,8 @@ public class BytesAndBitsForCompactor {
   }
 
   
-  public final ObjectChunk getDataChunk() {
-    return this.dataChunk;
+  public final StoredObject getOffHeapData() {
+    return this.offHeapData;
   }
   public final byte[] getBytes() {
     return this.data;
@@ -87,8 +87,8 @@ public class BytesAndBitsForCompactor {
     this.validLength = validLength;    
     this.isReusable = isReusable;
   }
-  public void setChunkData(ObjectChunk c, byte userBits) {
-    this.dataChunk = c;
+  public void setOffHeapData(StoredObject so, byte userBits) {
+    this.offHeapData = so;
     this.userBits = userBits;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/CachedDeserializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/CachedDeserializable.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/CachedDeserializable.java
index 04fa515..9effbf6 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/CachedDeserializable.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/CachedDeserializable.java
@@ -111,4 +111,12 @@ public interface CachedDeserializable extends Sizeable
    * added by this wrapper class.
    */
   public int getValueSizeInBytes();
+  /**
+   * Returns true if the value stored in this memory chunk is a serialized object. Returns false if it is a byte array.
+   */
+  public boolean isSerialized();
+  /**
+   * Return true if the value uses the java heap; false if not.
+   */
+  public boolean usesHeapForStorage();
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskEntry.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskEntry.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskEntry.java
index 327279b..26e49c9 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskEntry.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskEntry.java
@@ -28,7 +28,6 @@ import com.gemstone.gemfire.internal.Assert;
 import com.gemstone.gemfire.internal.ByteArrayDataInput;
 import com.gemstone.gemfire.internal.HeapDataOutputStream;
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.DiskEntry.Helper.ValueWrapper;
 import com.gemstone.gemfire.internal.cache.DiskStoreImpl.AsyncDiskEntry;
 import com.gemstone.gemfire.internal.cache.lru.EnableLRU;
 import com.gemstone.gemfire.internal.cache.lru.LRUClockNode;
@@ -40,11 +39,9 @@ import com.gemstone.gemfire.internal.cache.versions.VersionStamp;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.AddressableMemoryManager;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
 import com.gemstone.gemfire.internal.offheap.ReferenceCountHelper;
-import com.gemstone.gemfire.internal.offheap.Releasable;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Released;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
@@ -200,7 +197,7 @@ public interface DiskEntry extends RegionEntry {
     /**
      * Get the value of an entry that is on disk without
      * faulting it in . It checks for the presence in the buffer also.
-     * This method is used for concurrent map operations, SQLFabric and CQ processing
+     * This method is used for concurrent map operations and CQ processing
      * 
      * @throws DiskAccessException
      * @since 5.1
@@ -208,18 +205,11 @@ public interface DiskEntry extends RegionEntry {
     static Object getValueOnDiskOrBuffer(DiskEntry entry, DiskRegion dr, RegionEntryContext context) {
       @Released Object v = getOffHeapValueOnDiskOrBuffer(entry, dr, context);
       if (v instanceof CachedDeserializable) {
-        if (v instanceof ObjectChunk) {
-          @Released ObjectChunk ohv = (ObjectChunk) v;
-          try {
-            v = ohv.getDeserializedValue(null, null);
-            if (v == ohv) {
-              throw new IllegalStateException("sqlf tried to use getValueOnDiskOrBuffer");
-            }
-          } finally {
-            ohv.release(); // OFFHEAP the offheap ref is decremented here
-          }
-        } else {
-          v = ((CachedDeserializable)v).getDeserializedValue(null, null);
+        CachedDeserializable cd = (CachedDeserializable) v;
+        try {
+          v = cd.getDeserializedValue(null, null);
+        } finally {
+          OffHeapHelper.release(cd); // If v was off-heap it is released here
         }
       }
       return v;
@@ -391,10 +381,11 @@ public interface DiskEntry extends RegionEntry {
         // fix for bug 31757
         return false;
       } else if (v instanceof CachedDeserializable) {
+        CachedDeserializable cd = (CachedDeserializable) v;
         try {
-          if (v instanceof StoredObject && !((StoredObject) v).isSerialized()) {
+          if (!cd.isSerialized()) {
             entry.setSerialized(false);
-            entry.value = ((StoredObject) v).getDeserializedForReading();
+            entry.value = cd.getDeserializedForReading();
             
             //For SQLFire we prefer eager deserialized
 //            if(v instanceof ByteSource) {
@@ -403,7 +394,7 @@ public interface DiskEntry extends RegionEntry {
           } else {
             // don't serialize here if it is not already serialized
             
-            Object tmp = ((CachedDeserializable)v).getValue();
+            Object tmp = cd.getValue();
           //For SQLFire we prefer eager deserialized
 //            if(v instanceof ByteSource) {
 //              entry.setEagerDeserialize();
@@ -679,27 +670,28 @@ public interface DiskEntry extends RegionEntry {
     }
     
     /**
-     * Note that the Chunk this ValueWrapper is created with
+     * Note that the StoredObject this ValueWrapper is created with
      * is unretained so it must be used before the owner of
-     * the chunk releases it.
+     * the StoredObject releases it.
      * Since the RegionEntry that has the value we are writing to
      * disk has it retained we are ok as long as this ValueWrapper's
      * life ends before the RegionEntry sync is released.
-     * Note that this class is only used with uncompressed chunks.
+     * Note that this class is only used with uncompressed StoredObjects.
      */
-    public static class ChunkValueWrapper implements ValueWrapper {
-      private final @Unretained ObjectChunk chunk;
-      public ChunkValueWrapper(ObjectChunk c) {
-        assert !c.isCompressed();
-        this.chunk = c;
+    public static class OffHeapValueWrapper implements ValueWrapper {
+      private final @Unretained StoredObject offHeapData;
+      public OffHeapValueWrapper(StoredObject so) {
+        assert so.hasRefCount();
+        assert !so.isCompressed();
+        this.offHeapData = so;
       }
       @Override
       public boolean isSerialized() {
-        return this.chunk.isSerialized();
+        return this.offHeapData.isSerialized();
       }
       @Override
       public int getLength() {
-        return this.chunk.getDataSize();
+        return this.offHeapData.getDataSize();
       }
       @Override
       public byte getUserBits() {
@@ -716,21 +708,21 @@ public interface DiskEntry extends RegionEntry {
           return;
         }
         if (maxOffset > bb.capacity()) {
-          ByteBuffer chunkbb = this.chunk.createDirectByteBuffer();
+          ByteBuffer chunkbb = this.offHeapData.createDirectByteBuffer();
           if (chunkbb != null) {
             flushable.flush(bb, chunkbb);
             return;
           }
         }
-        final long bbAddress = ObjectChunk.getDirectByteBufferAddress(bb);
+        final long bbAddress = AddressableMemoryManager.getDirectByteBufferAddress(bb);
         if (bbAddress != 0L) {
           int bytesRemaining = maxOffset;
           int availableSpace = bb.remaining();
           long addrToWrite = bbAddress + bb.position();
-          long addrToRead = this.chunk.getAddressForReading(0, maxOffset);
+          long addrToRead = this.offHeapData.getAddressForReadingData(0, maxOffset);
           if (bytesRemaining > availableSpace) {
             do {
-              UnsafeMemoryChunk.copyMemory(addrToRead, addrToWrite, availableSpace);
+              AddressableMemoryManager.copyMemory(addrToRead, addrToWrite, availableSpace);
               bb.position(bb.position()+availableSpace);
               addrToRead += availableSpace;
               bytesRemaining -= availableSpace;
@@ -739,13 +731,13 @@ public interface DiskEntry extends RegionEntry {
               availableSpace = bb.remaining();
             } while (bytesRemaining > availableSpace);
           }
-          UnsafeMemoryChunk.copyMemory(addrToRead, addrToWrite, bytesRemaining);
+          AddressableMemoryManager.copyMemory(addrToRead, addrToWrite, bytesRemaining);
           bb.position(bb.position()+bytesRemaining);
         } else {
-          long addr = this.chunk.getAddressForReading(0, maxOffset);
+          long addr = this.offHeapData.getAddressForReadingData(0, maxOffset);
           final long endAddr = addr + maxOffset;
           while (addr != endAddr) {
-            bb.put(UnsafeMemoryChunk.readAbsoluteByte(addr));
+            bb.put(AddressableMemoryManager.readByte(addr));
             addr++;
             if (!bb.hasRemaining()) {
               flushable.flush();
@@ -755,10 +747,28 @@ public interface DiskEntry extends RegionEntry {
       }
       @Override
       public String getBytesAsString() {
-        return this.chunk.getStringForm();
+        return this.offHeapData.getStringForm();
       }
     }
 
+    /**
+     * Returns true if the given object is off-heap
+     * and it is worth wrapping a reference to it
+     * instead of copying its data to the heap.
+     * Currently all StoredObject's with a refCount are
+     * wrapped.
+     */
+    public static boolean wrapOffHeapReference(Object o) {
+      if (o instanceof StoredObject) {
+        StoredObject so = (StoredObject) o;
+        if (so.hasRefCount()) {
+          // 
+          return true;
+        }
+      }
+      return false;
+    }
+    
     public static ValueWrapper createValueWrapper(Object value, EntryEventImpl event) {
       if (value == Token.INVALID) {
         // even though it is not serialized we say it is because
@@ -782,19 +792,14 @@ public interface DiskEntry extends RegionEntry {
         byte[] bytes;
         if (value instanceof CachedDeserializable) {
           CachedDeserializable proxy = (CachedDeserializable)value;
-          if (proxy instanceof ObjectChunk) {
-            return new ChunkValueWrapper((ObjectChunk) proxy);
+          if (wrapOffHeapReference(proxy)) {
+            return new OffHeapValueWrapper((StoredObject) proxy);
           }
-          if (proxy instanceof StoredObject) {
-            StoredObject ohproxy = (StoredObject) proxy;
-            isSerializedObject = ohproxy.isSerialized();
-            if (isSerializedObject) {
-              bytes = ohproxy.getSerializedValue();
-            } else {
-              bytes = (byte[]) ohproxy.getDeserializedForReading();
-            }
-          } else {
+          isSerializedObject = proxy.isSerialized();
+          if (isSerializedObject) {
             bytes = proxy.getSerializedValue();
+          } else {
+            bytes = (byte[]) proxy.getDeserializedForReading();
           }
           if (event != null && isSerializedObject) {
             event.setCachedSerializedNewValue(bytes);
@@ -826,15 +831,15 @@ public interface DiskEntry extends RegionEntry {
         // For off-heap it should be faster to pass a reference to the
         // StoredObject instead of using the cached byte[] (unless it is also compressed).
         // Since NIO is used if the chunk of memory is large we can write it
-        // to the file with using the off-heap memory with no extra copying.
+        // to the file using the off-heap memory with no extra copying.
         // So we give preference to getRawNewValue over getCachedSerializedNewValue
         Object rawValue = null;
         if (!event.hasDelta()) {
           // We don't do this for the delta case because getRawNewValue returns delta
           // and we want to write the entire new value to disk.
           rawValue = event.getRawNewValue();
-          if (rawValue instanceof ObjectChunk) {
-            return new ChunkValueWrapper((ObjectChunk) rawValue);
+          if (wrapOffHeapReference(rawValue)) {
+            return new OffHeapValueWrapper((StoredObject) rawValue);
           }
         }
         if (event.getCachedSerializedNewValue() != null) {
@@ -1161,10 +1166,6 @@ public interface DiskEntry extends RegionEntry {
       if (result instanceof CachedDeserializable) {
         result = ((CachedDeserializable)result).getDeserializedValue(null, null);
       }
-      if (result instanceof StoredObject) {
-        ((StoredObject) result).release();
-        throw new IllegalStateException("sqlf tried to use getValueInVMOrDiskWithoutFaultIn");
-      }
       return result;
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskStoreImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskStoreImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskStoreImpl.java
index e4ef21d..e813058 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskStoreImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskStoreImpl.java
@@ -110,10 +110,6 @@ import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.MemoryChunkWithRefCount;
-import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
-import com.gemstone.gemfire.internal.offheap.annotations.Released;
-import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 import com.gemstone.gemfire.internal.util.BlobHelper;
 import com.gemstone.gemfire.pdx.internal.EnumInfo;
 import com.gemstone.gemfire.pdx.internal.PdxField;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
index 19496da..111a6d5 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java
@@ -121,9 +121,6 @@ import com.gemstone.gemfire.internal.cache.wan.parallel.ConcurrentParallelGatewa
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
-import com.gemstone.gemfire.internal.offheap.annotations.Released;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 import com.gemstone.gemfire.internal.sequencelog.RegionLogger;
 import com.gemstone.gemfire.internal.util.concurrent.StoppableCountDownLatch;
@@ -2449,7 +2446,6 @@ public class DistributedRegion extends LocalRegion implements
     boolean fromServer = false;
     EntryEventImpl event = null;
     @Retained Object result = null;
-    boolean incrementUseCountForSqlf = false;
     try {
     {
       if (this.srp != null) {
@@ -2515,7 +2511,6 @@ public class DistributedRegion extends LocalRegion implements
           	((BucketRegion)this).handleWANEvent(event);
           }
           re = basicPutEntry(event, lastModified);
-          incrementUseCountForSqlf = GemFireCacheImpl.sqlfSystem() ;
         } catch (ConcurrentCacheModificationException e) {
           // the cache was modified while we were searching for this entry and
           // the netsearch result was elided.  Return the current value from the cache
@@ -2547,11 +2542,6 @@ public class DistributedRegion extends LocalRegion implements
     } else {
       result = event.getNewValue();     
     }
-    //For SQLFire , we need to increment the use count so that returned
-    //object has use count 2
-    if( incrementUseCountForSqlf && result instanceof ObjectChunk) {
-      ((ObjectChunk)result).retain();
-    }
     return result;
     } finally {
       if (event != null) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryEventImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryEventImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryEventImpl.java
index 6c58790..dfd20ef 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryEventImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/EntryEventImpl.java
@@ -73,7 +73,6 @@ import com.gemstone.gemfire.internal.lang.StringUtils;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
 import com.gemstone.gemfire.internal.offheap.OffHeapRegionEntryHelper;
 import com.gemstone.gemfire.internal.offheap.ReferenceCountHelper;
@@ -834,10 +833,7 @@ public class EntryEventImpl
       }
       boolean doCopyOnRead = getRegion().isCopyOnRead();
       if (ov != null) {
-        if (ov instanceof StoredObject) {
-          // TODO OFFHEAP: returns off-heap PdxInstance
-          return ((StoredObject) ov).getValueAsDeserializedHeapObject();
-        } else
+        // TODO OFFHEAP: returns off-heap PdxInstance
         if (ov instanceof CachedDeserializable) {
           CachedDeserializable cd = (CachedDeserializable)ov;
           if (doCopyOnRead) {
@@ -930,9 +926,9 @@ public class EntryEventImpl
     if (this.offHeapOk) {
       OffHeapHelper.releaseAndTrackOwner(this.newValue, this);
     }
-    if (v instanceof ObjectChunk) {
+    if (isOffHeapReference(v)) {
       ReferenceCountHelper.setReferenceCountOwner(this);
-      if (!((ObjectChunk) v).retain()) {
+      if (!((StoredObject) v).retain()) {
         ReferenceCountHelper.setReferenceCountOwner(null);
         this.newValue = null;
         return;
@@ -946,19 +942,23 @@ public class EntryEventImpl
    * Returns true if this event has a reference to an off-heap new or old value.
    */
   public boolean hasOffHeapValue() {
-    return (this.newValue instanceof ObjectChunk) || (this.oldValue instanceof ObjectChunk);
+    return isOffHeapReference(this.newValue) || isOffHeapReference(this.oldValue);
   }
   
   @Unretained
   protected final Object basicGetNewValue() {
     Object result = this.newValue;
-    if (!this.offHeapOk && result instanceof ObjectChunk) {
+    if (!this.offHeapOk && isOffHeapReference(result)) {
       //this.region.getCache().getLogger().info("DEBUG new value already freed " + System.identityHashCode(result));
       throw new IllegalStateException("Attempt to access off heap value after the EntryEvent was released.");
     }
     return result;
   }
   
+  private static boolean isOffHeapReference(Object ref) {
+    return (ref instanceof StoredObject) && ((StoredObject)ref).hasRefCount();
+  }
+  
   private class OldValueOwner {
     private EntryEventImpl getEvent() {
       return EntryEventImpl.this;
@@ -992,12 +992,10 @@ public class EntryEventImpl
     @Released final Object curOldValue = this.oldValue;
     if (v == curOldValue) return;
     if (this.offHeapOk) {
-      if (curOldValue instanceof ObjectChunk) {
-        if (ReferenceCountHelper.trackReferenceCounts()) {
-          OffHeapHelper.releaseAndTrackOwner(curOldValue, new OldValueOwner());
-        } else {
-          OffHeapHelper.release(curOldValue);
-        }
+      if (ReferenceCountHelper.trackReferenceCounts()) {
+        OffHeapHelper.releaseAndTrackOwner(curOldValue, new OldValueOwner());
+      } else {
+        OffHeapHelper.release(curOldValue);
       }
     }
     
@@ -1008,17 +1006,18 @@ public class EntryEventImpl
   private void retainAndSetOldValue(@Retained(ENTRY_EVENT_OLD_VALUE) Object v) {
     if (v == this.oldValue) return;
     
-    if (v instanceof ObjectChunk) {
+    if (isOffHeapReference(v)) {
+      StoredObject so = (StoredObject) v;
       if (ReferenceCountHelper.trackReferenceCounts()) {
         ReferenceCountHelper.setReferenceCountOwner(new OldValueOwner());
-        boolean couldNotRetain = (!((ObjectChunk) v).retain());
+        boolean couldNotRetain = (!so.retain());
         ReferenceCountHelper.setReferenceCountOwner(null);
         if (couldNotRetain) {
           this.oldValue = null;
           return;
         }
       } else {
-        if (!((ObjectChunk) v).retain()) {
+        if (!so.retain()) {
           this.oldValue = null;
           return;
         }
@@ -1031,7 +1030,7 @@ public class EntryEventImpl
   private Object basicGetOldValue() {
     @Unretained(ENTRY_EVENT_OLD_VALUE)
     Object result = this.oldValue;
-    if (!this.offHeapOk && result instanceof ObjectChunk) {
+    if (!this.offHeapOk && isOffHeapReference(result)) {
       //this.region.getCache().getLogger().info("DEBUG old value already freed " + System.identityHashCode(result));
       throw new IllegalStateException("Attempt to access off heap value after the EntryEvent was released.");
     }
@@ -1056,7 +1055,6 @@ public class EntryEventImpl
   }
   /**
    * Just like getRawOldValue except if the raw old value is off-heap deserialize it.
-   * Note that in some cases sqlf ignores the request to deserialize.
    */
   @Unretained(ENTRY_EVENT_OLD_VALUE)
   public final Object getOldValueAsOffHeapDeserializedOrRaw() {
@@ -1107,11 +1105,8 @@ public class EntryEventImpl
         // I'm not sure this can even happen
         return AbstractRegion.handleNotAvailable(nv);
       }
-      if (nv instanceof StoredObject) {
-        // TODO OFFHEAP currently we copy offheap new value to the heap here. Check callers of this method to see if they can be optimized to use offheap values.
-        // TODO OFFHEAP: returns off-heap PdxInstance
-        return ((StoredObject) nv).getValueAsDeserializedHeapObject();
-      } else
+      // TODO OFFHEAP currently we copy offheap new value to the heap here. Check callers of this method to see if they can be optimized to use offheap values.
+      // TODO OFFHEAP: returns off-heap PdxInstance
       if (nv instanceof CachedDeserializable) {
         CachedDeserializable cd = (CachedDeserializable)nv;
         Object v = null;
@@ -1284,18 +1279,16 @@ public class EntryEventImpl
     @Unretained(ENTRY_EVENT_NEW_VALUE)
     final Object tmp = basicGetNewValue();
     if (tmp instanceof CachedDeserializable) {
-      if (tmp instanceof StoredObject) {
-        if (!((StoredObject) tmp).isSerialized()) {
-          // TODO OFFHEAP can we handle offheap byte[] better?
-          return null;
-        }
+      CachedDeserializable cd = (CachedDeserializable) tmp;
+      if (!cd.isSerialized()) {
+        // TODO OFFHEAP can we handle offheap byte[] better?
+        return null;
       }
       byte[] bytes = this.newValueBytes;
       if (bytes == null) {
         bytes = this.cachedSerializedNewValue;
       }
-      return new SerializedCacheValueImpl(this, getRegion(), this.re,
-          (CachedDeserializable)tmp, bytes);
+      return new SerializedCacheValueImpl(this, getRegion(), this.re, cd, bytes);
     } else {
       // Note we return null even if cachedSerializedNewValue is not null.
       // This is because some callers of this method use it to indicate
@@ -1360,7 +1353,7 @@ public class EntryEventImpl
       @Unretained(ENTRY_EVENT_NEW_VALUE)
       final StoredObject so = (StoredObject) nv;
       final boolean isSerialized = so.isSerialized();
-      if (nv instanceof ObjectChunk) {
+      if (so.hasRefCount()) {
         if (importer.isUnretainedNewReferenceOk()) {
           importer.importNewObject(nv, isSerialized);
         } else {
@@ -1447,7 +1440,7 @@ public class EntryEventImpl
     if (ov instanceof StoredObject) {
       final StoredObject so = (StoredObject) ov;
       final boolean isSerialized = so.isSerialized();
-      if (ov instanceof ObjectChunk) {
+      if (so.hasRefCount()) {
         if (importer.isUnretainedOldReferenceOk()) {
           importer.importOldObject(ov, isSerialized);
         } else {
@@ -1501,7 +1494,6 @@ public class EntryEventImpl
   }
   /**
    * Just like getRawNewValue(true) except if the raw new value is off-heap deserialize it.
-   * Note that in some cases sqlf ignores the request to deserialize.
    */
   @Unretained(ENTRY_EVENT_NEW_VALUE)
   public final Object getNewValueAsOffHeapDeserializedOrRaw() {
@@ -1518,16 +1510,7 @@ public class EntryEventImpl
    */
   @Retained(ENTRY_EVENT_NEW_VALUE)
   public StoredObject getOffHeapNewValue() {
-    final Object tmp = basicGetNewValue();
-    if (tmp instanceof StoredObject) {
-      StoredObject result = (StoredObject) tmp;
-      if (!result.retain()) {
-        return null;
-      }
-      return result;
-    } else {
-      return null;
-    }
+    return convertToStoredObject(basicGetNewValue());
   }
   
   /**
@@ -1536,28 +1519,23 @@ public class EntryEventImpl
    */
   @Retained(ENTRY_EVENT_OLD_VALUE)
   public StoredObject getOffHeapOldValue() {
-    final Object tmp = basicGetOldValue();
-    if (tmp instanceof StoredObject) {
-      StoredObject result = (StoredObject) tmp;
-      if (!result.retain()) {
-        return null;
-      }
-      return result;
-    } else {
+    return convertToStoredObject(basicGetOldValue());
+  }
+
+  private static StoredObject convertToStoredObject(final Object tmp) {
+    if (!(tmp instanceof StoredObject)) {
+      return null;
+    }
+    StoredObject result = (StoredObject) tmp;
+    if (!result.retain()) {
       return null;
     }
+    return result;
   }
-
-  /**
-   * Result may be unretained because sqlf getDeserializedForReading returns unretained.
-   */
+  
   public final Object getDeserializedValue() {
     if (this.delta == null) {
       final Object val = basicGetNewValue();
-      if (val instanceof StoredObject) {
-        // TODO OFFHEAP: returns off-heap PdxInstance
-        return ((StoredObject) val).getValueAsDeserializedHeapObject();
-      } else 
       if (val instanceof CachedDeserializable) {
         return ((CachedDeserializable)val).getDeserializedForReading();
       }
@@ -1869,8 +1847,8 @@ public class EntryEventImpl
     Object preparedV = reentry.prepareValueForCache(this.region, v, this, this.hasDelta());
     if (preparedV != v) {
       v = preparedV;
-      if (v instanceof ObjectChunk) {
-        if (!((ObjectChunk) v).isCompressed()) { // fix bug 52109
+      if (v instanceof StoredObject) {
+        if (!((StoredObject) v).isCompressed()) { // fix bug 52109
           // If we put it off heap and it is not compressed then remember that value.
           // Otherwise we want to remember the decompressed value in the event.
           basicSetNewValue(v);
@@ -1931,8 +1909,8 @@ public class EntryEventImpl
       success = true;
     }
     } finally {
-      if (!success && reentry instanceof OffHeapRegionEntry && v instanceof ObjectChunk) {
-        OffHeapRegionEntryHelper.releaseEntry((OffHeapRegionEntry)reentry, (ObjectChunk)v);
+      if (!success && reentry instanceof OffHeapRegionEntry && v instanceof StoredObject) {
+        OffHeapRegionEntryHelper.releaseEntry((OffHeapRegionEntry)reentry, (StoredObject)v);
       }      
     }
     if (logger.isTraceEnabled()) {
@@ -2230,9 +2208,9 @@ public class EntryEventImpl
 
   /**
    * If a PdxInstance is returned then it will have an unretained reference
-   * to Chunk's off-heap address.
+   * to the StoredObject's off-heap address.
    */
-  public static @Unretained Object deserializeChunk(ObjectChunk bytes) {
+  public static @Unretained Object deserializeOffHeap(StoredObject bytes) {
     if (bytes == null)
       return null;
     try {
@@ -2418,9 +2396,7 @@ public class EntryEventImpl
         Object nv = basicGetNewValue();
         boolean newValueSerialized = nv instanceof CachedDeserializable;
         if (newValueSerialized) {
-          if (nv instanceof StoredObject) {
-            newValueSerialized = ((StoredObject) nv).isSerialized();
-          }
+          newValueSerialized = ((CachedDeserializable) nv).isSerialized();
         }
         out.writeBoolean(newValueSerialized);
         if (newValueSerialized) {
@@ -2443,9 +2419,7 @@ public class EntryEventImpl
       Object ov = basicGetOldValue();
       boolean oldValueSerialized = ov instanceof CachedDeserializable;
       if (oldValueSerialized) {
-        if (ov instanceof StoredObject) {
-          oldValueSerialized = ((StoredObject) ov).isSerialized();
-        }
+        oldValueSerialized = ((CachedDeserializable) ov).isSerialized();
       }
       out.writeBoolean(oldValueSerialized);
       if (oldValueSerialized) {
@@ -2517,14 +2491,12 @@ public class EntryEventImpl
     @Unretained(ENTRY_EVENT_OLD_VALUE)
     final Object tmp = basicGetOldValue();
     if (tmp instanceof CachedDeserializable) {
-      if (tmp instanceof StoredObject) {
-        if (!((StoredObject) tmp).isSerialized()) {
-          // TODO OFFHEAP can we handle offheap byte[] better?
-          return null;
-        }
+      CachedDeserializable cd = (CachedDeserializable) tmp;
+      if (!cd.isSerialized()) {
+        // TODO OFFHEAP can we handle offheap byte[] better?
+        return null;
       }
-      return new SerializedCacheValueImpl(this, this.region, this.re,
-          (CachedDeserializable)tmp, this.oldValueBytes);
+      return new SerializedCacheValueImpl(this, this.region, this.re, cd, this.oldValueBytes);
     }
     else {
       return null;
@@ -2881,7 +2853,7 @@ public class EntryEventImpl
     private final byte[] serializedValue;
     
     SerializedCacheValueImpl(EntryEventImpl event, Region r, RegionEntry re, @Unretained CachedDeserializable cd, byte[] serializedBytes) {
-      if (cd instanceof ObjectChunk) {
+      if (isOffHeapReference(cd)) {
         this.event = event;
       } else {
         this.event = null;
@@ -2958,6 +2930,16 @@ public class EntryEventImpl
     public void sendTo(DataOutput out) throws IOException {
       DataSerializer.writeObject(getCd(), out);
     }
+
+    @Override
+    public boolean isSerialized() {
+      return getCd().isSerialized();
+    }
+
+    @Override
+    public boolean usesHeapForStorage() {
+      return getCd().usesHeapForStorage();
+    }
   }
 //////////////////////////////////////////////////////////////////////////////////////////
   
@@ -3060,14 +3042,14 @@ public class EntryEventImpl
     Object nv = basicGetNewValue();
     this.offHeapOk = false;
     
-    if (ov instanceof ObjectChunk) {
+    if (ov instanceof StoredObject) {
       //this.region.getCache().getLogger().info("DEBUG freeing ref to old value on " + System.identityHashCode(ov));
       if (ReferenceCountHelper.trackReferenceCounts()) {
         ReferenceCountHelper.setReferenceCountOwner(new OldValueOwner());
-        ((ObjectChunk) ov).release();
+        ((StoredObject) ov).release();
         ReferenceCountHelper.setReferenceCountOwner(null);
       } else {
-        ((ObjectChunk) ov).release();
+        ((StoredObject) ov).release();
       }
     }
     OffHeapHelper.releaseAndTrackOwner(nv, this);
@@ -3078,7 +3060,7 @@ public class EntryEventImpl
    * Once this is called on an event it does not need to have release called.
    */
   public void disallowOffHeapValues() {
-    if (this.newValue instanceof ObjectChunk || this.oldValue instanceof ObjectChunk) {
+    if (isOffHeapReference(this.newValue) || isOffHeapReference(this.oldValue)) {
       throw new IllegalStateException("This event does not support off-heap values");
     }
     this.offHeapOk = false;
@@ -3087,12 +3069,11 @@ public class EntryEventImpl
   /**
    * This copies the off-heap new and/or old value to the heap.
    * As a result the current off-heap new/old will be released.
-   * @throws IllegalStateException if called with an event for sqlf data.
    */
   @Released({ENTRY_EVENT_NEW_VALUE, ENTRY_EVENT_OLD_VALUE})
   public void copyOffHeapToHeap() {
     Object ov = basicGetOldValue();
-    if (ov instanceof ObjectChunk) {
+    if (isOffHeapReference(ov)) {
       if (ReferenceCountHelper.trackReferenceCounts()) {
         ReferenceCountHelper.setReferenceCountOwner(new OldValueOwner());
         this.oldValue = OffHeapHelper.copyAndReleaseIfNeeded(ov);
@@ -3102,19 +3083,19 @@ public class EntryEventImpl
       }
     }
     Object nv = basicGetNewValue();
-    if (nv instanceof ObjectChunk) {
+    if (isOffHeapReference(nv)) {
       ReferenceCountHelper.setReferenceCountOwner(this);
       this.newValue = OffHeapHelper.copyAndReleaseIfNeeded(nv);
       ReferenceCountHelper.setReferenceCountOwner(null);
     }
-    if (this.newValue instanceof ObjectChunk || this.oldValue instanceof ObjectChunk) {
+    if (isOffHeapReference(this.newValue) || isOffHeapReference(this.oldValue)) {
       throw new IllegalStateException("event's old/new value still off-heap after calling copyOffHeapToHeap");
     }
     this.offHeapOk = false;
   }
 
   public boolean isOldValueOffHeap() {
-    return this.oldValue instanceof ObjectChunk;
+    return isOffHeapReference(this.oldValue);
   }
   public final boolean isFetchFromHDFS() {
     return fetchFromHDFS;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
index b6d8c49..966130a 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
@@ -203,7 +203,6 @@ import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
 import com.gemstone.gemfire.internal.offheap.ReferenceCountHelper;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
@@ -1423,6 +1422,7 @@ public class LocalRegion extends AbstractRegion
   public Object getRetained(Object key, Object aCallbackArgument,
       boolean generateCallbacks, boolean disableCopyOnRead,
       ClientProxyMembershipID requestingClient, EntryEventImpl clientEvent, boolean returnTombstones, boolean opScopeIsLocal) throws TimeoutException, CacheLoaderException {
+    // TODO OFFHEAP: the last parameter "retainResult" should be true for getRetained. Need to look into what it is being set to false.
     return get(key, aCallbackArgument, generateCallbacks, disableCopyOnRead, true, requestingClient, clientEvent, returnTombstones, opScopeIsLocal, true, false);
   }
   /**
@@ -1585,14 +1585,7 @@ public class LocalRegion extends AbstractRegion
           } else if (!disableCopyOnRead) {
             result = conditionalCopy(result);
           }
-          //For sqlf since the deserialized value is nothing but chunk
-          // before returning the found value increase its use count
-          if(GemFireCacheImpl.sqlfSystem() && result instanceof ObjectChunk) {
-            if(!((ObjectChunk)result).retain()) {
-              return null;
-            }
-          }
-          // what was a miss is now a hit
+         // what was a miss is now a hit
           RegionEntry re = null;
           if (isCreate) {
             re = basicGetEntry(keyInfo.getKey());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/Oplog.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/Oplog.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/Oplog.java
index 3a2d1ed..94e61fb 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/Oplog.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/Oplog.java
@@ -4592,8 +4592,8 @@ public final class Oplog implements CompactableOplog, Flushable {
         // TODO: compaction needs to get version?
         byte userBits = wrapper.getBits();
         ValueWrapper vw;
-        if (wrapper.getDataChunk() != null) {
-          vw = new DiskEntry.Helper.ChunkValueWrapper(wrapper.getDataChunk());
+        if (wrapper.getOffHeapData() != null) {
+          vw = new DiskEntry.Helper.OffHeapValueWrapper(wrapper.getOffHeapData());
         } else {
           vw = new DiskEntry.Helper.CompactorValueWrapper(wrapper.getBytes(), wrapper.getValidLength());
         }
@@ -4613,8 +4613,8 @@ public final class Oplog implements CompactableOplog, Flushable {
             LocalizedStrings.Oplog_FAILED_WRITING_KEY_TO_0_DUE_TO_FAILURE_IN_ACQUIRING_READ_LOCK_FOR_ASYNCH_WRITING
                 .toLocalizedString(this.diskFile.getPath()), ie, getParent());
       } finally {
-        if (wrapper.getDataChunk() != null) {
-          wrapper.setChunkData(null, (byte) 0);
+        if (wrapper.getOffHeapData() != null) {
+          wrapper.setOffHeapData(null, (byte) 0);
         }
         if (exceptionOccured) {
           did.setValueLength(len);
@@ -6127,8 +6127,8 @@ public final class Oplog implements CompactableOplog, Flushable {
                     // skip this guy his oplogId changed
                     if (!wrapper.isReusable()) {
                       wrapper = new BytesAndBitsForCompactor();
-                    } else if (wrapper.getDataChunk() != null) {
-                      wrapper.setChunkData(null, (byte) 0);
+                    } else if (wrapper.getOffHeapData() != null) {
+                      wrapper.setOffHeapData(null, (byte) 0);
                     }
                     continue;
                   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
index 541c453..5a5de2c 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
@@ -252,7 +252,6 @@ import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
 import com.gemstone.gemfire.internal.sequencelog.RegionLogger;
 import com.gemstone.gemfire.internal.util.TransformUtils;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PreferBytesCachedDeserializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PreferBytesCachedDeserializable.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PreferBytesCachedDeserializable.java
index 7ed88b5..933362d 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PreferBytesCachedDeserializable.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PreferBytesCachedDeserializable.java
@@ -150,8 +150,17 @@ public final class PreferBytesCachedDeserializable implements CachedDeserializab
 
   @Override
   public Version[] getSerializationVersions() {
-    // TODO Auto-generated method stub
     return null;
   }
 
+  @Override
+  public boolean isSerialized() {
+    return true;
+  }
+
+  @Override
+  public boolean usesHeapForStorage() {
+    return true;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RegionEntry.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RegionEntry.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RegionEntry.java
index e2cfb90..08101c2 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RegionEntry.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RegionEntry.java
@@ -31,7 +31,6 @@ import com.gemstone.gemfire.internal.cache.lru.NewLRUClockHand;
 import com.gemstone.gemfire.internal.cache.versions.VersionSource;
 import com.gemstone.gemfire.internal.cache.versions.VersionStamp;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
-import com.gemstone.gemfire.internal.offheap.MemoryChunkWithRefCount;
 import com.gemstone.gemfire.internal.offheap.annotations.Released;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
@@ -237,10 +236,9 @@ public interface RegionEntry {
    */
   public void setValue(RegionEntryContext context, Object value, EntryEventImpl event) throws RegionClearedException;
   /**
-   * Obtain and return the value of this entry using {@link #_getValue()}.
-   * If the value is a MemoryChunkWithRefCount then increment its refcount.
-   * WARNING: if a MemoryChunkWithRefCount is returned then the caller MUST
-   * call {@link MemoryChunkWithRefCount#release()}.
+   * Obtain, retain and return the value of this entry.
+   * WARNING: if a StoredObject is returned and it has a refCount then the caller MUST
+   * make sure that {@link StoredObject#release()} before the returned object is garbage collected.
    * 
    * This is only retained in off-heap subclasses.  However, it's marked as
    * Retained here so that callers are aware that the value may be retained.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RemoteDestroyMessage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RemoteDestroyMessage.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RemoteDestroyMessage.java
index a3c9402..4a8c101 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RemoteDestroyMessage.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/RemoteDestroyMessage.java
@@ -210,10 +210,10 @@ public class RemoteDestroyMessage extends RemoteOperationMessageWithDirectReply
       this.hasOldValue = true;
       CachedDeserializable cd = (CachedDeserializable) event.getSerializedOldValue();
       if (cd != null) {
-        if (cd instanceof StoredObject && !((StoredObject) cd).isSerialized()) {
+        if (!cd.isSerialized()) {
           // it is a byte[]
           this.oldValueIsSerialized = false;
-          setOldValBytes((byte[]) ((StoredObject) cd).getDeserializedForReading());
+          setOldValBytes((byte[]) cd.getDeserializedForReading());
         } else {
           this.oldValueIsSerialized = true;
           Object o = cd.getValue();



[43/45] incubator-geode git commit: GEODE-1070: use log4j in off-heap code

Posted by kl...@apache.org.
GEODE-1070: use log4j in off-heap code


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/ce8d0876
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/ce8d0876
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/ce8d0876

Branch: refs/heads/feature/GEODE-1050
Commit: ce8d0876dc20cbeaf7c444d84f236c254534658f
Parents: 2e00d5d
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Wed Mar 9 16:48:49 2016 -0800
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Tue Mar 15 10:33:58 2016 -0700

----------------------------------------------------------------------
 .../internal/InternalDistributedSystem.java     |  2 +-
 .../cache/control/OffHeapMemoryMonitor.java     | 45 ++++++++--------
 .../internal/offheap/FreeListManager.java       | 20 +++----
 .../internal/offheap/OffHeapStorage.java        |  9 ++--
 .../OffHeapStoredObjectAddressStack.java        |  6 +--
 .../offheap/SimpleMemoryAllocatorImpl.java      | 47 +++++++----------
 .../internal/offheap/FreeListManagerTest.java   |  5 +-
 .../offheap/OffHeapHelperJUnitTest.java         |  5 +-
 .../OffHeapRegionEntryHelperJUnitTest.java      |  4 +-
 .../offheap/OffHeapStorageJUnitTest.java        | 12 ++---
 ...ffHeapStoredObjectAddressStackJUnitTest.java |  9 ++--
 .../offheap/OffHeapStoredObjectJUnitTest.java   |  4 +-
 .../offheap/SimpleMemoryAllocatorJUnitTest.java | 55 ++++----------------
 13 files changed, 82 insertions(+), 141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
index 92cb9f8..8fc884a 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
@@ -614,7 +614,7 @@ public class InternalDistributedSystem
 
     final long offHeapMemorySize = OffHeapStorage.parseOffHeapMemorySize(getConfig().getOffHeapMemorySize());
 
-    this.offHeapStore = OffHeapStorage.createOffHeapStorage(getLogWriter(), this, offHeapMemorySize, this);
+    this.offHeapStore = OffHeapStorage.createOffHeapStorage(this, offHeapMemorySize, this);
     
     // Note: this can only happen on a linux system
     if (getConfig().getLockMemory()) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
index 3ab39ea..100d560 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
@@ -21,8 +21,6 @@ import java.util.Set;
 import org.apache.logging.log4j.Logger;
 
 import com.gemstone.gemfire.CancelException;
-import com.gemstone.gemfire.LogWriter;
-import com.gemstone.gemfire.i18n.LogWriterI18n;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.internal.cache.control.InternalResourceManager.ResourceType;
 import com.gemstone.gemfire.internal.cache.control.MemoryThresholds.MemoryState;
@@ -30,6 +28,7 @@ import com.gemstone.gemfire.internal.cache.control.ResourceAdvisor.ResourceManag
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
+import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.offheap.MemoryAllocator;
 import com.gemstone.gemfire.internal.offheap.MemoryUsageListener;
 
@@ -67,7 +66,6 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
    * does not have off-heap memory. So we need to handle memoryAllocator being null.
    */
   private final MemoryAllocator memoryAllocator;
-  private final LogWriterI18n log;
 
   OffHeapMemoryMonitor(final InternalResourceManager resourceManager, final GemFireCacheImpl cache, final MemoryAllocator memoryAllocator, final ResourceManagerStats stats) {
     this.resourceManager = resourceManager;
@@ -80,7 +78,6 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
       this.thresholds = new MemoryThresholds(this.memoryAllocator.getTotalMemory());
     }
     
-    this.log = cache.getLoggerI18n();
     this.offHeapMemoryUsageListener = new OffHeapMemoryUsageListener();
   }
 
@@ -439,28 +436,28 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
   void processLocalEvent(MemoryEvent event) {
     assert event.isLocal();
 
-    if (this.log.fineEnabled()) {
-      this.log.fine("Handling new local event " + event);
+    if (logger.isDebugEnabled()) {
+      logger.debug("Handling new local event {}", event);
     }
 
     if (event.getState().isCritical() && !event.getPreviousState().isCritical()) {
-      this.log.error(LocalizedStrings.MemoryMonitor_MEMBER_ABOVE_CRITICAL_THRESHOLD,
-          new Object[] { event.getMember(), "off-heap" });
+      logger.error(LocalizedMessage.create(LocalizedStrings.MemoryMonitor_MEMBER_ABOVE_CRITICAL_THRESHOLD,
+          new Object[] { event.getMember(), "off-heap" }));
     } else if (!event.getState().isCritical() && event.getPreviousState().isCritical()) {
-      this.log.error(LocalizedStrings.MemoryMonitor_MEMBER_BELOW_CRITICAL_THRESHOLD,
-          new Object[] { event.getMember(), "off-heap" });
+      logger.error(LocalizedMessage.create(LocalizedStrings.MemoryMonitor_MEMBER_BELOW_CRITICAL_THRESHOLD,
+          new Object[] { event.getMember(), "off-heap" }));
     }
 
     if (event.getState().isEviction() && !event.getPreviousState().isEviction()) {
-      this.log.info(LocalizedStrings.MemoryMonitor_MEMBER_ABOVE_HIGH_THRESHOLD,
-          new Object[] { event.getMember(), "off-heap" });
+      logger.info(LocalizedMessage.create(LocalizedStrings.MemoryMonitor_MEMBER_ABOVE_HIGH_THRESHOLD,
+          new Object[] { event.getMember(), "off-heap" }));
     } else if (!event.getState().isEviction() && event.getPreviousState().isEviction()) {
-      this.log.info(LocalizedStrings.MemoryMonitor_MEMBER_BELOW_HIGH_THRESHOLD,
-          new Object[] { event.getMember(),  "off-heap" });
+      logger.info(LocalizedMessage.create(LocalizedStrings.MemoryMonitor_MEMBER_BELOW_HIGH_THRESHOLD,
+          new Object[] { event.getMember(),  "off-heap" }));
     }
 
-    if (this.log.fineEnabled()) {
-      this.log.fine("Informing remote members of event " + event);
+    if (logger.isDebugEnabled()) {
+      logger.debug("Informing remote members of event {}", event);
     }
     
     this.resourceAdvisor.updateRemoteProfile();
@@ -475,15 +472,11 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
       } catch (CancelException ignore) {
         // ignore
       } catch (Throwable t) {
-        this.log.error(LocalizedStrings.MemoryMonitor_EXCEPTION_OCCURED_WHEN_NOTIFYING_LISTENERS, t);
+        logger.error(LocalizedMessage.create(LocalizedStrings.MemoryMonitor_EXCEPTION_OCCURED_WHEN_NOTIFYING_LISTENERS), t);
       }
     }
   }
   
-  LogWriter getLogWriter() {
-    return this.log.convertToLogWriter();
-  }
-  
   @Override
   public String toString() {
     return "OffHeapMemoryMonitor [thresholds=" + this.thresholds + ", mostRecentEvent=" + this.mostRecentEvent + "]";
@@ -508,7 +501,9 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
     
     @Override
     public void run() {
-      getLogWriter().fine("OffHeapMemoryUsageListener is starting " + this);
+      if (logger.isDebugEnabled()) {
+        logger.debug("OffHeapMemoryUsageListener is starting {}", this);
+      }
       int callsWithNoEvent = 0;
       final int MS_TIMEOUT = 10;
       final int MAX_CALLS_WITH_NO_EVENT = 1000/MS_TIMEOUT;
@@ -541,7 +536,7 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
               this.wait(MS_TIMEOUT);
               this.deliverEvent = false;
             } catch (InterruptedException iex) {
-              getLogWriter().warning("OffHeapMemoryUsageListener was interrupted " + this);
+              logger.warn("OffHeapMemoryUsageListener was interrupted {}", this);
               this.stopRequested = true;
               exitRunLoop = true;
             }
@@ -549,7 +544,9 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
         }
       }
         
-      getLogWriter().fine("OffHeapMemoryUsageListener is stopping " + this);
+      if (logger.isDebugEnabled()) {
+        logger.debug("OffHeapMemoryUsageListener is stopping {}", this);
+      }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
index ed7035a..05010ab 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
@@ -29,14 +29,17 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReferenceArray;
 
-import com.gemstone.gemfire.LogWriter;
+import org.apache.logging.log4j.Logger;
+
 import com.gemstone.gemfire.OutOfOffHeapMemoryException;
-import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.internal.logging.LogService;
 
 /**
  * Manages the free lists for a SimpleMemoryAllocatorImpl
  */
 public class FreeListManager {
+  static final Logger logger = LogService.getLogger();
+
   /** The MemoryChunks that this allocator is managing by allocating smaller chunks of them.
    * The contents of this array never change.
    */
@@ -232,13 +235,10 @@ public class FreeListManager {
   }
 
   private void logOffHeapState(int chunkSize) {
-    if (InternalDistributedSystem.getAnyInstance() != null) {
-      LogWriter lw = InternalDistributedSystem.getAnyInstance().getLogWriter();
-      logOffHeapState(lw, chunkSize);
-    }
+    logOffHeapState(logger, chunkSize);
   }
 
-  void logOffHeapState(LogWriter lw, int chunkSize) {
+  void logOffHeapState(Logger lw, int chunkSize) {
     OffHeapMemoryStats stats = this.ma.getStats();
     lw.info("OutOfOffHeapMemory allocating size of " + chunkSize + ". allocated=" + this.allocatedSize.get() + " compactions=" + this.compactCount.get() + " objects=" + stats.getObjects() + " free=" + stats.getFreeMemory() + " fragments=" + stats.getFragments() + " largestFragment=" + stats.getLargestFragment() + " fragmentation=" + stats.getFragmentation());
     logFragmentState(lw);
@@ -246,12 +246,12 @@ public class FreeListManager {
     logHugeState(lw);
   }
 
-  private void logHugeState(LogWriter lw) {
+  private void logHugeState(Logger lw) {
     for (OffHeapStoredObject c: this.hugeChunkSet) {
       lw.info("Free huge of size " + c.getSize());
     }
   }
-  private void logTinyState(LogWriter lw) {
+  private void logTinyState(Logger lw) {
     for (int i=0; i < this.tinyFreeLists.length(); i++) {
       OffHeapStoredObjectAddressStack cl = this.tinyFreeLists.get(i);
       if (cl != null) {
@@ -259,7 +259,7 @@ public class FreeListManager {
       }
     }
   }
-  private void logFragmentState(LogWriter lw) {
+  private void logFragmentState(Logger lw) {
     for (Fragment f: this.fragmentList) {
       int freeSpace = f.freeSpace();
       if (freeSpace > 0) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
index 3156067..9c6c75a 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
@@ -18,7 +18,6 @@ package com.gemstone.gemfire.internal.offheap;
 
 import java.lang.reflect.Method;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.StatisticDescriptor;
 import com.gemstone.gemfire.Statistics;
 import com.gemstone.gemfire.StatisticsFactory;
@@ -171,7 +170,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
    * Constructs a MemoryAllocator for off-heap storage.
    * @return MemoryAllocator for off-heap storage
    */
-  public static MemoryAllocator createOffHeapStorage(LogWriter lw, StatisticsFactory sf, long offHeapMemorySize, DistributedSystem system) {
+  public static MemoryAllocator createOffHeapStorage(StatisticsFactory sf, long offHeapMemorySize, DistributedSystem system) {
     if (offHeapMemorySize == 0 || Boolean.getBoolean(InternalLocator.FORCE_LOCATOR_DM_TYPE)) {
       // Checking the FORCE_LOCATOR_DM_TYPE is a quick hack to keep our locator from allocating off heap memory.
       return null;
@@ -189,10 +188,10 @@ public class OffHeapStorage implements OffHeapMemoryStats {
     }
     // ooohml provides the hook for disconnecting and closing cache on OutOfOffHeapMemoryException
     OutOfOffHeapMemoryListener ooohml = new DisconnectingOutOfOffHeapMemoryListener((InternalDistributedSystem) system);
-    return basicCreateOffHeapStorage(lw, sf, offHeapMemorySize, ooohml);
+    return basicCreateOffHeapStorage(sf, offHeapMemorySize, ooohml);
   }
   
-  static MemoryAllocator basicCreateOffHeapStorage(LogWriter lw, StatisticsFactory sf, long offHeapMemorySize, OutOfOffHeapMemoryListener ooohml) {
+  static MemoryAllocator basicCreateOffHeapStorage(StatisticsFactory sf, long offHeapMemorySize, OutOfOffHeapMemoryListener ooohml) {
     final OffHeapMemoryStats stats = new OffHeapStorage(sf);
 
    // determine off-heap and slab sizes
@@ -200,7 +199,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
 
     final int slabCount = calcSlabCount(maxSlabSize, offHeapMemorySize);
 
-    return SimpleMemoryAllocatorImpl.create(ooohml, stats, lw, slabCount, offHeapMemorySize, maxSlabSize);
+    return SimpleMemoryAllocatorImpl.create(ooohml, stats, slabCount, offHeapMemorySize, maxSlabSize);
   }
   
   private static final long MAX_SLAB_SIZE = Integer.MAX_VALUE;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
index bde30e2..40d0143 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
@@ -16,7 +16,7 @@
  */
 package com.gemstone.gemfire.internal.offheap;
 
-import com.gemstone.gemfire.LogWriter;
+import org.apache.logging.log4j.Logger;
 
 /**
  * A "stack" of addresses of OffHeapStoredObject instances. The stored objects are not kept
@@ -77,7 +77,7 @@ public class OffHeapStoredObjectAddressStack {
     }
     return result;
   }
-  public void logSizes(LogWriter lw, String msg) {
+  public void logSizes(Logger logger, String msg) {
     long headAddr = this.topAddr;
     long addr;
     boolean concurrentModDetected;
@@ -99,7 +99,7 @@ public class OffHeapStoredObjectAddressStack {
         }
         // TODO construct a single log msg
         // that gets reset when concurrentModDetected.
-        lw.info(msg + curSize);
+        logger.info(msg + curSize);
       }
     } while (concurrentModDetected);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
index 209a4a4..f7fa888 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
@@ -28,7 +28,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.logging.log4j.Logger;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.cache.CacheClosedException;
 import com.gemstone.gemfire.cache.Region;
 import com.gemstone.gemfire.cache.RegionService;
@@ -87,10 +86,10 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
 
   private static final boolean DO_EXPENSIVE_VALIDATION = Boolean.getBoolean("gemfire.OFF_HEAP_DO_EXPENSIVE_VALIDATION");
   
-  public static MemoryAllocator create(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, LogWriter lw, 
-      int slabCount, long offHeapMemorySize, long maxSlabSize) {
-    return create(ooohml, stats, lw, slabCount, offHeapMemorySize, maxSlabSize,
-        null, new SlabFactory() {
+  public static MemoryAllocator create(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, int slabCount, 
+      long offHeapMemorySize, long maxSlabSize) {
+    return create(ooohml, stats, slabCount, offHeapMemorySize, maxSlabSize, null,
+        new SlabFactory() {
       @Override
       public Slab create(int size) {
         return new SlabImpl(size);
@@ -98,26 +97,21 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     });
   }
 
-  private static SimpleMemoryAllocatorImpl create(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, LogWriter lw, 
-      int slabCount, long offHeapMemorySize, long maxSlabSize, 
-      Slab[] slabs, SlabFactory slabFactory) {
+  private static SimpleMemoryAllocatorImpl create(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, int slabCount, 
+      long offHeapMemorySize, long maxSlabSize, Slab[] slabs, 
+      SlabFactory slabFactory) {
     SimpleMemoryAllocatorImpl result = singleton;
     boolean created = false;
     try {
     if (result != null) {
-      result.reuse(ooohml, lw, stats, offHeapMemorySize, slabs);
-      if (lw != null) {
-        lw.config("Reusing " + result.getTotalMemory() + " bytes of off-heap memory. The maximum size of a single off-heap object is " + result.freeList.getLargestSlabSize() + " bytes.");
-      }
+      result.reuse(ooohml, stats, offHeapMemorySize, slabs);
+      logger.info("Reusing {}  bytes of off-heap memory. The maximum size of a single off-heap object is {}  bytes.", result.getTotalMemory(), result.freeList.getLargestSlabSize());
       created = true;
       LifecycleListener.invokeAfterReuse(result);
     } else {
       if (slabs == null) {
         // allocate memory chunks
-        //SimpleMemoryAllocatorImpl.cleanupPreviousAllocator();
-        if (lw != null) {
-          lw.config("Allocating " + offHeapMemorySize + " bytes of off-heap memory. The maximum size of a single off-heap object is " + maxSlabSize + " bytes.");
-        }
+        logger.info("Allocating {} bytes of off-heap memory. The maximum size of a single off-heap object is {} bytes.", offHeapMemorySize, maxSlabSize);
         slabs = new SlabImpl[slabCount];
         long uncreatedMemory = offHeapMemorySize;
         for (int i=0; i < slabCount; i++) {
@@ -131,9 +125,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
             }
           } catch (OutOfMemoryError err) {
             if (i > 0) {
-              if (lw != null) {
-                lw.severe("Off-heap memory creation failed after successfully allocating " + (i*maxSlabSize) + " bytes of off-heap memory.");
-              }
+              logger.error("Off-heap memory creation failed after successfully allocating {} bytes of off-heap memory.", (i*maxSlabSize));
             }
             for (int j=0; j < i; j++) {
               if (slabs[j] != null) {
@@ -162,10 +154,10 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     }
     return result;
   }
-  static SimpleMemoryAllocatorImpl createForUnitTest(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, LogWriter lw, 
-      int slabCount, long offHeapMemorySize, long maxSlabSize, SlabFactory memChunkFactory) {
-    return create(ooohml, stats, lw, slabCount, offHeapMemorySize, maxSlabSize, 
-        null, memChunkFactory);
+  static SimpleMemoryAllocatorImpl createForUnitTest(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, int slabCount, 
+      long offHeapMemorySize, long maxSlabSize, SlabFactory memChunkFactory) {
+    return create(ooohml, stats, slabCount, offHeapMemorySize, maxSlabSize, null, 
+        memChunkFactory);
   }
   public static SimpleMemoryAllocatorImpl createForUnitTest(OutOfOffHeapMemoryListener oooml, OffHeapMemoryStats stats, Slab[] slabs) {
     int slabCount = 0;
@@ -181,11 +173,11 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
         }
       }
     }
-    return create(oooml, stats, null, slabCount, offHeapMemorySize, maxSlabSize, slabs, null);
+    return create(oooml, stats, slabCount, offHeapMemorySize, maxSlabSize, slabs, null);
   }
   
   
-  private void reuse(OutOfOffHeapMemoryListener oooml, LogWriter lw, OffHeapMemoryStats newStats, long offHeapMemorySize, Slab[] slabs) {
+  private void reuse(OutOfOffHeapMemoryListener oooml, OffHeapMemoryStats newStats, long offHeapMemorySize, Slab[] slabs) {
     if (isClosed()) {
       throw new IllegalStateException("Can not reuse a closed off-heap memory manager.");
     }
@@ -193,9 +185,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
       throw new IllegalArgumentException("OutOfOffHeapMemoryListener is null");
     }
     if (getTotalMemory() != offHeapMemorySize) {
-      if (lw != null) {
-        lw.warning("Using " + getTotalMemory() + " bytes of existing off-heap memory instead of the requested " + offHeapMemorySize);
-      }
+      logger.warn("Using {} bytes of existing off-heap memory instead of the requested {}.", getTotalMemory(), offHeapMemorySize);
     }
     if (!this.freeList.okToReuse(slabs)) {
       throw new IllegalStateException("attempted to reuse existing off-heap memory even though new off-heap memory was allocated");
@@ -213,7 +203,6 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     this.ooohml = oooml;
     this.stats = stats;
 
-    //OSProcess.printStacks(0, InternalDistributedSystem.getAnyInstance().getLogWriter(), false);
     this.stats.setFragments(slabs.length);
     this.stats.setLargestFragment(slabs[0].getSize());
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
index 3787129..382bd98 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicReferenceArray;
 
+import org.apache.logging.log4j.Logger;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -33,8 +34,6 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
-import com.gemstone.gemfire.OutOfOffHeapMemoryException;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)
@@ -736,7 +735,7 @@ public class FreeListManagerTest {
     OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     OffHeapStoredObject.release(c2.getAddress(), this.freeListManager);
     
-    LogWriter lw = mock(LogWriter.class);
+    Logger lw = mock(Logger.class);
     this.freeListManager.logOffHeapState(lw, 1024);
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
index 989abfc..fa4e776 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
@@ -27,7 +27,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.cache.EntryEventImpl;
 import com.gemstone.gemfire.internal.cache.VMCachedDeserializable;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
@@ -47,10 +46,8 @@ public class OffHeapHelperJUnitTest extends AbstractStoredObjectTestBase {
   public void setUp() {
     OutOfOffHeapMemoryListener ooohml = mock(OutOfOffHeapMemoryListener.class);
     OffHeapMemoryStats stats = mock(OffHeapMemoryStats.class);
-    LogWriter lw = mock(LogWriter.class);
 
-    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, lw, 3, OffHeapStorage.MIN_SLAB_SIZE * 3,
-        OffHeapStorage.MIN_SLAB_SIZE);
+    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, 3, OffHeapStorage.MIN_SLAB_SIZE * 3, OffHeapStorage.MIN_SLAB_SIZE);
 
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
index 540bba5..cf47a72 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
@@ -37,7 +37,6 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.compression.Compressor;
 import com.gemstone.gemfire.internal.DSCODE;
 import com.gemstone.gemfire.internal.cache.CachePerfStats;
@@ -65,9 +64,8 @@ public class OffHeapRegionEntryHelperJUnitTest {
   public void setUp() {
     OutOfOffHeapMemoryListener ooohml = mock(OutOfOffHeapMemoryListener.class);
     OffHeapMemoryStats stats = mock(OffHeapMemoryStats.class);
-    LogWriter lw = mock(LogWriter.class);
 
-    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, lw, 1, OffHeapStorage.MIN_SLAB_SIZE * 1, OffHeapStorage.MIN_SLAB_SIZE);
+    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, 1, OffHeapStorage.MIN_SLAB_SIZE * 1, OffHeapStorage.MIN_SLAB_SIZE);
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
index d5db4e4..d878358 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
@@ -122,17 +122,17 @@ public class OffHeapStorageJUnitTest {
   @Test
   public void createOffHeapStorageReturnsNullIfForceLocator() {
     System.setProperty(InternalLocator.FORCE_LOCATOR_DM_TYPE, "true");
-    assertEquals(null, OffHeapStorage.createOffHeapStorage(null, null, 1, null));
+    assertEquals(null, OffHeapStorage.createOffHeapStorage(null, 1, null));
   }
   @Test
   public void createOffHeapStorageReturnsNullIfMemorySizeIsZero() {
-    assertEquals(null, OffHeapStorage.createOffHeapStorage(null, null, 0, null));
+    assertEquals(null, OffHeapStorage.createOffHeapStorage(null, 0, null));
   }
   @Test
   public void exceptionIfSlabCountTooSmall() {
     StatisticsFactory statsFactory = mock(StatisticsFactory.class);
     try {
-      OffHeapStorage.createOffHeapStorage(null, statsFactory, OffHeapStorage.MIN_SLAB_SIZE-1, null);
+      OffHeapStorage.createOffHeapStorage(statsFactory, OffHeapStorage.MIN_SLAB_SIZE-1, null);
     } catch (IllegalArgumentException expected) {
       expected.getMessage().equals("The amount of off heap memory must be at least " + OffHeapStorage.MIN_SLAB_SIZE + " but it was set to " + (OffHeapStorage.MIN_SLAB_SIZE-1));
     }
@@ -141,7 +141,7 @@ public class OffHeapStorageJUnitTest {
   public void exceptionIfDistributedSystemNull() {
     StatisticsFactory statsFactory = mock(StatisticsFactory.class);
     try {
-      OffHeapStorage.createOffHeapStorage(null, statsFactory, OffHeapStorage.MIN_SLAB_SIZE, (DistributedSystem)null);
+      OffHeapStorage.createOffHeapStorage(statsFactory, OffHeapStorage.MIN_SLAB_SIZE, (DistributedSystem)null);
     } catch (IllegalArgumentException expected) {
       expected.getMessage().equals("InternalDistributedSystem is null");
     }
@@ -151,7 +151,7 @@ public class OffHeapStorageJUnitTest {
   public void createOffHeapStorageWorks() {
     StatisticsFactory localStatsFactory = new LocalStatisticsFactory(null);
     InternalDistributedSystem ids = mock(InternalDistributedSystem.class);
-    MemoryAllocator ma = OffHeapStorage.createOffHeapStorage(null, localStatsFactory, OffHeapStorage.MIN_SLAB_SIZE, ids);
+    MemoryAllocator ma = OffHeapStorage.createOffHeapStorage(localStatsFactory, OffHeapStorage.MIN_SLAB_SIZE, ids);
     System.setProperty(SimpleMemoryAllocatorImpl.FREE_OFF_HEAP_MEMORY_PROPERTY, "true");
     ma.close();
   }
@@ -160,7 +160,7 @@ public class OffHeapStorageJUnitTest {
   public void testCreateOffHeapStorage() {
     StatisticsFactory localStatsFactory = new LocalStatisticsFactory(null);
     OutOfOffHeapMemoryListener ooohml = mock(OutOfOffHeapMemoryListener.class);
-    MemoryAllocator ma = OffHeapStorage.basicCreateOffHeapStorage(null, localStatsFactory, 1024*1024, ooohml);
+    MemoryAllocator ma = OffHeapStorage.basicCreateOffHeapStorage(localStatsFactory, 1024*1024, ooohml);
     try {
       OffHeapMemoryStats stats = ma.getStats();
       assertNotNull(stats.getStats());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
index 8040bf7..884787f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
@@ -19,6 +19,8 @@ package com.gemstone.gemfire.internal.offheap;
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
+import org.apache.logging.log4j.Logger;
+
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -28,7 +30,6 @@ import org.junit.experimental.categories.Category;
 import org.mockito.listeners.InvocationListener;
 import org.mockito.listeners.MethodInvocationReport;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)
@@ -87,7 +88,7 @@ public class OffHeapStoredObjectAddressStackJUnitTest {
   @Test
   public void defaultStackLogsNothing() {
     OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
-    LogWriter lw = mock(LogWriter.class, withSettings().invocationListeners(new InvocationListener() {
+    Logger lw = mock(Logger.class, withSettings().invocationListeners(new InvocationListener() {
       @Override
       public void reportInvocation(MethodInvocationReport methodInvocationReport) {
         fail("Unexpected invocation");
@@ -223,7 +224,7 @@ public class OffHeapStoredObjectAddressStackJUnitTest {
       long addr = chunk.getAddress();
       OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
       stack.offer(addr);
-      LogWriter lw = mock(LogWriter.class);
+      Logger lw = mock(Logger.class);
       stack.logSizes(lw, "foo");
       verify(lw).info("foo"+chunkSize);
     } finally {
@@ -278,7 +279,7 @@ public class OffHeapStoredObjectAddressStackJUnitTest {
       long addr = chunk.getAddress();
       TestableSyncChunkStack stack = new TestableSyncChunkStack(ma);
       stack.offer(addr);
-      LogWriter lw = mock(LogWriter.class);
+      Logger lw = mock(Logger.class);
       stack.logSizes(lw, "foo");
       verify(lw).info("foo"+chunkSize);
       verify(lw).info("foo"+stack.chunk2Size);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
index 2f6b32c..956acb4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
@@ -38,7 +38,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.compression.Compressor;
 import com.gemstone.gemfire.internal.DSCODE;
 import com.gemstone.gemfire.internal.HeapDataOutputStream;
@@ -63,9 +62,8 @@ public class OffHeapStoredObjectJUnitTest extends AbstractStoredObjectTestBase {
   public void setUp() {
     OutOfOffHeapMemoryListener ooohml = mock(OutOfOffHeapMemoryListener.class);
     OffHeapMemoryStats stats = mock(OffHeapMemoryStats.class);
-    LogWriter lw = mock(LogWriter.class);
 
-    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, lw, 3, OffHeapStorage.MIN_SLAB_SIZE * 3, OffHeapStorage.MIN_SLAB_SIZE);
+    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, 3, OffHeapStorage.MIN_SLAB_SIZE * 3, OffHeapStorage.MIN_SLAB_SIZE);
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ce8d0876/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
index cc791fc..135aba2 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
@@ -58,62 +58,27 @@ public class SimpleMemoryAllocatorJUnitTest {
     } catch (IllegalArgumentException expected) {
     }
   }
-  /**
-   * Logger that remembers the last severe message
-   */
-  private static class LastSevereLogger extends NullLogWriter {
-    private String lastSevereMessage;
-    private Throwable lastSevereThrowable;
-    
-    private void setLastSevere(String msg, Throwable ex) {
-      this.lastSevereMessage = msg;
-      this.lastSevereThrowable = ex;
-    }
-    public String getLastSevereMessage() {
-      return this.lastSevereMessage;
-    }
-    public Throwable getLastSevereThrowable() {
-      return this.lastSevereThrowable;
-    }
-    @Override
-    public void severe(String msg, Throwable ex) {
-      setLastSevere(msg, ex);
-    }
-    @Override
-    public void severe(String msg) {
-      setLastSevere(msg, null);
-    }
-    @Override
-    public void severe(Throwable ex) {
-      setLastSevere(null, ex);
-    }
-  }
   @Test
   public void testCreate() {
     System.setProperty(SimpleMemoryAllocatorImpl.FREE_OFF_HEAP_MEMORY_PROPERTY, "false");
     {
       NullOutOfOffHeapMemoryListener listener = new NullOutOfOffHeapMemoryListener();
       NullOffHeapMemoryStats stats = new NullOffHeapMemoryStats();
-      LastSevereLogger logger = new LastSevereLogger();
       try {
-        SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, logger, 10, 950, 100,
-            new SlabFactory() {
-          @Override
-          public Slab create(int size) {
-            throw new OutOfMemoryError("expected");
-          }
-        });
+        SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, 10, 950, 100, new SlabFactory() {
+     @Override
+     public Slab create(int size) {
+        throw new OutOfMemoryError("expected");
+     }
+    });
       } catch (OutOfMemoryError expected) {
       }
       assertTrue(listener.isClosed());
       assertTrue(stats.isClosed());
-      assertEquals(null, logger.getLastSevereThrowable());
-      assertEquals(null, logger.getLastSevereMessage());
      }
     {
       NullOutOfOffHeapMemoryListener listener = new NullOutOfOffHeapMemoryListener();
       NullOffHeapMemoryStats stats = new NullOffHeapMemoryStats();
-      LastSevereLogger logger = new LastSevereLogger();
       int MAX_SLAB_SIZE = 100;
       try {
         SlabFactory factory = new SlabFactory() {
@@ -128,13 +93,11 @@ public class SimpleMemoryAllocatorJUnitTest {
             }
           }
         };
-        SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, logger, 10, 950, MAX_SLAB_SIZE, factory);
+        SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, 10, 950, MAX_SLAB_SIZE, factory);
       } catch (OutOfMemoryError expected) {
       }
       assertTrue(listener.isClosed());
       assertTrue(stats.isClosed());
-      assertEquals(null, logger.getLastSevereThrowable());
-      assertEquals("Off-heap memory creation failed after successfully allocating " + MAX_SLAB_SIZE + " bytes of off-heap memory.", logger.getLastSevereMessage());
     }
     {
       NullOutOfOffHeapMemoryListener listener = new NullOutOfOffHeapMemoryListener();
@@ -146,7 +109,7 @@ public class SimpleMemoryAllocatorJUnitTest {
         }
       };
       MemoryAllocator ma = 
-        SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, new NullLogWriter(), 10, 950, 100, factory);
+        SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, 10, 950, 100, factory);
       try {
         assertFalse(listener.isClosed());
         assertFalse(stats.isClosed());
@@ -171,7 +134,7 @@ public class SimpleMemoryAllocatorJUnitTest {
         }
         listener = new NullOutOfOffHeapMemoryListener();
         stats2 = new NullOffHeapMemoryStats();
-        MemoryAllocator ma2 = SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats2, new NullLogWriter(), 10, 950, 100, factory);
+        MemoryAllocator ma2 = SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats2, 10, 950, 100, factory);
         assertSame(ma, ma2);
         assertTrue(stats.isClosed());
         assertFalse(listener.isClosed());



[42/45] incubator-geode git commit: GEODE-1049 Added wait criteria to get internalDistributedSystem instance.

Posted by kl...@apache.org.
GEODE-1049 Added wait criteria to get internalDistributedSystem instance.

Test is looking for InternalDistributedSystem Instance, but it access before
it get initialize. Thus added waiting criteria for that.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/2e00d5d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/2e00d5d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/2e00d5d6

Branch: refs/heads/feature/GEODE-1050
Commit: 2e00d5d61730c11a65d21189bd9b52c9ef058632
Parents: c5d8ea7
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Fri Mar 11 17:18:18 2016 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Tue Mar 15 10:07:48 2016 -0700

----------------------------------------------------------------------
 .../gms/membership/GMSJoinLeaveTestHelper.java  | 24 ++++++++++++++++++++
 1 file changed, 24 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2e00d5d6/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java
index 493c625..17409a4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveTestHelper.java
@@ -21,6 +21,8 @@ import com.gemstone.gemfire.distributed.internal.DM;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
 import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
+import com.gemstone.gemfire.test.dunit.Wait;
+import com.gemstone.gemfire.test.dunit.WaitCriterion;
 
 public class GMSJoinLeaveTestHelper {
 
@@ -43,6 +45,24 @@ public class GMSJoinLeaveTestHelper {
     throw new RuntimeException("This should not have happened. There should be a JoinLeave for every DS");
   }
 
+  private static void waitCriterion() {
+    WaitCriterion waitCriterion = new WaitCriterion() {
+      public boolean done() {
+        try {
+          return getIDS() != null;
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+        return false; // NOTREACHED
+      }
+
+      public String description() {
+        return "Distributed system is null";
+      }
+    };
+    Wait.waitForCriterion(waitCriterion, 10 * 1000, 200, true);
+  }
+  
   private static GMSJoinLeave getGmsJoinLeave() {
     InternalDistributedSystem distributedSystem = getInternalDistributedSystem();
     DM dm = distributedSystem.getDM();
@@ -56,6 +76,10 @@ public class GMSJoinLeaveTestHelper {
   }
 
   private static InternalDistributedSystem getInternalDistributedSystem() {
+    waitCriterion();
+    return getIDS();
+  }
+  private static InternalDistributedSystem getIDS() {
     InternalDistributedSystem distributedSystem = InternalDistributedSystem.getAnyInstance();
     if (distributedSystem == null) {
       Locator locator = Locator.getLocator();


[39/45] incubator-geode git commit: GEODE-1081 remove becomeCoordinator from JoinResponseMessage

Posted by kl...@apache.org.
GEODE-1081 remove becomeCoordinator from JoinResponseMessage

We no longer use becomeCoordinator so it is not needed in JoinResponseMessage.
The code reacting to becomeCoordinator in GMSJoinLeave is also not needed
and has been removed.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/d25e4459
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/d25e4459
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/d25e4459

Branch: refs/heads/feature/GEODE-1050
Commit: d25e445988501052258b14a167221f6b6e8d1c0b
Parents: 7971a77
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Mar 14 09:28:58 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Mon Mar 14 09:34:51 2016 -0700

----------------------------------------------------------------------
 .../membership/gms/membership/GMSJoinLeave.java      |  9 ---------
 .../membership/gms/messages/JoinResponseMessage.java | 15 ---------------
 .../codeAnalysis/sanctionedDataSerializables.txt     |  4 ++--
 3 files changed, 2 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d25e4459/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 85d76d6..2b7893e 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -395,15 +395,6 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
       return isJoined;
     }
 
-    if (response.getBecomeCoordinator()) {
-      logger.info("I am being told to become the membership coordinator by {}", coord);
-      synchronized (viewInstallationLock) {
-        this.currentView = response.getCurrentView();
-        becomeCoordinator(null);
-      }
-      return true;
-    }
-
     this.birthViewId = response.getMemberID().getVmViewId();
     this.localAddress.setVmViewId(this.birthViewId);
     GMSMember me = (GMSMember) this.localAddress.getNetMember();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d25e4459/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
index c01353a..ad9c319 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage.java
@@ -37,7 +37,6 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
   private String rejectionMessage;
   private InternalDistributedMember memberID;
   private byte[] messengerData;
-  private boolean becomeCoordinator;
   
   public JoinResponseMessage(InternalDistributedMember memberID, NetView view) {
     this.currentView = view;
@@ -45,13 +44,6 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
     setRecipient(memberID);
   }
   
-  public JoinResponseMessage(InternalDistributedMember memberID, NetView view, boolean becomeCoordinator) {
-    this.currentView = view;
-    this.memberID = memberID;
-    setRecipient(memberID);
-    this.becomeCoordinator = becomeCoordinator;
-  }
-  
   public JoinResponseMessage(String rejectionMessage) {
     this.rejectionMessage = rejectionMessage;
   }
@@ -68,10 +60,6 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
     return memberID;
   }
   
-  public boolean getBecomeCoordinator() {
-    return becomeCoordinator;
-  }
-
   public String getRejectionMessage() {
     return rejectionMessage;
   }
@@ -94,7 +82,6 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
     return getShortClassName() + "("+memberID + "; "
         + (currentView==null? "" : currentView.toString())
         + (rejectionMessage==null? "" : ("; "+rejectionMessage))
-        + (becomeCoordinator? "; becomeCoordinator" : "")
         + ")";
   }
   
@@ -112,7 +99,6 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
   public void toData(DataOutput out) throws IOException {
     DataSerializer.writeObject(currentView, out);
     DataSerializer.writeObject(memberID, out);
-    out.writeBoolean(becomeCoordinator);
     DataSerializer.writeString(rejectionMessage, out);
     DataSerializer.writeByteArray(messengerData, out);
   }
@@ -121,7 +107,6 @@ public class JoinResponseMessage extends HighPriorityDistributionMessage {
   public void fromData(DataInput in) throws IOException, ClassNotFoundException {
     currentView = DataSerializer.readObject(in);
     memberID = DataSerializer.readObject(in);
-    becomeCoordinator = in.readBoolean();
     rejectionMessage = DataSerializer.readString(in);
     messengerData = DataSerializer.readByteArray(in);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/d25e4459/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
index bb9f350..a6e951a 100644
--- a/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
+++ b/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
@@ -373,8 +373,8 @@ fromData,38,2a2bb80019c0001ab500042a2bb80019b500052a2bb8001bb500022a2bb9001c0100
 toData,35,2ab400042bb800152ab400052bb800152ab400022bb800162b2ab60017b900180200b1
 
 com/gemstone/gemfire/distributed/internal/membership/gms/messages/JoinResponseMessage,2
-fromData,49,2a2bb8001cc0001db500022a2bb8001cc0001eb500032a2bb9001f0100b500052a2bb80020b500062a2bb80021b50007b1
-toData,43,2ab400022bb800182ab400032bb800182b2ab40005b9001902002ab400062bb8001a2ab400072bb8001bb1
+fromData,39,2a2bb80019c0001ab500022a2bb80019c0001bb500032a2bb8001cb500052a2bb8001db50006b1
+toData,33,2ab400022bb800162ab400032bb800162ab400052bb800172ab400062bb80018b1
 
 com/gemstone/gemfire/distributed/internal/membership/gms/messages/LeaveRequestMessage,2
 fromData,20,2a2bb8000cc0000db500032a2bb8000eb50004b1


[21/45] incubator-geode git commit: GEODE-1063 Now during cacheClose we CacheCloseException..

Posted by kl...@apache.org.
GEODE-1063 Now during  cacheClose we CacheCloseException..


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/b91a22be
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/b91a22be
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/b91a22be

Branch: refs/heads/feature/GEODE-1050
Commit: b91a22bece37dd670be742e2891fcd05f3bb91b3
Parents: 5fcf037
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Wed Mar 9 12:19:36 2016 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Thu Mar 10 09:47:24 2016 -0800

----------------------------------------------------------------------
 .../java/com/gemstone/gemfire/internal/cache/LocalRegion.java   | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b91a22be/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
index 830d47d..c727a53 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
@@ -10366,7 +10366,10 @@ public class LocalRegion extends AbstractRegion
           txException = txException.getCause();
         }
         if (e == null) {
-          e = new ServerOperationException(LocalizedStrings.Region_PutAll_Applied_PartialKeys_At_Server_0.toLocalizedString(getFullPath()), e1.getFailure());
+          e = getCancelCriterion().generateCancelledException(e1.getFailure());//for cache close
+          if(e == null) {
+            e = new ServerOperationException(LocalizedStrings.Region_PutAll_Applied_PartialKeys_At_Server_0.toLocalizedString(getFullPath()), e1.getFailure());
+          }
         }
       }
     }


[36/45] incubator-geode git commit: GEODE-992: Integrate with Travis CI

Posted by kl...@apache.org.
GEODE-992: Integrate with Travis CI

Updating README to add CI status. Also:
- Added Anchors and links to all sections
- Added links to wiki and documentation
- Headings are now h2 rather than h1

closes #107


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/6c069d20
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/6c069d20
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/6c069d20

Branch: refs/heads/feature/GEODE-1050
Commit: 6c069d20140c53d4ae35ac94595fd44a3fdc8528
Parents: 6266eb0
Author: Swapnil Bawaskar <sb...@pivotal.io>
Authored: Thu Feb 25 15:36:40 2016 -0800
Committer: Swapnil Bawaskar <sb...@pivotal.io>
Committed: Fri Mar 11 15:14:47 2016 -0800

----------------------------------------------------------------------
 README.md | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6c069d20/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 6d561f0..0bcc2d6 100755
--- a/README.md
+++ b/README.md
@@ -1,4 +1,12 @@
-# Overview
+**[Overview](#overview)**  
+**[Main Concepts and Components](#concepts)**  
+**[Geode in 5 minutes](#started)**  
+**[Application Development](#development)**  
+**[Documentation](http://geode.docs.pivotal.io/)**  
+**[wiki](https://cwiki.apache.org/confluence/display/GEODE/Index)**  
+**Continuous Integration** [![Build Status](https://travis-ci.org/apache/incubator-geode.svg?branch=develop)](https://travis-ci.org/apache/incubator-geode)  
+
+## <a name="overview"></a>Overview
 
 [Apache Geode] (http://geode.incubator.apache.org/) is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures.
 
@@ -6,7 +14,7 @@ Apache Geode pools memory, CPU, network resources, and optionally local disk acr
 
 Apache Geode is a mature, robust technology originally developed by GemStone Systems in Beaverton, Oregon. Commercially available as GemFireâ„¢, the technology was first deployed in the financial sector as the transactional, low-latency data engine used in Wall Street trading platforms.  Today Apache Geode is used by over 600 enterprise customers for high-scale business applications that must meet low latency and 24x7 availability requirements. An example deployment includes [China National Railways](http://pivotal.io/big-data/case-study/scaling-online-sales-for-the-largest-railway-in-the-world-china-railway-corporation) that uses Geode to run railway ticketing for the entire country of China with a 10 node cluster that manages 2 terabytes of "hot data" in memory, and 10 backup nodes for high availability and elastic scale.
 
-# Main Concepts and Components
+## <a name="concepts"></a>Main Concepts and Components
 
 _Caches_ are an abstraction that describe a node in an Apache Geode distributed system.
 
@@ -30,7 +38,7 @@ Apache Geode includes the following features:
 * REST APIs for REST-enabled application development.
 * Rolling upgrade between major version releases.
 
-# Geode in 5 minutes
+## <a name="started"></a>Geode in 5 minutes
 
 With both a recent version of Gradle and JDK 1.8 or a more recent version installed, obtain the source archive.
 Extract the source archive and build from the expanded directory:
@@ -80,7 +88,7 @@ Compile and run `HelloWorld.java`.  The classpath should include `geode-dependen
     javac -cp /some/path/geode/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar HelloWorld.java
     java -cp .:/some/path/geode/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar HelloWorld
 
-#Application Development
+## <a name="development"></a>Application Development
 
 Apache Geode applications can be written in a number of client technologies:
 


[45/45] incubator-geode git commit: Merge remote-tracking branch 'origin/develop' into feature/GEODE-1050

Posted by kl...@apache.org.
Merge remote-tracking branch 'origin/develop' into feature/GEODE-1050


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/216bbbd6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/216bbbd6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/216bbbd6

Branch: refs/heads/feature/GEODE-1050
Commit: 216bbbd6fe1efe623c3102155d9f5d33603a3aac
Parents: e72b771 22ab270
Author: Kirk Lund <kl...@apache.org>
Authored: Tue Mar 15 11:32:36 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Tue Mar 15 11:32:36 2016 -0700

----------------------------------------------------------------------
 README.md                                       |   16 +-
 extensions/geode-modules-assembly/build.gradle  |   10 +-
 extensions/geode-modules/build.gradle           |    3 +-
 geode-assembly/build.gradle                     |   27 +-
 .../LauncherLifecycleCommandsDUnitTest.java     |   10 +-
 geode-core/build.gradle                         |   13 +-
 .../com/gemstone/gemfire/DataSerializable.java  |    2 +-
 .../internal/doc-files/config-hierarchy.fig     |  156 -
 .../admin/internal/doc-files/health-classes.fig |  233 --
 .../admin/internal/doc-files/health-classes.gif |  Bin 8973 -> 0 bytes
 .../gemfire/admin/internal/package.html         |    4 +-
 .../client/doc-files/example-client-cache.xml   |   46 -
 .../gemfire/cache/client/internal/Endpoint.java |    2 +-
 .../internal/PdxRegistryRecoveryListener.java   |    6 +-
 .../gemfire/cache/client/internal/PoolImpl.java |    5 +-
 .../gemfire/cache/client/internal/PutAllOp.java |    8 +-
 .../gemfire/cache/client/internal/PutOp.java    |   15 +-
 .../doc-files/ConnectionManagerImpl.dia         |  Bin 2034 -> 0 bytes
 .../doc-files/ConnectionManagerImpl.png         |  Bin 11825 -> 0 bytes
 .../client/internal/doc-files/PoolImpl.dia      |  Bin 3083 -> 0 bytes
 .../internal/doc-files/QueueManagerImpl.dia     |  Bin 2180 -> 0 bytes
 .../internal/doc-files/QueueManagerImpl.png     |  Bin 15075 -> 0 bytes
 .../doc-files/client_static_diagram.png         |  Bin 29430 -> 0 bytes
 .../gemfire/cache/client/internal/package.html  |    6 +-
 .../gemstone/gemfire/cache/client/package.html  |    2 +-
 .../gemfire/cache/doc-files/architecture.fig    |  170 -
 .../gemfire/cache/doc-files/architecture.gif    |  Bin 9983 -> 0 bytes
 .../cache/doc-files/entry-life-cycle.fig        |   64 -
 .../cache/doc-files/entry-life-cycle.gif        |  Bin 3357 -> 0 bytes
 .../gemfire/cache/doc-files/example-cache.xml   |   98 -
 .../gemfire/cache/doc-files/example2-cache.xml  |   63 -
 .../gemfire/cache/doc-files/example3-cache.xml  |   60 -
 .../cache/doc-files/partitioned-regions.fig     |  267 --
 .../cache/doc-files/partitioned-regions.gif     |  Bin 9494 -> 0 bytes
 .../internal/GetOperationContextImpl.java       |   24 +-
 .../com/gemstone/gemfire/cache/package.html     |    8 +-
 .../query/internal/index/AbstractIndex.java     |    8 +-
 .../query/internal/index/DummyQRegion.java      |   14 +-
 .../cache/query/internal/index/HashIndex.java   |    6 +-
 .../gemfire/distributed/ServerLauncher.java     |   56 +-
 .../ServerLauncherCacheProvider.java            |   34 +
 .../DefaultServerLauncherCacheProvider.java     |   57 +
 .../internal/DistributionConfigImpl.java        |   33 +-
 .../internal/InternalDistributedSystem.java     |   22 +-
 .../internal/LonerDistributionManager.java      |    4 +-
 .../internal/direct/DirectChannel.java          |   31 +-
 .../internal/doc-files/config-classes.fig       |  138 -
 .../internal/doc-files/config-classes.gif       |  Bin 4205 -> 0 bytes
 .../doc-files/distribution-managers.fig         |   76 -
 .../doc-files/distribution-managers.gif         |  Bin 3267 -> 0 bytes
 .../internal/locks/doc-files/elder.fig          |   84 -
 .../internal/locks/doc-files/elder.jpg          |  Bin 55182 -> 0 bytes
 .../internal/locks/doc-files/turks.fig          |  128 -
 .../internal/locks/doc-files/turks.jpg          |  Bin 79859 -> 0 bytes
 .../distributed/internal/locks/package.html     |    4 +-
 .../membership/gms/fd/GMSHealthMonitor.java     |    2 +-
 .../membership/gms/membership/GMSJoinLeave.java |   29 +-
 .../gms/messages/JoinResponseMessage.java       |   15 -
 .../gms/messenger/JGroupsMessenger.java         |    5 +
 .../gemfire/distributed/internal/package.html   |    2 +-
 .../internal/tcpserver/TcpClient.java           |   16 +-
 .../internal/tcpserver/TcpServer.java           |    0
 .../doc-files/data-serialization-exceptions.fig |  135 -
 .../doc-files/data-serialization-exceptions.gif |  Bin 3666 -> 0 bytes
 .../gemfire/internal/AbstractConfig.java        |    2 +
 .../admin/doc-files/class-hierarchy.fig         |  224 -
 .../admin/doc-files/class-hierarchy.gif         |  Bin 11971 -> 0 bytes
 .../internal/cache/AbstractRegionEntry.java     |   85 +-
 .../internal/cache/AbstractRegionMap.java       |   81 +-
 .../gemfire/internal/cache/BucketRegion.java    |    5 +-
 .../cache/BytesAndBitsForCompactor.java         |   18 +-
 .../internal/cache/CachedDeserializable.java    |    8 +
 .../gemfire/internal/cache/DiskEntry.java       |  113 +-
 .../gemfire/internal/cache/DiskStoreImpl.java   |    4 -
 .../internal/cache/DistributedRegion.java       |   10 -
 .../gemfire/internal/cache/EntryEventImpl.java  |  161 +-
 .../gemfire/internal/cache/LocalRegion.java     |   18 +-
 .../gemstone/gemfire/internal/cache/Oplog.java  |   12 +-
 .../internal/cache/PartitionedRegion.java       |    1 -
 .../cache/PartitionedRegionQueryEvaluator.java  |  391 +-
 .../cache/PreferBytesCachedDeserializable.java  |   11 +-
 .../gemfire/internal/cache/RegionEntry.java     |    8 +-
 .../internal/cache/RemoteDestroyMessage.java    |    4 +-
 .../cache/SearchLoadAndWriteProcessor.java      |    8 +-
 .../cache/StoreAllCachedDeserializable.java     |   11 +-
 .../internal/cache/VMCachedDeserializable.java  |    9 +-
 .../SnappyCompressedCachedDeserializable.java   |   10 +
 .../cache/control/OffHeapMemoryMonitor.java     |   45 +-
 .../cache/doc-files/BucketAdvisor-state.png     |  Bin 39148 -> 0 bytes
 .../internal/cache/doc-files/eventmatrix.xls    |  Bin 24576 -> 0 bytes
 .../cache/doc-files/extensible-hashing.fig      |  159 -
 .../cache/doc-files/extensible-hashing.gif      |  Bin 6605 -> 0 bytes
 .../cache/doc-files/jcache-get-flow.fig         |  349 --
 .../cache/doc-files/jcache-get-flow.pdf         |  Bin 7519 -> 0 bytes
 .../cache/doc-files/jcache-put-flow.fig         |  359 --
 .../cache/doc-files/jcache-put-flow.pdf         |  Bin 7667 -> 0 bytes
 .../doc-files/jcache-update-message-flow.fig    |  334 --
 .../doc-files/jcache-update-message-flow.pdf    |  Bin 5937 -> 0 bytes
 .../cache/doc-files/partitioned-regions.fig     |  255 --
 .../cache/doc-files/partitioned-regions.gif     |  Bin 9273 -> 0 bytes
 .../internal/cache/doc-files/properties.html    | 3937 ------------------
 .../cache/doc-files/region-implementation.fig   |  262 --
 .../gemfire/internal/cache/package.html         |    8 +-
 .../cache/partitioned/FetchEntriesMessage.java  |    8 +-
 .../internal/cache/partitioned/PutMessage.java  |    8 +-
 .../gemfire/internal/cache/properties.html      | 3937 ++++++++++++++++++
 .../cache/tier/sockets/CacheClientProxy.java    |    8 +-
 .../internal/cache/tier/sockets/HandShake.java  |    3 +-
 .../internal/cache/tier/sockets/Part.java       |   51 +-
 .../cache/tier/sockets/command/Get70.java       |   19 +-
 .../cache/tier/sockets/command/Request.java     |    8 +-
 .../doc-files/communication-architecture.fig    |  158 -
 .../doc-files/communication-architecture.gif    |  Bin 5485 -> 0 bytes
 .../cache/wan/GatewaySenderEventImpl.java       |   12 +-
 .../gemfire/internal/doc-files/cs-maps.fig      |  150 -
 .../gemfire/internal/doc-files/cs-maps.gif      |  Bin 5951 -> 0 bytes
 .../gemfire/internal/doc-files/ds-map.fig       |  105 -
 .../gemfire/internal/doc-files/ds-map.gif       |  Bin 4867 -> 0 bytes
 .../internal/doc-files/merge-log-files.fig      |  153 -
 .../internal/doc-files/merge-log-files.gif      |  Bin 2646 -> 0 bytes
 .../gemfire/internal/logging/MergeLogFiles.java |    2 +-
 .../internal/offheap/AbstractStoredObject.java  |   24 +
 .../offheap/AddressableMemoryChunk.java         |   29 -
 .../offheap/AddressableMemoryChunkFactory.java  |   27 -
 .../offheap/AddressableMemoryManager.java       |  261 ++
 .../internal/offheap/ByteArrayMemoryChunk.java  |   77 -
 .../internal/offheap/ByteBufferMemoryChunk.java |   90 -
 .../gemfire/internal/offheap/DataAsAddress.java |  131 -
 .../gemfire/internal/offheap/Fragment.java      |   10 +-
 .../internal/offheap/FreeListManager.java       |  200 +-
 .../internal/offheap/MemoryAllocator.java       |   18 +-
 .../gemfire/internal/offheap/MemoryBlock.java   |    2 +-
 .../internal/offheap/MemoryBlockNode.java       |   22 +-
 .../gemfire/internal/offheap/MemoryChunk.java   |   47 -
 .../offheap/MemoryChunkWithRefCount.java        |   34 -
 .../gemfire/internal/offheap/ObjectChunk.java   |  737 ----
 .../internal/offheap/ObjectChunkSlice.java      |   44 -
 .../offheap/ObjectChunkWithHeapForm.java        |   40 -
 .../offheap/OffHeapCachedDeserializable.java    |  142 -
 .../gemfire/internal/offheap/OffHeapHelper.java |   24 +-
 .../offheap/OffHeapRegionEntryHelper.java       |   28 +-
 .../internal/offheap/OffHeapStorage.java        |    9 +-
 .../internal/offheap/OffHeapStoredObject.java   |  718 ++++
 .../OffHeapStoredObjectAddressStack.java        |  141 +
 .../offheap/OffHeapStoredObjectSlice.java       |   44 +
 .../OffHeapStoredObjectWithHeapForm.java        |   41 +
 .../offheap/SimpleMemoryAllocatorImpl.java      |  116 +-
 .../gemstone/gemfire/internal/offheap/Slab.java |   39 +
 .../gemfire/internal/offheap/SlabFactory.java   |   27 +
 .../gemfire/internal/offheap/SlabImpl.java      |   61 +
 .../gemfire/internal/offheap/StoredObject.java  |  117 +-
 .../internal/offheap/SyncChunkStack.java        |  141 -
 .../internal/offheap/TinyStoredObject.java      |  229 +
 .../internal/offheap/UnsafeMemoryChunk.java     |  217 -
 .../internal/tcp/ByteBufferInputStream.java     |   74 +-
 .../tcp/ImmutableByteBufferInputStream.java     |    4 +-
 .../gemfire/internal/util/BlobHelper.java       |    4 +-
 .../internal/util/doc-files/call-stack.fig      |   34 -
 .../internal/util/doc-files/class-loaders.fig   |   49 -
 .../gemfire/pdx/internal/PdxInputStream.java    |    4 +-
 .../gemstone/gemfire/pdx/internal/PdxType.java  |    2 +-
 .../javadoc-images/BucketAdvisor-state.png      |  Bin 0 -> 39148 bytes
 .../javadoc-images/ConnectionManagerImpl.dia    |  Bin 0 -> 2034 bytes
 .../javadoc-images/ConnectionManagerImpl.png    |  Bin 0 -> 11825 bytes
 .../javadoc-images/QueueManagerImpl.dia         |  Bin 0 -> 2180 bytes
 .../javadoc-images/QueueManagerImpl.png         |  Bin 0 -> 15075 bytes
 .../javadoc-images/class-hierarchy.fig          |  224 +
 .../javadoc-images/class-hierarchy.gif          |  Bin 0 -> 11971 bytes
 .../javadoc-images/client_static_diagram.png    |  Bin 0 -> 29430 bytes
 .../data-serialization-exceptions.fig           |  135 +
 .../data-serialization-exceptions.gif           |  Bin 0 -> 3666 bytes
 .../javadoc-images/distribution-managers.fig    |   76 +
 .../javadoc-images/distribution-managers.gif    |  Bin 0 -> 3267 bytes
 .../src/main/resources/javadoc-images/elder.fig |   84 +
 .../src/main/resources/javadoc-images/elder.jpg |  Bin 0 -> 55182 bytes
 .../javadoc-images/entry-life-cycle.fig         |   64 +
 .../javadoc-images/entry-life-cycle.gif         |  Bin 0 -> 3357 bytes
 .../resources/javadoc-images/eventmatrix.xls    |  Bin 0 -> 24576 bytes
 .../resources/javadoc-images/example-cache.xml  |   98 +
 .../javadoc-images/example-client-cache.xml     |   46 +
 .../resources/javadoc-images/example2-cache.xml |   63 +
 .../resources/javadoc-images/example3-cache.xml |   60 +
 .../javadoc-images/extensible-hashing.fig       |  159 +
 .../javadoc-images/extensible-hashing.gif       |  Bin 0 -> 6605 bytes
 .../resources/javadoc-images/health-classes.gif |  Bin 0 -> 8973 bytes
 .../javadoc-images/jcache-get-flow.fig          |  349 ++
 .../javadoc-images/jcache-get-flow.pdf          |  Bin 0 -> 7519 bytes
 .../javadoc-images/jcache-put-flow.fig          |  359 ++
 .../javadoc-images/jcache-put-flow.pdf          |  Bin 0 -> 7667 bytes
 .../jcache-update-message-flow.fig              |  334 ++
 .../jcache-update-message-flow.pdf              |  Bin 0 -> 5937 bytes
 .../javadoc-images/merge-log-files.fig          |  153 +
 .../javadoc-images/merge-log-files.gif          |  Bin 0 -> 2646 bytes
 .../javadoc-images/partitioned-regions.fig      |  255 ++
 .../javadoc-images/partitioned-regions.gif      |  Bin 0 -> 9273 bytes
 .../src/main/resources/javadoc-images/turks.fig |  128 +
 .../src/main/resources/javadoc-images/turks.jpg |  Bin 0 -> 79859 bytes
 .../cache30/ClientMembershipDUnitTest.java      |  209 +-
 .../gemfire/cache30/ClientServerTestCase.java   |   12 +-
 .../DistributedMulticastRegionDUnitTest.java    |    7 +-
 .../gemfire/cache30/MultiVMRegionTestCase.java  |   14 +-
 .../gemfire/distributed/LauncherTestSuite.java  |    2 +-
 .../MockServerLauncherCacheProvider.java        |   42 +
 .../ServerLauncherWithProviderJUnitTest.java    |   92 +
 .../ServerLauncherWithSpringJUnitTest.java      |   99 -
 .../internal/DistributionAdvisorDUnitTest.java  |    3 +-
 .../gms/fd/GMSHealthMonitorJUnitTest.java       |   20 +-
 .../gms/membership/GMSJoinLeaveJUnitTest.java   |   14 +-
 .../gms/membership/GMSJoinLeaveTestHelper.java  |   24 +
 .../TcpServerBackwardCompatDUnitTest.java       |   97 +-
 .../internal/SSLConfigIntegrationJUnitTest.java |    2 +-
 .../gemfire/internal/SSLConfigJUnitTest.java    |   73 +-
 .../cache/ChunkValueWrapperJUnitTest.java       |  188 -
 .../gemfire/internal/cache/OffHeapTestUtil.java |    2 +-
 .../cache/OffHeapValueWrapperJUnitTest.java     |  188 +
 .../cache/OldValueImporterTestBase.java         |   22 +-
 .../FetchEntriesMessageJUnitTest.java           |   93 +
 .../cache/tier/sockets/MessageJUnitTest.java    |    1 -
 .../offheap/ByteArrayMemoryChunkJUnitTest.java  |   30 -
 .../offheap/DataAsAddressJUnitTest.java         |  368 --
 .../DirectByteBufferMemoryChunkJUnitTest.java   |   33 -
 .../internal/offheap/FragmentJUnitTest.java     |   22 +-
 .../internal/offheap/FreeListManagerTest.java   |  329 +-
 .../offheap/FreeListOffHeapRegionJUnitTest.java |    2 +-
 .../HeapByteBufferMemoryChunkJUnitTest.java     |   33 -
 .../offheap/LifecycleListenerJUnitTest.java     |   24 +-
 .../offheap/MemoryBlockNodeJUnitTest.java       |   48 +-
 .../offheap/MemoryChunkJUnitTestBase.java       |  290 --
 .../internal/offheap/MemoryChunkTestSuite.java  |   32 -
 .../internal/offheap/ObjectChunkJUnitTest.java  |  902 ----
 .../offheap/ObjectChunkSliceJUnitTest.java      |   72 -
 .../ObjectChunkWithHeapFormJUnitTest.java       |   64 -
 .../offheap/OffHeapHelperJUnitTest.java         |   19 +-
 .../internal/offheap/OffHeapRegionBase.java     |   16 +-
 .../OffHeapRegionEntryHelperJUnitTest.java      |   92 +-
 .../offheap/OffHeapStorageJUnitTest.java        |   12 +-
 ...ffHeapStoredObjectAddressStackJUnitTest.java |  290 ++
 .../offheap/OffHeapStoredObjectJUnitTest.java   |  867 ++++
 .../OffHeapStoredObjectSliceJUnitTest.java      |   72 +
 ...ffHeapStoredObjectWithHeapFormJUnitTest.java |   64 +
 .../offheap/OffHeapValidationJUnitTest.java     |    8 +-
 .../OffHeapWriteObjectAsByteArrayJUnitTest.java |   12 +-
 .../OldFreeListOffHeapRegionJUnitTest.java      |    2 +-
 ...moryAllocatorFillPatternIntegrationTest.java |   16 +-
 ...mpleMemoryAllocatorFillPatternJUnitTest.java |   24 +-
 .../offheap/SimpleMemoryAllocatorJUnitTest.java |  165 +-
 .../internal/offheap/StoredObjectTestSuite.java |    8 +-
 .../offheap/SyncChunkStackJUnitTest.java        |  289 --
 .../offheap/TinyMemoryBlockJUnitTest.java       |   64 +-
 .../offheap/TinyStoredObjectJUnitTest.java      |  353 ++
 .../offheap/UnsafeMemoryChunkJUnitTest.java     |   87 -
 .../management/OffHeapManagementDUnitTest.java  |    8 +-
 ...ersalMembershipListenerAdapterDUnitTest.java |   85 +-
 .../OffHeapByteBufferByteSourceJUnitTest.java   |    6 +-
 .../gemfire/pdx/OffHeapByteSourceJUnitTest.java |   10 +-
 .../gemfire/pdx/PdxClientServerDUnitTest.java   |   46 +-
 .../gemfire/test/dunit/DistributedTestCase.java |    5 +-
 .../test/dunit/DistributedTestUtils.java        |    1 +
 .../gemfire/test/dunit/NamedCallable.java       |   41 +
 .../gemfire/test/dunit/NamedRunnable.java       |   41 +
 .../com/gemstone/gemfire/test/dunit/VM.java     |   61 +
 .../internal/tests/JUnit3BasicDUnitTest.java    |   23 +
 .../internal/tests/JUnit4BasicDUnitTest.java    |   24 +
 .../test/dunit/tests/BasicDUnitTest.java        |   23 +
 ...fire.distributed.ServerLauncherCacheProvider |    1 +
 .../sanctionedDataSerializables.txt             |    6 +-
 .../resources/spring/spring-gemfire-context.xml |   42 -
 .../internal/cache/PutAllCSDUnitTest.java       |  225 +-
 .../tier/sockets/DurableClientTestCase.java     |    9 +-
 geode-pulse/build.gradle                        |   12 +
 geode-rebalancer/build.gradle                   |    1 +
 geode-web-api/build.gradle                      |    7 +
 geode-web/build.gradle                          |    7 +
 gradle/java.gradle                              |    9 -
 gradle/rat.gradle                               |    1 +
 gradle/test.gradle                              |    4 +
 276 files changed, 12274 insertions(+), 14723 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-assembly/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/LauncherLifecycleCommandsDUnitTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index e6be910,19ce28d..02fa580
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@@ -83,10 -89,19 +89,15 @@@ public class ClientMembershipDUnitTest 
    }
  
    @Override
 -  public void setUp() throws Exception {
 -    super.setUp();
 -  }
 -  
 -  @Override
 -  protected void postTearDown() throws Exception {
 +  public final void postTearDownCacheTestCase() throws Exception {
+     Invoke.invokeInEveryVM((() -> cleanup()));
+   }
+   
+   public static void cleanup() {
+     properties = null;
 +    InternalClientMembership.unregisterAllListeners();
    }
- 
+   
    private void waitForAcceptsInProgressToBe(final int target)
      throws Exception {
      WaitCriterion ev = new WaitCriterion() {
@@@ -1060,12 -1076,14 +1072,14 @@@
          Properties config = new Properties();
          config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
          config.setProperty(DistributionConfig.LOCATORS_NAME, "");
-         getSystem(config);
+         properties = config;
+         DistributedSystem s = getSystem(config);
          AttributesFactory factory = new AttributesFactory();
-         factory.setScope(Scope.LOCAL);
-         ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, 2, null);
+         Pool pool = ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, 2, null);
          createRegion(name, factory.create());
          assertNotNull(getRootRegion().getSubregion(name));
 -        assertTrue(s == system); // see geode-1078
++        assertTrue(s == basicGetSystem()); // see geode-1078
+         return getMemberId();
        }
      };
  

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
index b37c60a,d9d8858..a3968ea
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
@@@ -295,14 -292,14 +295,14 @@@ public class ClientServerTestCase exten
      WaitCriterion w = new WaitCriterion() {
  
        public String description() {
-         return "bridge never finished connecting: " + system.getMemberId();
 -        return "client never finished connecting: " + system.getMemberId();
++        return "client never finished connecting: " + getSystemStatic().getMemberId();
        }
  
        public boolean done() {
  //        getLogWriter().warning("checking member id " + system.getMemberId() +
  //            " for member " + system.getDistributedMember() + " hash " +
  //            System.identityHashCode(system.getDistributedMember()));
-         return !system.getMemberId().contains("):0:");
 -        return system.getDistributedMember().getPort() > 0;
++        return getSystemStatic().getDistributedMember().getPort() > 0;
        }
        
      };
@@@ -310,7 -307,7 +310,7 @@@
      int interval = 100;
      boolean throwException = true;
      Wait.waitForCriterion(w, waitMillis, interval, throwException);
-     return system.getMemberId();
 -    return system.getDistributedMember();
++    return getSystemStatic().getDistributedMember();
    }
  
    protected static DistributedMember getDistributedMember() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisorDUnitTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/management/OffHeapManagementDUnitTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
index 6dfb075,d84415a..60ef7ba
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
@@@ -1569,6 -1565,7 +1565,7 @@@ public class UniversalMembershipListene
          Region region = createRegion(name, factory.create());
          assertNotNull(region);
          assertNotNull(getRootRegion().getSubregion(name));
 -        return system.getDistributedMember();
++        return basicGetSystem().getDistributedMember();
        }
      };
      
@@@ -1854,6 -1849,7 +1849,7 @@@
            com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().error(e);
            fail(e.getMessage());
          }
 -        return system.getDistributedMember();
++        return basicGetSystem().getDistributedMember();
        }
      };
      

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
index b657e1e,4f656fd..e94c492
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
@@@ -236,10 -242,11 +237,11 @@@ public abstract class DistributedTestCa
     * @since 3.0
     */
    public Properties getDistributedSystemProperties() {
-     return new Properties();
+     Properties props = new Properties();
+     return props;
    }
  
 -  public static void disconnectAllFromDS() {
 +  public static final void disconnectAllFromDS() {
      disconnectFromDS();
      Invoke.invokeInEveryVM(()->disconnectFromDS());
    }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
index 0000000,66a3f38..ece90ba
mode 000000,100755..100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
@@@ -1,0 -1,26 +1,41 @@@
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements.  See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License.  You may obtain a copy of the License at
++ *
++ *      http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
+ package com.gemstone.gemfire.test.dunit;
+ 
 -
+ public class NamedCallable<T> implements SerializableCallableIF<T> {
+ 
+   private static final long serialVersionUID = -4417299628656632541L;
+ 
+   String name;
+   SerializableCallableIF<T> delegate;
+   
+   public NamedCallable(String name, SerializableCallableIF<T> delegate) {
+     this.name = name;
+     this.delegate = delegate;
+   }
+   
+   @Override
+   public T call() throws Exception {
+     return delegate.call();
+   }
+   
+   @Override
+   public String toString() {
+     return ("callable("+name+")");
+   }
+ 
+ }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
index 0000000,8a7fe28..ba06f6e
mode 000000,100755..100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
@@@ -1,0 -1,26 +1,41 @@@
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one or more
++ * contributor license agreements.  See the NOTICE file distributed with
++ * this work for additional information regarding copyright ownership.
++ * The ASF licenses this file to You under the Apache License, Version 2.0
++ * (the "License"); you may not use this file except in compliance with
++ * the License.  You may obtain a copy of the License at
++ *
++ *      http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
+ package com.gemstone.gemfire.test.dunit;
+ 
 -
+ public class NamedRunnable implements SerializableRunnableIF {
+ 
+   private static final long serialVersionUID = -2786841298145567914L;
+ 
+   String name;
+   SerializableRunnableIF delegate;
+   
+   public NamedRunnable(String name, SerializableRunnableIF delegate) {
+     this.name = name;
+     this.delegate = delegate;
+   }
+   
+   @Override
+   public void run() throws Exception {
+     delegate.run();
+   }
+   
+   @Override
+   public String toString() {
+     return ("runnable("+name+")");
+   }
+ 
+ }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit3BasicDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit3BasicDUnitTest.java
index 059cb6f,0000000..5130b5c
mode 100644,000000..100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit3BasicDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit3BasicDUnitTest.java
@@@ -1,166 -1,0 +1,189 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + *
 + *      http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package com.gemstone.gemfire.test.dunit.internal.tests;
 +
 +import static com.gemstone.gemfire.test.dunit.Invoke.*;
 +
 +import java.util.Properties;
 +
 +import com.gemstone.gemfire.test.dunit.Assert;
 +import com.gemstone.gemfire.test.dunit.AsyncInvocation;
 +import com.gemstone.gemfire.test.dunit.DUnitEnv;
 +import com.gemstone.gemfire.test.dunit.Host;
 +import com.gemstone.gemfire.test.dunit.RMIException;
 +import com.gemstone.gemfire.test.dunit.VM;
 +import com.gemstone.gemfire.test.dunit.internal.JUnit3DistributedTestCase;
 +
 +/**
 + * This class tests the basic functionality of the distributed unit
 + * test framework.
 + */
 +public class JUnit3BasicDUnitTest extends JUnit3DistributedTestCase {
 +
 +  private static Properties bindings;
 +
 +  public JUnit3BasicDUnitTest(String name) {
 +    super(name);
 +  }
 +
 +  @Override
 +  public void postSetUp() throws Exception {
 +    bindings = new Properties();
 +    invokeInEveryVM(() -> bindings = new Properties());
 +  }
 +
 +  @Override
 +  public void postTearDown() throws Exception {
 +    bindings = null;
 +    invokeInEveryVM(() -> bindings = null);
 +  }
 +
 +  public void testPreconditions() {
 +    invokeInEveryVM(() -> assertNotNull("getUniqueName() must not return null", getUniqueName()));
 +    invokeInEveryVM(() -> assertNotNull("bindings must not be null", bindings));
 +  }
 +
 +  /**
 +   * Tests how the Hydra framework handles an error
 +   */
 +  public void ignore_testDontCatchRemoteException() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +    vm.invoke(() -> remoteThrowException());
 +  }
 +
 +  public void testRemoteInvocationWithException() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +    try {
 +      vm.invoke(() -> remoteThrowException());
 +      fail("Should have thrown a BasicTestException");
 +
 +    } catch (RMIException ex) {
 +      assertTrue(ex.getCause() instanceof BasicTestException);
 +    }
 +  }
 +
 +  public void testInvokeWithLambda() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm0 = host.getVM(0);
 +    VM vm1 = host.getVM(1);
 +
 +    int vm0Num = vm0.invoke(() -> DUnitEnv.get().getVMID());
 +    int vm1Num = vm1.invoke(() -> DUnitEnv.get().getVMID());
 +
 +    assertEquals(0, vm0Num);
 +    assertEquals(1, vm1Num);
 +  }
 +
 +  public void testInvokeLambdaAsync() throws Throwable {
 +    Host host = Host.getHost(0);
 +    VM vm0 = host.getVM(0);
 +
 +    AsyncInvocation<Integer> async0 = vm0.invokeAsync(() -> DUnitEnv.get().getVMID());
 +    int vm0num = async0.getResult();
 +
 +    assertEquals(0, vm0num);
 +  }
 +
++  public void testInvokeWithNamedLambda() {
++    Host host = Host.getHost(0);
++    VM vm0 = host.getVM(0);
++    VM vm1 = host.getVM(1);
++
++    int vm0Num = vm0.invoke("getVMID", () -> DUnitEnv.get().getVMID());
++    int vm1Num = vm1.invoke("getVMID", () -> DUnitEnv.get().getVMID());
++
++    assertEquals(0, vm0Num);
++    assertEquals(1, vm1Num);
++  }
++
++  public void testInvokeNamedLambdaAsync() throws Throwable {
++    Host host = Host.getHost(0);
++    VM vm0 = host.getVM(0);
++
++    AsyncInvocation<Integer> async0 = vm0.invokeAsync("getVMID", () -> DUnitEnv.get().getVMID());
++    int vm0num = async0.getResult();
++
++    assertEquals(0, vm0num);
++  }
++
++  // Test was never implemented
 +  public void ignore_testRemoteInvocationBoolean() {
 +  }
 +
 +  public void testRemoteInvokeAsync() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +    String name = getUniqueName();
 +    String value = "Hello";
 +
 +    AsyncInvocation ai = vm.invokeAsync(() -> remoteBind(name, value));
 +    ai.join();
 +    // TODO shouldn't we call fail() here?
 +    if (ai.exceptionOccurred()) {
 +      Assert.fail("remoteBind failed", ai.getException());
 +    }
 +
 +    ai = vm.invokeAsync(() -> remoteValidateBind(name, value ));
 +    ai.join();
 +    if (ai.exceptionOccurred()) {
 +      Assert.fail("remoteValidateBind failed", ai.getException());
 +    }
 +  }
 +
 +  public void testRemoteInvokeAsyncWithException() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +
 +    AsyncInvocation ai = vm.invokeAsync(() -> remoteThrowException());
 +    ai.join();
 +    assertTrue(ai.exceptionOccurred());
 +    Throwable ex = ai.getException();
 +    assertTrue(ex instanceof BasicTestException);
 +  }
 +
 +  /**
 +   * Accessed via reflection.  DO NOT REMOVE
 +   */
 +  private static void remoteThrowException() {
 +    String s = "Test exception.  Please ignore.";
 +    throw new BasicTestException(s);
 +  }
 +
 +  private static void remoteBind(String name, String value) {
 +    assertNotNull("name must not be null", name);
 +    assertNotNull("value must not be null", value);
 +    assertNotNull("bindings must not be null", bindings);
 +
 +    new JUnit3BasicDUnitTest("").getSystem(); // forces connection
 +    bindings.setProperty(name, value);
 +  }
 +
 +  private static void remoteValidateBind(String name, String expected) {
 +    assertEquals(expected, bindings.getProperty(name));
 +  }
 +
 +  private static class BasicTestException extends RuntimeException {
 +    BasicTestException() {
 +      this("Test exception.  Please ignore.");
 +    }
 +    BasicTestException(String s) {
 +      super(s);
 +    }
 +  }
 +}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit4BasicDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit4BasicDUnitTest.java
index 4860530,0000000..5cac3ba
mode 100644,000000..100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit4BasicDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/internal/tests/JUnit4BasicDUnitTest.java
@@@ -1,178 -1,0 +1,202 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + *
 + *      http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package com.gemstone.gemfire.test.dunit.internal.tests;
 +
 +import static com.gemstone.gemfire.test.dunit.Assert.*;
 +import static com.gemstone.gemfire.test.dunit.Invoke.*;
 +
 +import java.util.Properties;
 +
 +import com.gemstone.gemfire.test.dunit.AsyncInvocation;
 +import com.gemstone.gemfire.test.dunit.DUnitEnv;
 +import com.gemstone.gemfire.test.dunit.Host;
 +import com.gemstone.gemfire.test.dunit.RMIException;
 +import com.gemstone.gemfire.test.dunit.VM;
 +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
 +import com.gemstone.gemfire.test.junit.categories.DistributedTest;
 +import org.junit.AfterClass;
 +import org.junit.BeforeClass;
 +import org.junit.Ignore;
 +import org.junit.Test;
 +import org.junit.experimental.categories.Category;
 +
 +/**
 + * This class tests the basic functionality of the distributed unit
 + * test framework.
 + */
 +@Category(DistributedTest.class)
 +public class JUnit4BasicDUnitTest extends JUnit4DistributedTestCase {
 +
 +  private static Properties bindings;
 +
 +  @BeforeClass
 +  public static void setUpJUnit4BasicDUnitTest() throws Exception {
 +    invokeInEveryVM(() -> bindings = new Properties());
 +  }
 +
 +  @AfterClass
 +  public static void tearDownJUnit4BasicDUnitTest() {
 +    invokeInEveryVM(() -> bindings = null);
 +  }
 +
 +  @Test
 +  public void testPreconditions() {
 +    invokeInEveryVM(() -> assertNotNull("getUniqueName() must not return null", getUniqueName()));
 +    invokeInEveryVM(() -> assertNotNull("bindings must not be null", bindings));
 +  }
 +
 +  /**
 +   * Tests how the Hydra framework handles an error
 +   */
 +  @Ignore
 +  @Test
 +  public void testDontCatchRemoteException() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +    vm.invoke(() -> remoteThrowException());
 +  }
 +
 +  @Test
 +  public void testRemoteInvocationWithException() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +    try {
 +      vm.invoke(() -> remoteThrowException());
 +      fail("Should have thrown a BasicTestException");
 +
 +    } catch (RMIException ex) {
 +      assertTrue(ex.getCause() instanceof BasicTestException);
 +    }
 +  }
 +
 +  @Test
 +  public void testInvokeWithLambda() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm0 = host.getVM(0);
 +    VM vm1 = host.getVM(1);
 +
 +    int vm0Num = vm0.invoke(() -> DUnitEnv.get().getVMID());
 +    int vm1Num = vm1.invoke(() -> DUnitEnv.get().getVMID());
 +
 +    assertEquals(0, vm0Num);
 +    assertEquals(1, vm1Num);
 +  }
 +
 +  @Test
 +  public void testInvokeLambdaAsync() throws Throwable {
 +    Host host = Host.getHost(0);
 +    VM vm0 = host.getVM(0);
 +
 +    AsyncInvocation<Integer> async0 = vm0.invokeAsync(() -> DUnitEnv.get().getVMID());
++    int vm0num = async0.getResult();
++
++    assertEquals(0, vm0num);
++  }
++
++  @Test
++  public void testInvokeWithNamedLambda() {
++    Host host = Host.getHost(0);
++    VM vm0 = host.getVM(0);
++    VM vm1 = host.getVM(1);
++
++    int vm0Num = vm0.invoke("getVMID", () -> DUnitEnv.get().getVMID());
++    int vm1Num = vm1.invoke("getVMID", () -> DUnitEnv.get().getVMID());
++
++    assertEquals(0, vm0Num);
++    assertEquals(1, vm1Num);
++  }
++
++  @Test
++  public void testInvokeNamedLambdaAsync() throws Throwable {
++    Host host = Host.getHost(0);
++    VM vm0 = host.getVM(0);
++
++    AsyncInvocation<Integer> async0 = vm0.invokeAsync("getVMID", () -> DUnitEnv.get().getVMID());
 +    int vm0num = async0.getResult();
 +
 +    assertEquals(0, vm0num);
 +  }
 +
 +  @Ignore("Test was never implemented")
 +  @Test
 +  public void testRemoteInvocationBoolean() {
 +  }
 +
 +  @Test
 +  public void testRemoteInvokeAsync() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +    String name = this.getUniqueName();
 +    String value = "Hello";
 +
 +    AsyncInvocation ai =
 +            vm.invokeAsync(() -> this.remoteBind( name, value ));
 +    ai.join();
 +    // TODO shouldn't we call fail() here?
 +    if (ai.exceptionOccurred()) {
 +      fail("remoteBind failed", ai.getException());
 +    }
 +
 +    ai = vm.invokeAsync(() -> this.remoteValidateBind(name, value ));
 +    ai.join();
 +    if (ai.exceptionOccurred()) {
 +      fail("remoteValidateBind failed", ai.getException());
 +    }
 +  }
 +
 +  @Test
 +  public void testRemoteInvokeAsyncWithException() throws Exception {
 +    Host host = Host.getHost(0);
 +    VM vm = host.getVM(0);
 +
 +    AsyncInvocation ai = vm.invokeAsync(() -> this.remoteThrowException());
 +    ai.join();
 +    assertTrue(ai.exceptionOccurred());
 +    Throwable ex = ai.getException();
 +    assertTrue(ex instanceof BasicTestException);
 +  }
 +
 +  /**
 +   * Accessed via reflection.  DO NOT REMOVE
 +   */
 +  private static void remoteThrowException() {
 +    String s = "Test exception.  Please ignore.";
 +    throw new BasicTestException(s);
 +  }
 +
 +  private static void remoteBind(String name, String value) {
 +    assertNotNull("name must not be null", name);
 +    assertNotNull("value must not be null", value);
 +    assertNotNull("bindings must not be null", bindings);
 +
 +    new JUnit4BasicDUnitTest().getSystem(); // forces connection
 +    bindings.setProperty(name, value);
 +  }
 +
 +  private static void remoteValidateBind(String name, String expected) {
 +    assertEquals(expected, bindings.getProperty(name));
 +  }
 +
 +  private static class BasicTestException extends RuntimeException {
 +    BasicTestException() {
 +      this("Test exception.  Please ignore.");
 +    }
 +    BasicTestException(String s) {
 +      super(s);
 +    }
 +  }
 +}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
index 27b1205,195d5f4..3d0105f
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
@@@ -93,23 -75,69 +93,46 @@@ public class BasicDUnitTest extends Dis
    public void testInvokeLambdaAsync() throws Throwable {
      Host host = Host.getHost(0);
      VM vm0 = host.getVM(0);
 -    
 +
      AsyncInvocation<Integer> async0 = vm0.invokeAsync(() -> DUnitEnv.get().getVMID());
      int vm0num = async0.getResult();
 -    
 +
      assertEquals(0, vm0num);
 -    
    }
  
+   public void testInvokeWithNamedLambda() {
+     Host host = Host.getHost(0);
+     VM vm0 = host.getVM(0);
+     VM vm1 = host.getVM(1);
 -    
++
+     int vm0Num = vm0.invoke("getVMID", () -> DUnitEnv.get().getVMID());
+     int vm1Num = vm1.invoke("getVMID", () -> DUnitEnv.get().getVMID());
 -    
++
+     assertEquals(0, vm0Num);
+     assertEquals(1, vm1Num);
 -    
+   }
 -  
++
+   public void testInvokeNamedLambdaAsync() throws Throwable {
+     Host host = Host.getHost(0);
+     VM vm0 = host.getVM(0);
 -    
++
+     AsyncInvocation<Integer> async0 = vm0.invokeAsync("getVMID", () -> DUnitEnv.get().getVMID());
+     int vm0num = async0.getResult();
 -    
 -    assertEquals(0, vm0num);
 -    
 -  }
 -
 -  static class BasicTestException extends RuntimeException {
 -    BasicTestException() {
 -      this("Test exception.  Please ignore.");
 -    }
+ 
 -    BasicTestException(String s) {
 -      super(s);
 -    }
 -  }
 -
 -  /**
 -   * Accessed via reflection.  DO NOT REMOVE
 -   *
 -   */
 -  protected static void remoteThrowException() {
 -    String s = "Test exception.  Please ignore.";
 -    throw new BasicTestException(s);
++    assertEquals(0, vm0num);
+   }
+ 
 -  public void _testRemoteInvocationBoolean() {
 -
++  // Test was never implemented
 +  public void ignore_testRemoteInvocationBoolean() {
    }
  
 -  public void testRemoteInvokeAsync() throws InterruptedException {
 +  public void testRemoteInvokeAsync() throws Exception {
      Host host = Host.getHost(0);
      VM vm = host.getVM(0);
 -    String name = this.getUniqueName();
 +    String name = getUniqueName();
      String value = "Hello";
  
 -    AsyncInvocation ai =
 -      vm.invokeAsync(() -> this.remoteBind( name, value ));
 +    AsyncInvocation ai = vm.invokeAsync(() -> remoteBind(name, value));
      ai.join();
      // TODO shouldn't we call fail() here?
      if (ai.exceptionOccurred()) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/216bbbd6/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientTestCase.java
----------------------------------------------------------------------



[37/45] incubator-geode git commit: GEODE-1031 Added some test related logging.

Posted by kl...@apache.org.
GEODE-1031 Added some test related logging.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/dc9e28a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/dc9e28a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/dc9e28a5

Branch: refs/heads/feature/GEODE-1050
Commit: dc9e28a5fe1f9bdb7c70a831f657c3c0e159b146
Parents: 6c069d2
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Fri Mar 11 17:16:31 2016 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Fri Mar 11 17:20:41 2016 -0800

----------------------------------------------------------------------
 .../internal/cache/tier/sockets/CacheClientProxy.java       | 8 +++++++-
 .../internal/cache/tier/sockets/DurableClientTestCase.java  | 9 +++++----
 2 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dc9e28a5/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
index f650fee..6edb570 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
@@ -98,6 +98,7 @@ import com.gemstone.gemfire.internal.cache.tier.sockets.command.Get70;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.internal.logging.LogWriterImpl;
 import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
@@ -139,7 +140,7 @@ public class CacheClientProxy implements ClientSession {
   /**
    * Concurrency: protected by synchronization of {@link #isMarkedForRemovalLock}
    */
-  protected boolean isMarkedForRemoval = false;
+  protected volatile boolean isMarkedForRemoval = false;
   
   /**
    * @see #isMarkedForRemoval
@@ -1880,6 +1881,11 @@ public class CacheClientProxy implements ClientSession {
       .append("; connected=").append(isConnected())
       .append("; isMarkedForRemoval=").append(isMarkedForRemoval)
       .append("]");
+    
+    if(_messageDispatcher != null && isAlive()) {
+     buffer.append( LogWriterImpl.getStackTrace(_messageDispatcher));
+    }
+      
     return buffer.toString();
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/dc9e28a5/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientTestCase.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientTestCase.java b/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientTestCase.java
index 1fc2e9f..1a37fbb 100755
--- a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientTestCase.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientTestCase.java
@@ -118,7 +118,7 @@ public class DurableClientTestCase extends DistributedTestCase {
   
   protected void preTearDownDurableClientTestCase() throws Exception {
   }
-
+  
   /**
    * Test that starting a durable client is correctly processed by the server.
    */
@@ -264,9 +264,10 @@ public class DurableClientTestCase extends DistributedTestCase {
     server1VM.invoke(s);
   }
   
-  private String printMap(Map m) {
+  private static String printMap(Map m) {
     Iterator<Map.Entry> itr = m.entrySet().iterator();
     StringBuffer sb = new StringBuffer();
+    sb.append("size = ").append(m.size()).append(" ");
     while(itr.hasNext()){
       sb.append("{");
       Map.Entry entry = itr.next();
@@ -278,7 +279,7 @@ public class DurableClientTestCase extends DistributedTestCase {
     return sb.toString();    
   }
   
-  private void printMapValue(Object value, StringBuffer sb) {
+  private static void printMapValue(Object value, StringBuffer sb) {
     if(value.getClass().isArray()) {
       
       sb.append("{");
@@ -1648,7 +1649,7 @@ public class DurableClientTestCase extends DistributedTestCase {
         
         if(ccp != null)
           result += " ccp: " + ccp.toString();*/
-        return getAllClientProxyState();
+        return getAllClientProxyState() + " CHM state: " + printMap(ClientHealthMonitor._instance.getConnectedClients(null));
       }
     };
     Wait.waitForCriterion(ev, 50 * 1000, 200, true);


[14/45] incubator-geode git commit: GEODE-952: Some time many unit tests fails because locator was ForcedDisconnect

Posted by kl...@apache.org.
GEODE-952: Some time many unit tests fails because locator was ForcedDisconnect

We're seeing a number of similar failures that all seem to be caused by JVMs
pausing and being kicked out of the distributed system.   This change-set
enables creation of a heap dump if a member is forced out of the system and
JVM pauses have been detected.  This will give us artifacts that we can
analyze to help determine what's going on.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/445efdb9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/445efdb9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/445efdb9

Branch: refs/heads/feature/GEODE-1050
Commit: 445efdb9e80326d4de4cc6b71e32dd80e04543b8
Parents: 70ca921
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Wed Mar 9 11:36:13 2016 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Wed Mar 9 14:31:30 2016 -0800

----------------------------------------------------------------------
 .../internal/InternalDistributedSystem.java     | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/445efdb9/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
index a193699..92cb9f8 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java
@@ -21,6 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.Reader;
 import java.lang.reflect.Array;
+import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.Date;
@@ -76,6 +77,7 @@ import com.gemstone.gemfire.internal.InternalDataSerializer;
 import com.gemstone.gemfire.internal.InternalInstantiator;
 import com.gemstone.gemfire.internal.LinuxProcFsStatistics;
 import com.gemstone.gemfire.internal.LocalStatisticsImpl;
+import com.gemstone.gemfire.internal.OSProcess;
 import com.gemstone.gemfire.internal.OsStatisticsFactory;
 import com.gemstone.gemfire.internal.SocketCreator;
 import com.gemstone.gemfire.internal.StatisticsImpl;
@@ -83,8 +85,8 @@ import com.gemstone.gemfire.internal.StatisticsManager;
 import com.gemstone.gemfire.internal.StatisticsTypeFactoryImpl;
 import com.gemstone.gemfire.internal.SystemTimer;
 import com.gemstone.gemfire.internal.admin.remote.DistributionLocatorId;
-import com.gemstone.gemfire.internal.cache.CacheServerImpl;
 import com.gemstone.gemfire.internal.cache.CacheConfig;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
 import com.gemstone.gemfire.internal.cache.EventID;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.internal.cache.execute.FunctionServiceStats;
@@ -944,6 +946,22 @@ public class InternalDistributedSystem
     if (isForcedDisconnect) {
       this.forcedDisconnect = true;
       resetReconnectAttemptCounter();
+      if (sampler.isSamplingEnabled()) {
+        if (sampler.getStatSamplerStats().getJvmPauses() > 0) {
+          try {
+            // if running tests then create a heap dump
+            Class.forName("com.gemstone.gemfire.test.dunit.standalone.DUnitLauncher");
+            Class<?> jmapClass = Class.forName("sun.tools.jmap.JMap");
+            logger.info("This member of the distributed system has been forced to disconnect.  JVM pauses have been detected - dumping heap");
+            String pid = String.valueOf(OSProcess.getId());
+            String fileName = "java"+pid+".hprof";
+            Object parameters = new String[]{"-dump:format=b,file="+fileName, pid};
+            Method main = jmapClass.getDeclaredMethod("main", String[].class);
+            main.invoke(null, parameters);
+          } catch (Exception e) {
+          }
+        }
+      }
     
      reconnected = tryReconnect(true, reason, GemFireCacheImpl.getInstance());
     }


[23/45] incubator-geode git commit: GEODE-1010: CI Failure: PutAllCSDUnitTest.testBug51725_singlehup

Posted by kl...@apache.org.
GEODE-1010: CI Failure: PutAllCSDUnitTest.testBug51725_singlehup

Removed the use of AvailablePort/AvailablePortHelper from this set of tests.
The tests now start cache servers on port 0 and get the actual port to
use for configuring clients.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/b8d4db2a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/b8d4db2a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/b8d4db2a

Branch: refs/heads/feature/GEODE-1050
Commit: b8d4db2afc19570c8976919c78bfcb424d060ce5
Parents: 6ce7e83
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Thu Mar 10 11:33:06 2016 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Thu Mar 10 11:33:06 2016 -0800

----------------------------------------------------------------------
 .../internal/cache/PutAllCSDUnitTest.java       | 225 ++++++-------------
 1 file changed, 63 insertions(+), 162 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b8d4db2a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/PutAllCSDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/PutAllCSDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/PutAllCSDUnitTest.java
index cc5876f..cfe8618 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/PutAllCSDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/PutAllCSDUnitTest.java
@@ -71,8 +71,6 @@ import com.gemstone.gemfire.cache.util.CacheWriterAdapter;
 import com.gemstone.gemfire.cache30.CacheSerializableRunnable;
 import com.gemstone.gemfire.cache30.ClientServerTestCase;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.internal.AvailablePort;
-import com.gemstone.gemfire.internal.AvailablePortHelper;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.test.dunit.Assert;
@@ -155,11 +153,10 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client1 = host.getVM(2);
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
-    final int serverPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server.getHost());
 
     // set <false, true> means <PR=false, notifyBySubscription=true> to enable registerInterest and CQ
-    createBridgeServer(server, regionName, serverPort, false, 0, null);
+    final int serverPort = createBridgeServer(server, regionName, 0, false, 0, null);
     createClient(client1, regionName, serverHost, new int[] {serverPort}, -1, -1, false, true, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort}, -1, -1, false, true, true);
 
@@ -426,14 +423,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
   
     // set notifyBySubscription=false to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
     createClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, -1, false, true, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort2}, -1, -1, false, true, true);
   
@@ -497,14 +491,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=false to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
+    
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, -1, true);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2}, -1, -1, true);
 
@@ -897,9 +889,10 @@ public void testOneServer() throws CacheException, InterruptedException {
         Region region = createRegion(regionName, af.create());
 
         CacheServer server = getCache().addCacheServer();
-        int port = AvailablePortHelper.getRandomAvailableTCPPort();
+        int port = 0;
         server.setPort(port);
         server.start();
+        port = server.getPort();
         return port;
       }
     };
@@ -1142,14 +1135,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
 
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, isPR, redundantCopies, null);
-    createBridgeServer(server2, regionName, serverPort2, isPR, redundantCopies, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, isPR, redundantCopies, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, isPR, redundantCopies, null);
+    
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, 59000, false);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2}, -1, 59000, false);
 
@@ -1291,14 +1282,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     final VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
-    // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, true, 0, "ds1");
-    createBridgeServer(server2, regionName, serverPort2, true, 0, "ds1");
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 0, "ds1");
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 0, "ds1");
+    
+    
     createClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, 59000, false, false, enableSingleHop);
     createClient(client2, regionName, serverHost, new int[] {serverPort1}, -1, 59000, false, false, enableSingleHop);
 
@@ -1396,14 +1385,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, true, 1, null);
-    createBridgeServer(server2, regionName, serverPort2, true, 1, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 1, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 1, null);
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, 59000, false);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2}, -1, 59000, false);
     
@@ -1772,11 +1758,10 @@ public void testOneServer() throws CacheException, InterruptedException {
     final VM client1 = host.getVM(1);
     final String regionName = getUniqueName();
 
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
     createClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, -1, false, true, true);
  
     server1.invoke(addExceptionTag1(expectedExceptions));
@@ -1825,14 +1810,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     final VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
     createClient(client1, regionName, serverHost, new int[] {serverPort1}, -1, -1, false, true, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort1}, -1, -1, false, true, true);
     
@@ -2113,14 +2095,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, true, 0, "ds1");
-    createBridgeServer(server2, regionName, serverPort2, true, 0, "ds1");
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 0, "ds1");
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 0, "ds1");
     createClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, false, false, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, false, false, true);
 
@@ -2293,14 +2272,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     final VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, true, 0, "ds1");
-    createBridgeServer(server2, regionName, serverPort2, true, 0, "ds1");
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 0, "ds1");
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 0, "ds1");
     createClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, false, false, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, false, false, true);
 
@@ -2525,14 +2501,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     final VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPort1, true, 1, "ds1");
-    createBridgeServer(server2, regionName, serverPort2, true, 1, "ds1");
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 1, "ds1");
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 1, "ds1");
     createClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, false, false, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, false, false, true);
 
@@ -2684,7 +2657,7 @@ public void testOneServer() throws CacheException, InterruptedException {
     final VM client1 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int[] serverPorts = AvailablePortHelper.getRandomAvailableTCPPorts(3);
+    final int[] serverPorts = new int[3];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
     
     final SharedCounter sc_server1 = new SharedCounter("server1");
@@ -2693,9 +2666,9 @@ public void testOneServer() throws CacheException, InterruptedException {
     final SharedCounter sc_client2 = new SharedCounter("client2");
 
     // set <true, false> means <PR=true, notifyBySubscription=false> to test local-invalidates
-    createBridgeServer(server1, regionName, serverPorts[0], true, 0, null);
-    createBridgeServer(server2, regionName, serverPorts[1], true, 0, null);
-    createBridgeServer(server3, regionName, serverPorts[2], true, 0, null);
+    serverPorts[0] = createBridgeServer(server1, regionName, 0, true, 0, null);
+    serverPorts[1] = createBridgeServer(server2, regionName, 0, true, 0, null);
+    serverPorts[2] = createBridgeServer(server3, regionName, 0, true, 0, null);
     createClient(client1, regionName, serverHost, serverPorts, -1, -1, false, true, true);
 
     {
@@ -2828,14 +2801,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
+    
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, true);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2, serverPort1}, -1, -1, true);
 
@@ -2928,14 +2899,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    int serverPorts[] = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-    final int serverPort1 = serverPorts[0];
-    final int serverPort2 = serverPorts[1];
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
+    
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, -1, -1, true);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2, serverPort1}, -1, -1, true);
 
@@ -2991,13 +2960,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
+    
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, 1, -1, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort2, serverPort1}, 1, -1, false, true, true);
 
@@ -3045,56 +3013,6 @@ public void testOneServer() throws CacheException, InterruptedException {
     stopBridgeServers(getCache());
   }
 
-  /**
-   * Tests while putAll OOM behaviors: Dunit test does not support it so far
-   */
-  /*
-   * public void testOOMBehaviors() throws CacheException,InterruptedException {
-   * final String title = "testOOM:"; disconnectAllFromDS();
-   * 
-   * final Host host = Host.getHost(0); VM server1 = host.getVM(0); VM client1 =
-   * host.getVM(2);
-   *  // Start server server1.invoke(new CacheSerializableRunnable(title+"Create
-   * Bridge Server 1") { public void run2() throws CacheException { Properties
-   * config = new Properties(); config.setProperty("log-level", "info"); // int
-   * unusedPort = AvailablePort.getRandomAvailablePort(AvailablePort.JGROUPS); //
-   * config.setProperty("mcast-port", String.valueOf(unusedPort)); // system =
-   * (InternalDistributedSystem) DistributedSystem.connect(config); system =
-   * (new PutAllCSDUnitTest("temp")).getSystem(config); AttributesFactory
-   * factory = new AttributesFactory(); factory.setScope(Scope.DISTRIBUTED_ACK);
-   * factory.setDataPolicy(DataPolicy.REPLICATE); Region region =
-   * createRegion(name, factory.create()); pause(1000); try {
-   * startBridgeServer(0, true, 0); } catch (Exception ex) { fail("While
-   * starting CacheServer", ex); } } });
-   *  // Create client region Object params[] = new Object[1]; params[0] = new
-   * Integer(0); final int port0 = server1.invokeInt(PutAllCSDUnitTest.class,
-   * "getCacheServerPort", params); final String host0 =
-   * server1.getHost().getHostName(); client1.invoke(new
-   * CacheSerializableRunnable(title+"client1 Create region") { public void
-   * run2() throws CacheException { Properties config = new Properties();
-   * config.setProperty("mcast-port", "0"); system = (InternalDistributedSystem)
-   * DistributedSystem.connect(config); getCache(); AttributesFactory factory =
-   * new AttributesFactory(); factory.setScope(Scope.LOCAL);
-   * factory.setDataPolicy(DataPolicy.EMPTY); PoolManager.createFactory()
-   * .addServer(host0, port0) .setQueueEnabled(true) .setReadTimeout(600000)
-   * .create("myPool"); factory.setPoolName("myPool"); Region region =
-   * createRegion(name, factory.create()); } });
-   *  // test OOM exception try { client1.invoke(new
-   * CacheSerializableRunnable(title+"client1 execute putAll") { public void
-   * run2() throws CacheException { Region region =
-   * getRootRegion().getSubregion(name); for (int j=0; j<5; j++) {
-   * LinkedHashMap map = new LinkedHashMap(); for (int i=0; i<bignumberOfEntries;
-   * i++) { map.put("key-"+j+"-"+i, new TestObject(i)); } try {
-   * region.putAll(map); } catch (OutOfMemoryError oome) {
-   * System.out.println("GGGY:"+oome.getClass()+":"+oome.getMessage());
-   *  } catch (Throwable e) {
-   * System.out.println("GGGX:"+e.getClass()+":"+e.getMessage()); } } // for j }
-   * }); } finally { client1.bounce(); }
-   *  // clean up server1.invoke(new SerializableRunnable(title+"Stop
-   * CacheServer 1") { public void run() { pause(2000);
-   * stopBridgeServer(getCache()); } });
-   *  }
-   */
 
   /**
    * Tests while putAll to 2 distributed servers, one server failed over Add a
@@ -3111,13 +3029,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
     // set queueRedundency=1
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1, serverPort2}, 1, -1, true);
     createClient(client2, regionName, serverHost, new int[] {serverPort2, serverPort1}, 1, -1, false, true, true);
@@ -3203,13 +3119,13 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM server2 = host.getVM(1);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
 //    final String serverHost = getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    
+    
 
     // add slow listener
     server1.invoke(new CacheSerializableRunnable(title+"server1 add slow listener") {
@@ -3368,13 +3284,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, true, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, true, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 0, null);
     // set queueRedundency=1
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1}, 0, 59000, true);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2}, 0, 59000, true);
@@ -3468,13 +3382,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client2 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, true, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, true, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 0, null);
     // set queueRedundency=1
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1}, 0, 59000, true);
     createBridgeClient(client2, regionName, serverHost, new int[] {serverPort2}, 0, 59000, true);
@@ -3570,15 +3482,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client1 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort3 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, true, 1, null);
-    createBridgeServer(server2, regionName, serverPort2, true, 1, null);
-    createBridgeServer(server3, regionName, serverPort3, true, 1, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 1, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 1, null);
+    final int serverPort3 = createBridgeServer(server3, regionName, 0, true, 1, null);
     // set queueRedundency=1
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort3}, 0, 59000, true);
     
@@ -3678,15 +3587,12 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client1 = host.getVM(3);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort3 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, true, 1, null);
-    createBridgeServer(server2, regionName, serverPort2, true, 1, null);
-    createBridgeServer(server3, regionName, serverPort3, true, 1, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, true, 1, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, true, 1, null);
+    final int serverPort3 = createBridgeServer(server3, regionName, 0, true, 1, null);
     // set queueRedundency=1
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort3}, 0, 59000, true);
     
@@ -3789,13 +3695,11 @@ public void testOneServer() throws CacheException, InterruptedException {
     VM client1 = host.getVM(2);
     final String regionName = getUniqueName();
     
-    final int serverPort1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final int serverPort2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
     final String serverHost = NetworkUtils.getServerHostName(server1.getHost());
 
     // set notifyBySubscription=true to test register interest
-    createBridgeServer(server1, regionName, serverPort1, false, 0, null);
-    createBridgeServer(server2, regionName, serverPort2, false, 0, null);
+    final int serverPort1 = createBridgeServer(server1, regionName, 0, false, 0, null);
+    final int serverPort2 = createBridgeServer(server2, regionName, 0, false, 0, null);
     // set queueRedundency=1
     createBridgeClient(client1, regionName, serverHost, new int[] {serverPort1}, 0, 59000, true);
 
@@ -3866,10 +3770,10 @@ public void testOneServer() throws CacheException, InterruptedException {
     
   }
 
-  private void createBridgeServer(VM server, final String regionName, final int serverPort, final boolean createPR, final int redundantCopies, final String diskStoreName) {
-    server.invoke(new CacheSerializableRunnable("Create server") {
+  private int createBridgeServer(VM server, final String regionName, final int serverPort, final boolean createPR, final int redundantCopies, final String diskStoreName) {
+    return (Integer)server.invoke(new SerializableCallable("Create server") {
       @SuppressWarnings("synthetic-access")
-      public void run2() throws CacheException {
+      public Object call() throws Exception {
         // Create DS
         Properties config = new Properties();
         config.setProperty("locators", "localhost["+DistributedTestUtils.getDUnitLocatorPort()+"]");
@@ -3924,12 +3828,9 @@ public void testOneServer() throws CacheException, InterruptedException {
         } else {
           assertTrue(region instanceof DistributedRegion);
         }
-        try {
-          int retPort = startBridgeServer(serverPort);
-          LogWriterUtils.getLogWriter().info("Cache Server Started:"+retPort+":"+serverPort);
-        } catch (Exception e) {
-          Assert.fail("While starting CacheServer", e);
-        }
+        int retPort = startBridgeServer(serverPort);
+        LogWriterUtils.getLogWriter().info("Cache Server Started:"+retPort+":"+serverPort);
+        return retPort;
       }
     });
   }


[19/45] incubator-geode git commit: GEODE-1030 remove multicast ops check before region ops.

Posted by kl...@apache.org.
GEODE-1030 remove multicast ops check before region ops.

Some time test can get packet from other test.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/b3134705
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/b3134705
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/b3134705

Branch: refs/heads/feature/GEODE-1050
Commit: b3134705480b4b14d51c15d83477c44ba5a2a282
Parents: 41f4f14
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Wed Mar 9 14:40:39 2016 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Thu Mar 10 09:47:24 2016 -0800

----------------------------------------------------------------------
 .../gemfire/cache30/DistributedMulticastRegionDUnitTest.java  | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/b3134705/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
index 9a0a6dd..01632a4 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
@@ -97,7 +97,8 @@ public class DistributedMulticastRegionDUnitTest extends CacheTestCase {
     //1. start locator with mcast port
     vm0.invoke(create);
     vm1.invoke(create);
-    
+    //There is possibility that you may get this packet from other tests
+    /*
     SerializableRunnable validateMulticastBeforeRegionOps =
         new CacheSerializableRunnable("validateMulticast before region ops") {
             public void run2() throws CacheException {
@@ -107,6 +108,7 @@ public class DistributedMulticastRegionDUnitTest extends CacheTestCase {
       
     vm0.invoke(validateMulticastBeforeRegionOps);
     vm1.invoke(validateMulticastBeforeRegionOps);
+    */
     
     SerializableRunnable doPuts =
       new CacheSerializableRunnable("do put") {
@@ -181,6 +183,8 @@ public class DistributedMulticastRegionDUnitTest extends CacheTestCase {
       vm0.invoke(create);
       vm1.invoke(create);
       
+    //There is possibility that you may get this packet from other tests
+      /*
       SerializableRunnable validateMulticastBeforeRegionOps =
           new CacheSerializableRunnable("validateMulticast before region ops") {
               public void run2() throws CacheException {
@@ -190,6 +194,7 @@ public class DistributedMulticastRegionDUnitTest extends CacheTestCase {
         
       vm0.invoke(validateMulticastBeforeRegionOps);
       vm1.invoke(validateMulticastBeforeRegionOps);
+      */
       
       SerializableRunnable doPuts =
         new CacheSerializableRunnable("do put") {


[15/45] incubator-geode git commit: GEODE-1037 CI failure: PdxClientServerDUnitTest.testNonPersistentServerRestart

Posted by kl...@apache.org.
GEODE-1037 CI failure: PdxClientServerDUnitTest.testNonPersistentServerRestart

Altered the test to make sure the client cache knows that the server has
shut down prior to restarting the server.  This ensures that the listener
is invoked and clears the PDX type registry.

This commit also includes some code clean-up in PDX and the client pool.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/c394bf0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/c394bf0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/c394bf0f

Branch: refs/heads/feature/GEODE-1050
Commit: c394bf0f28fd626a3acad324ae5a507f86c7ea59
Parents: 445efdb
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Wed Mar 9 16:18:13 2016 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Wed Mar 9 16:18:13 2016 -0800

----------------------------------------------------------------------
 .../gemfire/cache/client/internal/Endpoint.java |  2 +-
 .../internal/PdxRegistryRecoveryListener.java   |  6 +--
 .../gemfire/cache/client/internal/PoolImpl.java |  5 ++-
 .../internal/LonerDistributionManager.java      |  4 +-
 .../gemstone/gemfire/pdx/internal/PdxType.java  |  2 +-
 .../gemfire/pdx/PdxClientServerDUnitTest.java   | 46 +++++++++++++-------
 6 files changed, 42 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c394bf0f/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/Endpoint.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/Endpoint.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/Endpoint.java
index b4d5444..660998c 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/Endpoint.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/Endpoint.java
@@ -69,7 +69,7 @@ public class Endpoint {
   }
   
   public boolean isClosed() {
-    return closed == true;
+    return closed;
   }
 
   public ConnectionStats getStats() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c394bf0f/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PdxRegistryRecoveryListener.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PdxRegistryRecoveryListener.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PdxRegistryRecoveryListener.java
index 7417573..85e0317 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PdxRegistryRecoveryListener.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PdxRegistryRecoveryListener.java
@@ -74,14 +74,14 @@ public class PdxRegistryRecoveryListener extends EndpointManager.EndpointListene
     if (logger.isDebugEnabled()) {
       logger.debug("PdxRegistryRecoveryListener - EndpointNowInUse. Now have {} endpoints", count);
     }
-    if(count == 1) {
+    if (count == 1) {
       GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
-      if(cache == null) {
+      if (cache == null) {
         return;
       }
       TypeRegistry registry = cache.getPdxRegistry();
       
-      if(registry == null) {
+      if (registry == null) {
         return;
       }
       registry.clear();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c394bf0f/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PoolImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PoolImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PoolImpl.java
index 8aa5ce2..ccfdd6d 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PoolImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PoolImpl.java
@@ -79,6 +79,8 @@ import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
  * @since 5.7
  */
 public class PoolImpl implements InternalPool {
+  public static final String ON_DISCONNECT_CLEAR_PDXTYPEIDS = "gemfire.ON_DISCONNECT_CLEAR_PDXTYPEIDS";
+
   private static final Logger logger = LogService.getLogger();
   
   public static final int HANDSHAKE_TIMEOUT = Long.getLong("gemfire.PoolImpl.HANDSHAKE_TIMEOUT", AcceptorImpl.DEFAULT_HANDSHAKE_TIMEOUT_MS).intValue();
@@ -320,8 +322,9 @@ public class PoolImpl implements InternalPool {
     connectionFactory.start(backgroundProcessor);
     endpointManager.addListener(new InstantiatorRecoveryListener(backgroundProcessor, this));
     endpointManager.addListener(new DataSerializerRecoveryListener(backgroundProcessor, this));
-    if(Boolean.getBoolean("gemfire.ON_DISCONNECT_CLEAR_PDXTYPEIDS"))
+    if (Boolean.getBoolean(ON_DISCONNECT_CLEAR_PDXTYPEIDS)) {
       endpointManager.addListener(new PdxRegistryRecoveryListener(this));
+    }
     endpointManager.addListener(new LiveServerPinger(this));
     
     manager.start(backgroundProcessor);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c394bf0f/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
index c958028..4ca478f 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
@@ -846,10 +846,10 @@ public class LonerDistributionManager implements DM {
    * @param newPort the new port to use
    */
   public void updateLonerPort(int newPort) {
-    this.lonerPort = newPort;
-    this.getId().setPort(this.lonerPort);
     this.logger.config(LocalizedStrings.LonerDistributionmanager_CHANGING_PORT_FROM_TO,
         new Object[]{this.lonerPort, newPort, getId()});
+    this.lonerPort = newPort;
+    this.getId().setPort(this.lonerPort);
   }
   public boolean isCurrentMember(InternalDistributedMember p_id) {
     return getId().equals(p_id);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c394bf0f/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxType.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxType.java b/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxType.java
index 36f4cc1..00d87de 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxType.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxType.java
@@ -347,7 +347,7 @@ public class PdxType implements DataSerializable {
   public String toFormattedString() {
     StringBuffer sb = new StringBuffer("PdxType[\n    ");
     sb.append("dsid=").append(getDSId());
-    sb.append("typenum=").append(getTypeNum());
+    sb.append(", typenum=").append(getTypeNum());
     sb.append(", name=").append(this.className);
     sb.append(", fields=[");
     for (PdxField vft : fields) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c394bf0f/geode-core/src/test/java/com/gemstone/gemfire/pdx/PdxClientServerDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/pdx/PdxClientServerDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/pdx/PdxClientServerDUnitTest.java
index 7720890..3e34236 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/pdx/PdxClientServerDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/pdx/PdxClientServerDUnitTest.java
@@ -32,6 +32,7 @@ import com.gemstone.gemfire.cache.client.ClientCacheFactory;
 import com.gemstone.gemfire.cache.client.ClientRegionShortcut;
 import com.gemstone.gemfire.cache.client.PoolFactory;
 import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.client.internal.PoolImpl;
 import com.gemstone.gemfire.cache.query.internal.DefaultQuery;
 import com.gemstone.gemfire.cache.server.CacheServer;
 import com.gemstone.gemfire.cache30.CacheTestCase;
@@ -92,8 +93,9 @@ public class PdxClientServerDUnitTest extends CacheTestCase {
   }
   
   /**
-   * Test of bug 47338 - what happens to the client type
-   * registry if the server is restarted.
+   * Test what happens to the client type
+   * registry if the server is restarted and PDX serialization
+   * for a class has changed.  This was reported in Pivotal bug #47338
    */
   public void testNonPersistentServerRestart() {
     Host host = Host.getHost(0);
@@ -115,6 +117,22 @@ public class PdxClientServerDUnitTest extends CacheTestCase {
     });
     
     closeCache(vm0);
+    
+    // GEODE-1037: make sure the client knows that the server
+    // is gone
+    vm1.invoke(new SerializableRunnable() {
+      public void run() throws Exception {
+        Region r = getRootRegion("testSimplePdx");
+        // make sure the client has reconnected to the server
+        // by performing a get() on a key the client cache does
+        // not contain
+        try {
+          r.get(4);
+          throw new Error("expected an exception to be thrown");
+        } catch(Exception expected) { }
+      }
+    });
+    
     createServerRegion(vm0, port);
     createClientRegion(vm2, port, false, true);
     
@@ -129,17 +147,15 @@ public class PdxClientServerDUnitTest extends CacheTestCase {
       }
     });
     
-    //See what happens when vm1 tries to read the type.
-    //If it cached the type id it will have problems.
+    // See what happens when vm1 tries to read the type.
+    // If it cached the type id it will try to read a PdxType2
+    // and fail with a ServerOperationException having a
+    // PdxSerializationException "cause" 
     vm1.invoke(new SerializableCallable() {
       public Object call() throws Exception {
         Region r = getRootRegion("testSimplePdx");
-        try {
-          r.get(4);
-        } catch(Exception expected) {
-          //The client may not have noticed the server go away and come
-          //back. Let's trigger the exception so the client will retry.
-        }
+
+        // now get object 3, which was put in the server by vm2
         PdxType1 results = (PdxType1) r.get(3);
         assertEquals(3, results.int1);
         
@@ -700,18 +716,18 @@ public class PdxClientServerDUnitTest extends CacheTestCase {
       final String ... autoSerializerPatterns) {
     SerializableCallable createRegion = new SerializableCallable() {
       public Object call() throws Exception {
-	    if(setPdxTypeClearProp) {
-		  System.setProperty("gemfire.ON_DISCONNECT_CLEAR_PDXTYPEIDS", "true");	
-		}
+        if (setPdxTypeClearProp) {
+          System.setProperty(PoolImpl.ON_DISCONNECT_CLEAR_PDXTYPEIDS, "true");	
+        }
         ClientCacheFactory cf = new ClientCacheFactory();
         cf.addPoolServer(NetworkUtils.getServerHostName(vm.getHost()), port);
         cf.setPoolThreadLocalConnections(threadLocalConnections);
-        if(autoSerializerPatterns != null && autoSerializerPatterns.length != 0) {
+        if (autoSerializerPatterns != null && autoSerializerPatterns.length != 0) {
           cf.setPdxSerializer(new ReflectionBasedAutoSerializer(autoSerializerPatterns));
         }
         ClientCache cache = getClientCache(cf);
         cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY)
-        .create("testSimplePdx");
+          .create("testSimplePdx");
         return null;
       }
     };


[06/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DataAsAddressJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DataAsAddressJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DataAsAddressJUnitTest.java
deleted file mode 100644
index 8a251fd..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DataAsAddressJUnitTest.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.gemstone.gemfire.internal.offheap;
-
-import com.gemstone.gemfire.compression.Compressor;
-import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
-import com.gemstone.gemfire.internal.cache.CachePerfStats;
-import com.gemstone.gemfire.internal.cache.EntryEventImpl;
-import com.gemstone.gemfire.internal.cache.RegionEntryContext;
-import com.gemstone.gemfire.internal.offheap.DataAsAddress;
-
-import com.gemstone.gemfire.internal.offheap.OffHeapRegionEntryHelper;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.mockito.Mock;
-
-import java.nio.ByteBuffer;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.*;
-
-@Category(UnitTest.class)
-public class DataAsAddressJUnitTest extends AbstractStoredObjectTestBase {
-
-    @Override
-    public Object getValue() {
-        return Integer.valueOf(123456789);
-    }
-
-    @Override
-    public byte[] getValueAsByteArray() {
-        return convertValueToByteArray(getValue());
-    }
-
-    private byte[] convertValueToByteArray(Object value) {
-        return ByteBuffer.allocate(Integer.SIZE / Byte.SIZE).putInt((Integer) value).array();
-    }
-
-    @Override
-    public Object convertByteArrayToObject(byte[] valueInByteArray) {
-        return ByteBuffer.wrap(valueInByteArray).getInt();
-    }
-
-    @Override
-    public Object convertSerializedByteArrayToObject(byte[] valueInSerializedByteArray) {
-       return EntryEventImpl.deserialize(valueInSerializedByteArray);
-    }
-
-    @Override
-    public DataAsAddress createValueAsUnserializedStoredObject(Object value) {
-        byte[] valueInByteArray;
-        if(value instanceof Integer) {
-            valueInByteArray = convertValueToByteArray(value);
-        } else {
-            valueInByteArray = (byte[]) value;
-        }
-        //encode a non-serialized entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInByteArray, false, false);
-        return new DataAsAddress(encodedAddress);
-    }
-
-    @Override
-    public DataAsAddress createValueAsSerializedStoredObject(Object value) {
-        byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
-        //encode a serialized entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInSerializedByteArray, true, false);
-        return new DataAsAddress(encodedAddress);
-    }
-
-    public DataAsAddress createValueAsCompressedStoredObject(Object value) {
-        byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
-        //encode a serialized, compressed entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInSerializedByteArray, true, true);
-        return new DataAsAddress(encodedAddress);
-    }
-
-    public DataAsAddress createValueAsUncompressedStoredObject(Object value) {
-        byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
-        //encode a serialized, uncompressed entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInSerializedByteArray, true, false);
-        return new DataAsAddress(encodedAddress);
-    }
-
-    @Test
-    public void shouldReturnCorrectEncodingAddress() {
-
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        assertNotNull(address1);
-        assertEquals("Encoding address should be:", 10001, address1.getEncodedAddress());
-
-        DataAsAddress address2 = new DataAsAddress(10002L);
-        assertNotNull(address2);
-        assertEquals("Returning always 10001 expected 10002", 10002, address2.getEncodedAddress());
-    }
-
-    @Test
-    public void twoAddressesShouldBeEqualIfEncodingAddressIsSame() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        DataAsAddress address2 = new DataAsAddress(10001L);
-
-        assertEquals("Two addresses are equal if encoding address is same", true, address1.equals(address2));
-    }
-
-    @Test
-    public void twoAddressesShouldNotBeEqualIfEncodingAddressIsNotSame() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        DataAsAddress address2 = new DataAsAddress(10002L);
-
-        assertEquals("Two addresses are not equal if encoding address is not same", false, address1.equals(address2));
-    }
-
-    @Test
-    public void twoAddressesAreNotEqualIfTheyAreNotTypeDataAsAddress() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        Long address2 = new Long(10002L);
-
-        assertEquals("Two addresses are not equal if encoding address is not same", false, address1.equals(address2));
-    }
-
-    @Test
-    public void addressHashCodeShouldBe() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        assertEquals("", 10001, address1.hashCode());
-    }
-
-    @Test
-    public void getSizeInBytesAlwaysReturnsZero() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        DataAsAddress address2 = new DataAsAddress(10002L);
-
-        assertEquals("getSizeInBytes", 0, address1.getSizeInBytes());
-        assertEquals("getSizeInBytes", 0, address2.getSizeInBytes());
-    }
-
-    @Test
-    public void getValueSizeInBytesAlwaysReturnsZero() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        DataAsAddress address2 = new DataAsAddress(10002L);
-
-        assertEquals("getSizeInBytes", 0, address1.getValueSizeInBytes());
-        assertEquals("getSizeInBytes", 0, address2.getValueSizeInBytes());
-    }
-
-    @Test
-    public void retainShouldAlwaysBeTrue() {
-        DataAsAddress address1 = new DataAsAddress(10001L);
-        DataAsAddress address2 = new DataAsAddress(10002L);
-
-        assertEquals("retain", true, address1.retain());
-        assertEquals("retain", true, address2.retain());
-    }
-
-    @Test
-    public void dataAsAddressShouldImplementReleaseToAdhereToStoredObject() {
-        DataAsAddress address = new DataAsAddress(10001L);
-        address.release();
-    }
-
-    @Test
-    public void isCompressedShouldReturnTrueIfCompressed() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsCompressedStoredObject(regionEntryValue);
-
-        assertEquals("Should return true as it is compressed", true, offheapAddress.isCompressed());
-    }
-
-    @Test
-    public void isCompressedShouldReturnFalseIfNotCompressed() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsUncompressedStoredObject(regionEntryValue);
-
-        assertEquals("Should return false as it is compressed", false, offheapAddress.isCompressed());
-    }
-
-    @Test
-    public void isSerializedShouldReturnTrueIfSeriazlied() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsSerializedStoredObject(regionEntryValue);
-
-        assertEquals("Should return true as it is serialized", true, offheapAddress.isSerialized());
-    }
-
-    @Test
-    public void isSerializedShouldReturnFalseIfNotSeriazlied() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsUnserializedStoredObject(regionEntryValue);
-
-        assertEquals("Should return false as it is serialized", false, offheapAddress.isSerialized());
-    }
-
-    @Test
-    public void getDecompressedBytesShouldReturnDecompressedBytesIfCompressed() {
-        Object regionEntryValue = getValue();
-        byte[] regionEntryValueAsBytes =  convertValueToByteArray(regionEntryValue);
-
-        //encode a non-serialized and compressed entry value to address - last argument is to let that it is compressed
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(regionEntryValueAsBytes, false, true);
-        DataAsAddress offheapAddress = new DataAsAddress(encodedAddress);
-
-        RegionEntryContext regionContext = mock(RegionEntryContext.class);
-        CachePerfStats cacheStats = mock(CachePerfStats.class);
-        Compressor compressor = mock(Compressor.class);
-
-        long startTime = 10000L;
-
-        //mock required things
-        when(regionContext.getCompressor()).thenReturn(compressor);
-        when(compressor.decompress(regionEntryValueAsBytes)).thenReturn(regionEntryValueAsBytes);
-        when(regionContext.getCachePerfStats()).thenReturn(cacheStats);
-        when(cacheStats.startDecompression()).thenReturn(startTime);
-
-        //invoke the thing
-        byte[] bytes = offheapAddress.getDecompressedBytes(regionContext);
-
-        //verify the thing happened
-        verify(cacheStats, atLeastOnce()).startDecompression();
-        verify(compressor, times(1)).decompress(regionEntryValueAsBytes);
-        verify(cacheStats, atLeastOnce()).endDecompression(startTime);
-
-        assertArrayEquals(regionEntryValueAsBytes, bytes);
-    }
-
-    @Test
-    public void getDecompressedBytesShouldNotTryToDecompressIfNotCompressed() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsUncompressedStoredObject(regionEntryValue);
-
-        //mock the thing
-        RegionEntryContext regionContext = mock(RegionEntryContext.class);
-        Compressor compressor = mock(Compressor.class);
-        when(regionContext.getCompressor()).thenReturn(compressor);
-
-        //invoke the thing
-        byte[] actualValueInBytes = offheapAddress.getDecompressedBytes(regionContext);
-
-        //createValueAsUncompressedStoredObject does uses a serialized value - so convert it to object
-        Object actualRegionValue = convertSerializedByteArrayToObject(actualValueInBytes);
-
-        //verify the thing happened
-        verify(regionContext, never()).getCompressor();
-        assertEquals(regionEntryValue, actualRegionValue);
-    }
-
-    @Test
-    public void getRawBytesShouldReturnAByteArray() {
-        byte[] regionEntryValueAsBytes = getValueAsByteArray();
-
-        DataAsAddress offheapAddress = createValueAsUnserializedStoredObject(regionEntryValueAsBytes);
-        byte[] actual = offheapAddress.getRawBytes();
-
-        assertArrayEquals(regionEntryValueAsBytes, actual);
-    }
-
-    @Test
-    public void getSerializedValueShouldReturnASerializedByteArray() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsSerializedStoredObject(regionEntryValue);
-
-        byte[] actualSerializedValue = offheapAddress.getSerializedValue();
-
-        Object actualRegionEntryValue = convertSerializedByteArrayToObject(actualSerializedValue);
-
-        assertEquals(regionEntryValue, actualRegionEntryValue);
-    }
-
-    @Test
-    public void getDeserializedObjectShouldReturnADeserializedObject() {
-        Object regionEntryValue = getValue();
-
-        DataAsAddress offheapAddress = createValueAsSerializedStoredObject(regionEntryValue);
-
-        Integer actualRegionEntryValue = (Integer) offheapAddress.getDeserializedValue(null, null);
-
-        assertEquals(regionEntryValue, actualRegionEntryValue);
-    }
-
-    @Test
-    public void getDeserializedObjectShouldReturnAByteArrayAsIsIfNotSerialized() {
-        byte[] regionEntryValueAsBytes = getValueAsByteArray();
-
-        DataAsAddress offheapAddress = createValueAsUnserializedStoredObject(regionEntryValueAsBytes);
-
-        byte[] deserializeValue = (byte[]) offheapAddress.getDeserializedValue(null, null);
-
-        assertArrayEquals(regionEntryValueAsBytes, deserializeValue);
-    }
-
-    @Test
-    public void fillSerializedValueShouldFillWrapperWithSerializedValueIfValueIsSerialized() {
-        Object regionEntryValue = getValue();
-        byte[] serializedRegionEntryValue = EntryEventImpl.serialize(regionEntryValue);
-
-        //encode a serialized entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(serializedRegionEntryValue, true, false);
-
-        DataAsAddress offheapAddress = new DataAsAddress(encodedAddress);
-
-        //mock the things
-        BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
-
-        byte userBits = 1;
-        offheapAddress.fillSerializedValue(wrapper, userBits);
-
-        verify(wrapper, times(1)).setData(serializedRegionEntryValue, userBits, serializedRegionEntryValue.length, true);
-    }
-
-    @Test
-    public void fillSerializedValueShouldFillWrapperWithDeserializedValueIfValueIsNotSerialized() {
-        Object regionEntryValue = getValue();
-        byte[] regionEntryValueAsBytes =  convertValueToByteArray(regionEntryValue);
-
-        //encode a un serialized entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(regionEntryValueAsBytes, false, false);
-
-        DataAsAddress offheapAddress = new DataAsAddress(encodedAddress);
-
-        //mock the things
-        BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
-
-        byte userBits = 1;
-        offheapAddress.fillSerializedValue(wrapper, userBits);
-
-        verify(wrapper, times(1)).setData(regionEntryValueAsBytes, userBits, regionEntryValueAsBytes.length, true);
-    }
-
-    @Test
-    public void getStringFormShouldCatchExceptionAndReturnErrorMessageAsString() {
-        Object regionEntryValueAsBytes = getValue();
-
-        byte[] serializedValue = EntryEventImpl.serialize(regionEntryValueAsBytes);
-
-        //store -127 (DSCODE.ILLEGAL) - in order the deserialize to throw exception
-        serializedValue[0] = -127;
-
-        //encode a un serialized entry value to address
-        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(serializedValue, true, false);
-
-        DataAsAddress offheapAddress = new DataAsAddress(encodedAddress);
-
-        String errorMessage = offheapAddress.getStringForm();
-
-        assertEquals(true, errorMessage.contains("Could not convert object to string because "));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DirectByteBufferMemoryChunkJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DirectByteBufferMemoryChunkJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DirectByteBufferMemoryChunkJUnitTest.java
deleted file mode 100644
index 97b261c..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/DirectByteBufferMemoryChunkJUnitTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import java.nio.ByteBuffer;
-
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class DirectByteBufferMemoryChunkJUnitTest extends MemoryChunkJUnitTestBase {
-
-  @Override
-  protected MemoryChunk createChunk(int size) {
-    return new ByteBufferMemoryChunk(ByteBuffer.allocateDirect(size));
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FragmentJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FragmentJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FragmentJUnitTest.java
index 54eac9e..569b003 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FragmentJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FragmentJUnitTest.java
@@ -37,7 +37,7 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
 @Category(UnitTest.class)
 public class FragmentJUnitTest {
 
-  private UnsafeMemoryChunk[] slabs;
+  private SlabImpl[] slabs;
 
   static {
     ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
@@ -60,15 +60,15 @@ public class FragmentJUnitTest {
 
   @Before
   public void setUp() throws Exception {
-    UnsafeMemoryChunk slab1 = new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE);
-    UnsafeMemoryChunk slab2 = new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE);
-    slabs = new UnsafeMemoryChunk[]{slab1, slab2};
+    SlabImpl slab1 = new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE);
+    SlabImpl slab2 = new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE);
+    slabs = new SlabImpl[]{slab1, slab2};
   }
 
   @After
   public void tearDown() throws Exception {
     for (int i=0; i < slabs.length; i++) {
-      slabs[i].release();
+      slabs[i].free();
     }
   }
   
@@ -120,9 +120,9 @@ public class FragmentJUnitTest {
   @Test
   public void getMemoryAdressIsAlwaysFragmentBaseAddress() {
     Fragment fragment = new Fragment(slabs[0].getMemoryAddress(), slabs[0].getSize());
-    softly.assertThat(fragment.getMemoryAddress()).isEqualTo(slabs[0].getMemoryAddress());
+    softly.assertThat(fragment.getAddress()).isEqualTo(slabs[0].getMemoryAddress());
     fragment.allocate(fragment.getFreeIndex(), fragment.getFreeIndex() + 256);
-    softly.assertThat(fragment.getMemoryAddress()).isEqualTo(slabs[0].getMemoryAddress());
+    softly.assertThat(fragment.getAddress()).isEqualTo(slabs[0].getMemoryAddress());
   }
   
   @Test
@@ -200,7 +200,7 @@ public class FragmentJUnitTest {
   public void fragmentHashCodeIsHashCodeOfItsMemoryAddress() {
     Fragment fragment0 = new Fragment(slabs[0].getMemoryAddress(), slabs[0].getSize());
     Fragment fragment1 = new Fragment(slabs[1].getMemoryAddress(), slabs[1].getSize());
-    Long fragmentAddress = fragment0.getMemoryAddress();
+    Long fragmentAddress = fragment0.getAddress();
     softly.assertThat(fragment0.hashCode()).isEqualTo(fragmentAddress.hashCode())
                                            .isNotEqualTo(fragment1.hashCode());
   }
@@ -208,12 +208,12 @@ public class FragmentJUnitTest {
   @Test
   public void fragmentFillSetsAllBytesToTheSameConstantValue() {
     Fragment fragment = new Fragment(slabs[0].getMemoryAddress(), slabs[0].getSize());
-    Long fragmentAddress = fragment.getMemoryAddress();
+    Long fragmentAddress = fragment.getAddress();
     byte[] bytes = new byte[(int)OffHeapStorage.MIN_SLAB_SIZE];
     byte[] expectedBytes = new byte[(int)OffHeapStorage.MIN_SLAB_SIZE];
-    Arrays.fill(expectedBytes, ObjectChunk.FILL_BYTE);;
+    Arrays.fill(expectedBytes, OffHeapStoredObject.FILL_BYTE);;
     fragment.fill();
-    UnsafeMemoryChunk.readAbsoluteBytes(fragmentAddress, bytes, 0, (int)OffHeapStorage.MIN_SLAB_SIZE);
+    AddressableMemoryManager.readBytes(fragmentAddress, bytes, 0, (int)OffHeapStorage.MIN_SLAB_SIZE);
     assertThat(bytes, is(equalTo(expectedBytes)));
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
index 9bfb2eb..3787129 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListManagerTest.java
@@ -69,7 +69,7 @@ public class FreeListManagerTest {
     }
   }
   
-  private static TestableFreeListManager createFreeListManager(SimpleMemoryAllocatorImpl ma, AddressableMemoryChunk[] slabs) {
+  private static TestableFreeListManager createFreeListManager(SimpleMemoryAllocatorImpl ma, Slab[] slabs) {
     return new TestableFreeListManager(ma, slabs);
   }
   
@@ -77,8 +77,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager(DEFAULT_SLAB_SIZE);
   }
   private void setUpSingleSlabManager(int slabSize) {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(slabSize);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {slab});
+    Slab slab = new SlabImpl(slabSize);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {slab});
   }
 
   @Test
@@ -104,12 +104,12 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int tinySize = 10;
 
-    ObjectChunk c = this.freeListManager.allocate(tinySize);
+    OffHeapStoredObject c = this.freeListManager.allocate(tinySize);
     
     validateChunkSizes(c, tinySize);
   }
   
-  private void validateChunkSizes(ObjectChunk c, int dataSize) {
+  private void validateChunkSizes(OffHeapStoredObject c, int dataSize) {
     assertThat(c).isNotNull();
     assertThat(c.getDataSize()).isEqualTo(dataSize);
     assertThat(c.getSize()).isEqualTo(computeExpectedSize(dataSize));
@@ -120,8 +120,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int tinySize = 10;
     
-    ObjectChunk c = this.freeListManager.allocate(tinySize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(tinySize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     c = this.freeListManager.allocate(tinySize);
 
     validateChunkSizes(c, tinySize);
@@ -132,8 +132,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int dataSize = 10;
     
-    ObjectChunk c = this.freeListManager.allocate(dataSize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(dataSize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     this.freeListManager.allocate(dataSize);
     // free list will now be empty
     c = this.freeListManager.allocate(dataSize);
@@ -146,7 +146,7 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int hugeSize = FreeListManager.MAX_TINY+1;
 
-    ObjectChunk c = this.freeListManager.allocate(hugeSize);
+    OffHeapStoredObject c = this.freeListManager.allocate(hugeSize);
 
     validateChunkSizes(c, hugeSize);
   }
@@ -156,8 +156,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int dataSize = FreeListManager.MAX_TINY+1;
     
-    ObjectChunk c = this.freeListManager.allocate(dataSize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(dataSize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     this.freeListManager.allocate(dataSize);
     // free list will now be empty
     c = this.freeListManager.allocate(dataSize);
@@ -170,8 +170,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int dataSize = FreeListManager.MAX_TINY+1+1024;
     
-    ObjectChunk c = this.freeListManager.allocate(dataSize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(dataSize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     dataSize = FreeListManager.MAX_TINY+1;
     c = this.freeListManager.allocate(dataSize);
     
@@ -188,8 +188,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int dataSize = 10;
     
-    ObjectChunk c = this.freeListManager.allocate(dataSize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(dataSize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     
     assertThat(this.freeListManager.getFreeTinyMemory()).isEqualTo(computeExpectedSize(dataSize));
   }
@@ -199,13 +199,13 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int dataSize = 10;
     
-    ObjectChunk c = this.freeListManager.allocate(dataSize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(dataSize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     
     int dataSize2 = 100;
     
-    ObjectChunk c2 = this.freeListManager.allocate(dataSize2);
-    ObjectChunk.release(c2.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c2 = this.freeListManager.allocate(dataSize2);
+    OffHeapStoredObject.release(c2.getAddress(), this.freeListManager);
     
     assertThat(this.freeListManager.getFreeTinyMemory()).isEqualTo(computeExpectedSize(dataSize)+computeExpectedSize(dataSize2));
   }
@@ -221,8 +221,8 @@ public class FreeListManagerTest {
     setUpSingleSlabManager();
     int dataSize = FreeListManager.MAX_TINY+1+1024;
     
-    ObjectChunk c = this.freeListManager.allocate(dataSize);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = this.freeListManager.allocate(dataSize);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     
     assertThat(this.freeListManager.getFreeHugeMemory()).isEqualTo(computeExpectedSize(dataSize));
   }
@@ -237,7 +237,7 @@ public class FreeListManagerTest {
   @Test
   public void freeFragmentMemorySomeOfFragmentAllocated() {
     setUpSingleSlabManager();
-    ObjectChunk c = this.freeListManager.allocate(DEFAULT_SLAB_SIZE/4-8);
+    OffHeapStoredObject c = this.freeListManager.allocate(DEFAULT_SLAB_SIZE/4-8);
     
     assertThat(this.freeListManager.getFreeFragmentMemory()).isEqualTo((DEFAULT_SLAB_SIZE/4)*3);
   }
@@ -245,13 +245,13 @@ public class FreeListManagerTest {
   @Test
   public void freeFragmentMemoryMostOfFragmentAllocated() {
     setUpSingleSlabManager();
-    ObjectChunk c = this.freeListManager.allocate(DEFAULT_SLAB_SIZE-8-8);
+    OffHeapStoredObject c = this.freeListManager.allocate(DEFAULT_SLAB_SIZE-8-8);
     
     assertThat(this.freeListManager.getFreeFragmentMemory()).isZero();
   }
   
   private int computeExpectedSize(int dataSize) {
-    return ((dataSize + ObjectChunk.OFF_HEAP_HEADER_SIZE + 7) / 8) * 8;
+    return ((dataSize + OffHeapStoredObject.HEADER_SIZE + 7) / 8) * 8;
   }
 
   @Test(expected = AssertionError.class)
@@ -264,11 +264,11 @@ public class FreeListManagerTest {
   public void allocateFromMultipleSlabs() {
     int SMALL_SLAB = 16;
     int MEDIUM_SLAB = 128;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(MEDIUM_SLAB), 
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(MEDIUM_SLAB), 
         slab});
     this.freeListManager.allocate(SMALL_SLAB-8+1);
     this.freeListManager.allocate(DEFAULT_SLAB_SIZE-8);
@@ -282,19 +282,19 @@ public class FreeListManagerTest {
   public void compactWithLargeChunkSizeReturnsFalse() {
     int SMALL_SLAB = 16;
     int MEDIUM_SLAB = 128;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(MEDIUM_SLAB), 
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(MEDIUM_SLAB), 
         slab});
-    ArrayList<ObjectChunk> chunks = new ArrayList<>();
+    ArrayList<OffHeapStoredObject> chunks = new ArrayList<>();
     chunks.add(this.freeListManager.allocate(SMALL_SLAB-8+1));
     chunks.add(this.freeListManager.allocate(DEFAULT_SLAB_SIZE/2-8));
     chunks.add(this.freeListManager.allocate(DEFAULT_SLAB_SIZE/2-8));
     chunks.add(this.freeListManager.allocate(SMALL_SLAB-8+1));
-    for (ObjectChunk c: chunks) {
-      ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    for (OffHeapStoredObject c: chunks) {
+      OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     }
     this.freeListManager.firstCompact = false;
     assertThat(this.freeListManager.compact(DEFAULT_SLAB_SIZE+1)).isFalse();
@@ -304,19 +304,19 @@ public class FreeListManagerTest {
   public void compactWithChunkSizeOfMaxSlabReturnsTrue() {
     int SMALL_SLAB = 16;
     int MEDIUM_SLAB = 128;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(MEDIUM_SLAB), 
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(MEDIUM_SLAB), 
         slab});
-    ArrayList<ObjectChunk> chunks = new ArrayList<>();
+    ArrayList<OffHeapStoredObject> chunks = new ArrayList<>();
     chunks.add(this.freeListManager.allocate(SMALL_SLAB-8+1));
     chunks.add(this.freeListManager.allocate(DEFAULT_SLAB_SIZE/2-8));
     chunks.add(this.freeListManager.allocate(DEFAULT_SLAB_SIZE/2-8));
     chunks.add(this.freeListManager.allocate(SMALL_SLAB-8+1));
-    for (ObjectChunk c: chunks) {
-      ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    for (OffHeapStoredObject c: chunks) {
+      OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     }
     
     assertThat(this.freeListManager.compact(DEFAULT_SLAB_SIZE)).isTrue();
@@ -327,19 +327,19 @@ public class FreeListManagerTest {
   public void compactWithLiveChunks() {
     int SMALL_SLAB = 16;
     int MEDIUM_SLAB = 128;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(MEDIUM_SLAB), 
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(MEDIUM_SLAB), 
         slab});
-    ArrayList<ObjectChunk> chunks = new ArrayList<>();
+    ArrayList<OffHeapStoredObject> chunks = new ArrayList<>();
     chunks.add(this.freeListManager.allocate(SMALL_SLAB-8+1));
     this.freeListManager.allocate(DEFAULT_SLAB_SIZE/2-8);
     chunks.add(this.freeListManager.allocate(DEFAULT_SLAB_SIZE/2-8));
     this.freeListManager.allocate(SMALL_SLAB-8+1);
-    for (ObjectChunk c: chunks) {
-      ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    for (OffHeapStoredObject c: chunks) {
+      OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     }
     
     assertThat(this.freeListManager.compact(DEFAULT_SLAB_SIZE/2)).isTrue();
@@ -348,7 +348,7 @@ public class FreeListManagerTest {
   @Test
   public void compactAfterAllocatingAll() {
     setUpSingleSlabManager();
-    ObjectChunk c = freeListManager.allocate(DEFAULT_SLAB_SIZE-8);
+    OffHeapStoredObject c = freeListManager.allocate(DEFAULT_SLAB_SIZE-8);
     this.freeListManager.firstCompact = false;
     assertThat(this.freeListManager.compact(1)).isFalse();
     // call compact twice for extra code coverage
@@ -359,46 +359,46 @@ public class FreeListManagerTest {
   @Test
   public void afterAllocatingAllOneSizeCompactToAllocateDifferentSize() {
     setUpSingleSlabManager();
-    ArrayList<ObjectChunk> chunksToFree = new ArrayList<>();
-    ArrayList<ObjectChunk> chunksToFreeLater = new ArrayList<>();
+    ArrayList<OffHeapStoredObject> chunksToFree = new ArrayList<>();
+    ArrayList<OffHeapStoredObject> chunksToFreeLater = new ArrayList<>();
     int ALLOCATE_COUNT = 1000;
-    ObjectChunk bigChunk = freeListManager.allocate(DEFAULT_SLAB_SIZE-8-(ALLOCATE_COUNT*32)-256-256);
+    OffHeapStoredObject bigChunk = freeListManager.allocate(DEFAULT_SLAB_SIZE-8-(ALLOCATE_COUNT*32)-256-256);
     for (int i=0; i < ALLOCATE_COUNT; i++) {
-      ObjectChunk c = freeListManager.allocate(24);
+      OffHeapStoredObject c = freeListManager.allocate(24);
       if (i%3 != 2) {
         chunksToFree.add(c);
       } else {
         chunksToFreeLater.add(c);
       }
     }
-    ObjectChunk c1 = freeListManager.allocate(64-8);
-    ObjectChunk c2 = freeListManager.allocate(64-8);
-    ObjectChunk c3 = freeListManager.allocate(64-8);
-    ObjectChunk c4 = freeListManager.allocate(64-8);
+    OffHeapStoredObject c1 = freeListManager.allocate(64-8);
+    OffHeapStoredObject c2 = freeListManager.allocate(64-8);
+    OffHeapStoredObject c3 = freeListManager.allocate(64-8);
+    OffHeapStoredObject c4 = freeListManager.allocate(64-8);
 
-    ObjectChunk mediumChunk1 = freeListManager.allocate(128-8);
-    ObjectChunk mediumChunk2 = freeListManager.allocate(128-8);
+    OffHeapStoredObject mediumChunk1 = freeListManager.allocate(128-8);
+    OffHeapStoredObject mediumChunk2 = freeListManager.allocate(128-8);
 
-    ObjectChunk.release(bigChunk.getMemoryAddress(), freeListManager);
+    OffHeapStoredObject.release(bigChunk.getAddress(), freeListManager);
     int s = chunksToFree.size();
     for (int i=s/2; i >=0; i--) {
-      ObjectChunk c = chunksToFree.get(i);
-      ObjectChunk.release(c.getMemoryAddress(), freeListManager);
+      OffHeapStoredObject c = chunksToFree.get(i);
+      OffHeapStoredObject.release(c.getAddress(), freeListManager);
     }
     for (int i=(s/2)+1; i < s; i++) {
-      ObjectChunk c = chunksToFree.get(i);
-      ObjectChunk.release(c.getMemoryAddress(), freeListManager);
+      OffHeapStoredObject c = chunksToFree.get(i);
+      OffHeapStoredObject.release(c.getAddress(), freeListManager);
     }
-    ObjectChunk.release(c3.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(c1.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(c2.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(c4.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(mediumChunk1.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(mediumChunk2.getMemoryAddress(), freeListManager);
+    OffHeapStoredObject.release(c3.getAddress(), freeListManager);
+    OffHeapStoredObject.release(c1.getAddress(), freeListManager);
+    OffHeapStoredObject.release(c2.getAddress(), freeListManager);
+    OffHeapStoredObject.release(c4.getAddress(), freeListManager);
+    OffHeapStoredObject.release(mediumChunk1.getAddress(), freeListManager);
+    OffHeapStoredObject.release(mediumChunk2.getAddress(), freeListManager);
     this.freeListManager.firstCompact = false;
     assertThat(freeListManager.compact(DEFAULT_SLAB_SIZE-(ALLOCATE_COUNT*32))).isFalse();
     for (int i=0; i < ((256*2)/96); i++) {
-      ObjectChunk.release(chunksToFreeLater.get(i).getMemoryAddress(), freeListManager);
+      OffHeapStoredObject.release(chunksToFreeLater.get(i).getAddress(), freeListManager);
     }
     assertThat(freeListManager.compact(DEFAULT_SLAB_SIZE-(ALLOCATE_COUNT*32))).isTrue();
   }
@@ -407,14 +407,14 @@ public class FreeListManagerTest {
   public void afterAllocatingAndFreeingCompact() {
     int slabSize = 1024*3;
     setUpSingleSlabManager(slabSize);
-    ObjectChunk bigChunk1 = freeListManager.allocate(slabSize/3-8);
-    ObjectChunk bigChunk2 = freeListManager.allocate(slabSize/3-8);
-    ObjectChunk bigChunk3 = freeListManager.allocate(slabSize/3-8);
+    OffHeapStoredObject bigChunk1 = freeListManager.allocate(slabSize/3-8);
+    OffHeapStoredObject bigChunk2 = freeListManager.allocate(slabSize/3-8);
+    OffHeapStoredObject bigChunk3 = freeListManager.allocate(slabSize/3-8);
     this.freeListManager.firstCompact = false;
     assertThat(freeListManager.compact(1)).isFalse();
-    ObjectChunk.release(bigChunk3.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(bigChunk2.getMemoryAddress(), freeListManager);
-    ObjectChunk.release(bigChunk1.getMemoryAddress(), freeListManager);
+    OffHeapStoredObject.release(bigChunk3.getAddress(), freeListManager);
+    OffHeapStoredObject.release(bigChunk2.getAddress(), freeListManager);
+    OffHeapStoredObject.release(bigChunk1.getAddress(), freeListManager);
     assertThat(freeListManager.compact(slabSize)).isTrue();
   }
   
@@ -422,29 +422,29 @@ public class FreeListManagerTest {
   public void compactWithEmptyTinyFreeList() {
     setUpSingleSlabManager();
     Fragment originalFragment = this.freeListManager.getFragmentList().get(0);
-    ObjectChunk c = freeListManager.allocate(16);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    OffHeapStoredObject c = freeListManager.allocate(16);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     c = freeListManager.allocate(16);
     this.freeListManager.firstCompact = false;
     assertThat(this.freeListManager.compact(1)).isTrue();
     assertThat(this.freeListManager.getFragmentList()).hasSize(1);
     Fragment compactedFragment = this.freeListManager.getFragmentList().get(0);
     assertThat(compactedFragment.getSize()).isEqualTo(originalFragment.getSize()-(16+8));
-    assertThat(compactedFragment.getMemoryAddress()).isEqualTo(originalFragment.getMemoryAddress()+(16+8));
+    assertThat(compactedFragment.getAddress()).isEqualTo(originalFragment.getAddress()+(16+8));
   }
   
   @Test
   public void allocationsThatLeaveLessThanMinChunkSizeFreeInAFragment() {
     int SMALL_SLAB = 16;
     int MEDIUM_SLAB = 128;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(SMALL_SLAB), 
-        new UnsafeMemoryChunk(MEDIUM_SLAB), 
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(SMALL_SLAB), 
+        new SlabImpl(MEDIUM_SLAB), 
         slab});
-    this.freeListManager.allocate(DEFAULT_SLAB_SIZE-8-(ObjectChunk.MIN_CHUNK_SIZE-1));
-    this.freeListManager.allocate(MEDIUM_SLAB-8-(ObjectChunk.MIN_CHUNK_SIZE-1));
+    this.freeListManager.allocate(DEFAULT_SLAB_SIZE-8-(OffHeapStoredObject.MIN_CHUNK_SIZE-1));
+    this.freeListManager.allocate(MEDIUM_SLAB-8-(OffHeapStoredObject.MIN_CHUNK_SIZE-1));
     
     assertThat(this.freeListManager.compact(SMALL_SLAB)).isTrue();
   }
@@ -561,32 +561,32 @@ public class FreeListManagerTest {
   
   @Test
   public void okToReuseSameSlabs() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    UnsafeMemoryChunk[] slabs = new UnsafeMemoryChunk[] {slab};
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    Slab[] slabs = new Slab[] {slab};
     this.freeListManager = createFreeListManager(ma, slabs);
     assertThat(this.freeListManager.okToReuse(slabs)).isTrue();
   }
   @Test
   public void notOkToReuseDifferentSlabs() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    UnsafeMemoryChunk[] slabs = new UnsafeMemoryChunk[] {slab};
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    Slab[] slabs = new Slab[] {slab};
     this.freeListManager = createFreeListManager(ma, slabs);
-    UnsafeMemoryChunk[] slabs2 = new UnsafeMemoryChunk[] {slab};
+    Slab[] slabs2 = new Slab[] {slab};
     assertThat(this.freeListManager.okToReuse(slabs2)).isFalse();
   }
   @Test
   public void firstSlabAlwaysLargest() {
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {
-        new UnsafeMemoryChunk(10), 
-        new UnsafeMemoryChunk(100)});
+    this.freeListManager = createFreeListManager(ma, new Slab[] {
+        new SlabImpl(10), 
+        new SlabImpl(100)});
     assertThat(this.freeListManager.getLargestSlabSize()).isEqualTo(10);
   }
 
   @Test
   public void findSlab() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
+    Slab chunk = new SlabImpl(10);
     long address = chunk.getMemoryAddress();
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     assertThat(this.freeListManager.findSlab(address)).isEqualTo(0);
     assertThat(this.freeListManager.findSlab(address+9)).isEqualTo(0);
     catchException(this.freeListManager).findSlab(address-1);
@@ -601,10 +601,10 @@ public class FreeListManagerTest {
   
   @Test
   public void findSecondSlab() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
+    Slab chunk = new SlabImpl(10);
     long address = chunk.getMemoryAddress();
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(DEFAULT_SLAB_SIZE);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {slab, chunk});
+    Slab slab = new SlabImpl(DEFAULT_SLAB_SIZE);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {slab, chunk});
     assertThat(this.freeListManager.findSlab(address)).isEqualTo(1);
     assertThat(this.freeListManager.findSlab(address+9)).isEqualTo(1);
     catchException(this.freeListManager).findSlab(address-1);
@@ -619,9 +619,9 @@ public class FreeListManagerTest {
   
   @Test
   public void validateAddressWithinSlab() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
+    Slab chunk = new SlabImpl(10);
     long address = chunk.getMemoryAddress();
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     assertThat(this.freeListManager.validateAddressAndSizeWithinSlab(address, -1)).isTrue();
     assertThat(this.freeListManager.validateAddressAndSizeWithinSlab(address+9, -1)).isTrue();
     assertThat(this.freeListManager.validateAddressAndSizeWithinSlab(address-1, -1)).isFalse();
@@ -630,9 +630,9 @@ public class FreeListManagerTest {
   
   @Test
   public void validateAddressAndSizeWithinSlab() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
+    Slab chunk = new SlabImpl(10);
     long address = chunk.getMemoryAddress();
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     assertThat(this.freeListManager.validateAddressAndSizeWithinSlab(address, 1)).isTrue();
     assertThat(this.freeListManager.validateAddressAndSizeWithinSlab(address, 10)).isTrue();
     catchException(this.freeListManager).validateAddressAndSizeWithinSlab(address, 0);
@@ -647,10 +647,10 @@ public class FreeListManagerTest {
   
   @Test
   public void descriptionOfOneSlab() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
+    Slab chunk = new SlabImpl(10);
     long address = chunk.getMemoryAddress();
     long endAddress = address+10;
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     StringBuilder sb = new StringBuilder();
     this.freeListManager.getSlabDescriptions(sb);
     assertThat(sb.toString()).isEqualTo("[" + Long.toString(address, 16) + ".." + Long.toString(endAddress, 16) + "] ");
@@ -658,23 +658,23 @@ public class FreeListManagerTest {
 
   @Test
   public void orderBlocksContainsFragment() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
+    Slab chunk = new SlabImpl(10);
     long address = chunk.getMemoryAddress();
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     List<MemoryBlock> ob = this.freeListManager.getOrderedBlocks();
     assertThat(ob).hasSize(1);
-    assertThat(ob.get(0).getMemoryAddress()).isEqualTo(address);
+    assertThat(ob.get(0).getAddress()).isEqualTo(address);
     assertThat(ob.get(0).getBlockSize()).isEqualTo(10);
   }
   
   @Test
   public void orderBlocksContainsTinyFree() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(96);
+    Slab chunk = new SlabImpl(96);
     long address = chunk.getMemoryAddress();
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
-    ObjectChunk c = this.freeListManager.allocate(24);
-    ObjectChunk c2 = this.freeListManager.allocate(24);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
+    OffHeapStoredObject c = this.freeListManager.allocate(24);
+    OffHeapStoredObject c2 = this.freeListManager.allocate(24);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
 
     List<MemoryBlock> ob = this.freeListManager.getOrderedBlocks();
     assertThat(ob).hasSize(3);
@@ -682,59 +682,59 @@ public class FreeListManagerTest {
 
   @Test
   public void allocatedBlocksEmptyIfNoAllocations() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    Slab chunk = new SlabImpl(10);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     List<MemoryBlock> ob = this.freeListManager.getAllocatedBlocks();
     assertThat(ob).hasSize(0);
   }
 
   @Test
   public void allocatedBlocksEmptyAfterFree() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(96);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
-    ObjectChunk c = this.freeListManager.allocate(24);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
+    Slab chunk = new SlabImpl(96);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
+    OffHeapStoredObject c = this.freeListManager.allocate(24);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
     List<MemoryBlock> ob = this.freeListManager.getAllocatedBlocks();
     assertThat(ob).hasSize(0);
   }
 
   @Test
   public void allocatedBlocksHasAllocatedChunk() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(96);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
-    ObjectChunk c = this.freeListManager.allocate(24);
+    Slab chunk = new SlabImpl(96);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
+    OffHeapStoredObject c = this.freeListManager.allocate(24);
     List<MemoryBlock> ob = this.freeListManager.getAllocatedBlocks();
     assertThat(ob).hasSize(1);
-    assertThat(ob.get(0).getMemoryAddress()).isEqualTo(c.getMemoryAddress());
+    assertThat(ob.get(0).getAddress()).isEqualTo(c.getAddress());
   }
   
   @Test
   public void allocatedBlocksHasBothAllocatedChunks() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(96);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
-    ObjectChunk c = this.freeListManager.allocate(24);
-    ObjectChunk c2 = this.freeListManager.allocate(33);
+    Slab chunk = new SlabImpl(96);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
+    OffHeapStoredObject c = this.freeListManager.allocate(24);
+    OffHeapStoredObject c2 = this.freeListManager.allocate(33);
     List<MemoryBlock> ob = this.freeListManager.getAllocatedBlocks();
     assertThat(ob).hasSize(2);
   }
   
   @Test
   public void allocateFromFragmentWithBadIndexesReturnsNull() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(96);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    Slab chunk = new SlabImpl(96);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     assertThat(this.freeListManager.allocateFromFragment(-1, 32)).isNull();
     assertThat(this.freeListManager.allocateFromFragment(1, 32)).isNull();
   }
 
   @Test
   public void testLogging() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(32);
-    UnsafeMemoryChunk chunk2 = new UnsafeMemoryChunk(1024*1024*5);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk, chunk2});
-    ObjectChunk c = this.freeListManager.allocate(24);
-    ObjectChunk c2 = this.freeListManager.allocate(1024*1024);
-    ObjectChunk.release(c.getMemoryAddress(), this.freeListManager);
-    ObjectChunk.release(c2.getMemoryAddress(), this.freeListManager);
+    Slab chunk = new SlabImpl(32);
+    Slab chunk2 = new SlabImpl(1024*1024*5);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk, chunk2});
+    OffHeapStoredObject c = this.freeListManager.allocate(24);
+    OffHeapStoredObject c2 = this.freeListManager.allocate(1024*1024);
+    OffHeapStoredObject.release(c.getAddress(), this.freeListManager);
+    OffHeapStoredObject.release(c2.getAddress(), this.freeListManager);
     
     LogWriter lw = mock(LogWriter.class);
     this.freeListManager.logOffHeapState(lw, 1024);
@@ -742,8 +742,8 @@ public class FreeListManagerTest {
   
   @Test
   public void fragmentationShouldBeZeroIfNumberOfFragmentsIsZero() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    SlabImpl chunk = new SlabImpl(10);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     
     FreeListManager spy = spy(this.freeListManager);
     
@@ -754,8 +754,8 @@ public class FreeListManagerTest {
   
   @Test
   public void fragmentationShouldBeZeroIfNumberOfFragmentsIsOne() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    SlabImpl chunk = new SlabImpl(10);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     
     FreeListManager spy = spy(this.freeListManager);
     
@@ -766,8 +766,8 @@ public class FreeListManagerTest {
   
   @Test
   public void fragmentationShouldBeZeroIfUsedMemoryIsZero() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    SlabImpl chunk = new SlabImpl(10);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     
     FreeListManager spy = spy(this.freeListManager);
     
@@ -778,46 +778,46 @@ public class FreeListManagerTest {
   
   @Test
   public void fragmentationShouldBe100IfAllFreeMemoryIsFragmentedAsMinChunks() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    SlabImpl chunk = new SlabImpl(10);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     
     FreeListManager spy = spy(this.freeListManager);
     
     when(spy.getUsedMemory()).thenReturn(1L);
     when(spy.getFragmentCount()).thenReturn(2);
-    when(spy.getFreeMemory()).thenReturn((long)ObjectChunk.MIN_CHUNK_SIZE * 2);
+    when(spy.getFreeMemory()).thenReturn((long)OffHeapStoredObject.MIN_CHUNK_SIZE * 2);
     
     assertThat(spy.getFragmentation()).isEqualTo(100);
   }
   
   @Test
   public void fragmentationShouldBeRoundedToNearestInteger() {
-    UnsafeMemoryChunk chunk = new UnsafeMemoryChunk(10);
-    this.freeListManager = createFreeListManager(ma, new UnsafeMemoryChunk[] {chunk});
+    SlabImpl chunk = new SlabImpl(10);
+    this.freeListManager = createFreeListManager(ma, new Slab[] {chunk});
     
     FreeListManager spy = spy(this.freeListManager);
     
     when(spy.getUsedMemory()).thenReturn(1L);
     when(spy.getFragmentCount()).thenReturn(4);
-    when(spy.getFreeMemory()).thenReturn((long)ObjectChunk.MIN_CHUNK_SIZE * 8);
+    when(spy.getFreeMemory()).thenReturn((long)OffHeapStoredObject.MIN_CHUNK_SIZE * 8);
     
     assertThat(spy.getFragmentation()).isEqualTo(50); //Math.rint(50.0)
     
     when(spy.getUsedMemory()).thenReturn(1L);
     when(spy.getFragmentCount()).thenReturn(3);
-    when(spy.getFreeMemory()).thenReturn((long)ObjectChunk.MIN_CHUNK_SIZE * 8);
+    when(spy.getFreeMemory()).thenReturn((long)OffHeapStoredObject.MIN_CHUNK_SIZE * 8);
     
     assertThat(spy.getFragmentation()).isEqualTo(38); //Math.rint(37.5)
     
     when(spy.getUsedMemory()).thenReturn(1L);
     when(spy.getFragmentCount()).thenReturn(6);
-    when(spy.getFreeMemory()).thenReturn((long)ObjectChunk.MIN_CHUNK_SIZE * 17);
+    when(spy.getFreeMemory()).thenReturn((long)OffHeapStoredObject.MIN_CHUNK_SIZE * 17);
     
     assertThat(spy.getFragmentation()).isEqualTo(35); //Math.rint(35.29)
     
     when(spy.getUsedMemory()).thenReturn(1L);
     when(spy.getFragmentCount()).thenReturn(6);
-    when(spy.getFreeMemory()).thenReturn((long)ObjectChunk.MIN_CHUNK_SIZE * 9);
+    when(spy.getFreeMemory()).thenReturn((long)OffHeapStoredObject.MIN_CHUNK_SIZE * 9);
     
     assertThat(spy.getFragmentation()).isEqualTo(67); //Math.rint(66.66)
   }
@@ -851,10 +851,10 @@ public class FreeListManagerTest {
     }
 
     @Override
-    protected SyncChunkStack createFreeListForEmptySlot(AtomicReferenceArray<SyncChunkStack> freeLists, int idx) {
+    protected OffHeapStoredObjectAddressStack createFreeListForEmptySlot(AtomicReferenceArray<OffHeapStoredObjectAddressStack> freeLists, int idx) {
       if (this.firstTime) {
         this.firstTime = false;
-        SyncChunkStack clq = super.createFreeListForEmptySlot(freeLists, idx);
+        OffHeapStoredObjectAddressStack clq = super.createFreeListForEmptySlot(freeLists, idx);
         if (!freeLists.compareAndSet(idx, null, clq)) {
           fail("this should never happen. Indicates a concurrent modification");
         }
@@ -872,7 +872,7 @@ public class FreeListManagerTest {
       }
     }
     
-    public TestableFreeListManager(SimpleMemoryAllocatorImpl ma, AddressableMemoryChunk[] slabs) {
+    public TestableFreeListManager(SimpleMemoryAllocatorImpl ma, Slab[] slabs) {
       super(ma, slabs);
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListOffHeapRegionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListOffHeapRegionJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListOffHeapRegionJUnitTest.java
index 6790f6a..0272e38 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListOffHeapRegionJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/FreeListOffHeapRegionJUnitTest.java
@@ -40,7 +40,7 @@ public class FreeListOffHeapRegionJUnitTest extends OffHeapRegionBase {
 
   @Override
   public int perObjectOverhead() {
-    return ObjectChunk.OFF_HEAP_HEADER_SIZE;
+    return OffHeapStoredObject.HEADER_SIZE;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/HeapByteBufferMemoryChunkJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/HeapByteBufferMemoryChunkJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/HeapByteBufferMemoryChunkJUnitTest.java
deleted file mode 100644
index 77cb5ad..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/HeapByteBufferMemoryChunkJUnitTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import java.nio.ByteBuffer;
-
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class HeapByteBufferMemoryChunkJUnitTest extends MemoryChunkJUnitTestBase {
-
-  @Override
-  protected MemoryChunk createChunk(int size) {
-    return new ByteBufferMemoryChunk(ByteBuffer.allocate(size));
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/LifecycleListenerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/LifecycleListenerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/LifecycleListenerJUnitTest.java
index 97ae486..a009661 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/LifecycleListenerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/LifecycleListenerJUnitTest.java
@@ -62,9 +62,9 @@ public class LifecycleListenerJUnitTest {
     LifecycleListener.addLifecycleListener(this.listener);
     LifecycleListener.removeLifecycleListener(this.listener);
 
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024); // 1k
+    SlabImpl slab = new SlabImpl(1024); // 1k
     SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(),
-        new UnsafeMemoryChunk[] { slab });
+        new SlabImpl[] { slab });
 
     Assert.assertEquals(0, this.afterCreateCallbacks.size());
     Assert.assertEquals(0, this.afterReuseCallbacks.size());
@@ -82,9 +82,9 @@ public class LifecycleListenerJUnitTest {
   @Test
   public void testCallbacksAreCalledAfterCreate() {
     LifecycleListener.addLifecycleListener(this.listener);
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024); // 1k
+    SlabImpl slab = new SlabImpl(1024); // 1k
     SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(),
-        new UnsafeMemoryChunk[] { slab });
+        new SlabImpl[] { slab });
 
     Assert.assertEquals(1, this.afterCreateCallbacks.size());
     Assert.assertEquals(0, this.afterReuseCallbacks.size());
@@ -106,8 +106,8 @@ public class LifecycleListenerJUnitTest {
 
     System.setProperty(SimpleMemoryAllocatorImpl.FREE_OFF_HEAP_MEMORY_PROPERTY, "false");
 
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024); // 1k
-    SimpleMemoryAllocatorImpl ma = createAllocator(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[] { slab });
+    SlabImpl slab = new SlabImpl(1024); // 1k
+    SimpleMemoryAllocatorImpl ma = createAllocator(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[] { slab });
 
     Assert.assertEquals(1, this.afterCreateCallbacks.size());
     Assert.assertEquals(0, this.afterReuseCallbacks.size());
@@ -125,7 +125,7 @@ public class LifecycleListenerJUnitTest {
     Assert.assertEquals(1, this.afterReuseCallbacks.size());
     Assert.assertEquals(1, this.beforeCloseCallbacks.size());
 
-    SimpleMemoryAllocatorImpl ma2 = createAllocator(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[] { slab });
+    SimpleMemoryAllocatorImpl ma2 = createAllocator(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[] { slab });
     assertEquals(null, ma2);
     
     Assert.assertEquals(1, this.afterCreateCallbacks.size());
@@ -139,7 +139,7 @@ public class LifecycleListenerJUnitTest {
     Assert.assertEquals(2, this.beforeCloseCallbacks.size());
   }
 
-  private SimpleMemoryAllocatorImpl createAllocator(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats ohms, UnsafeMemoryChunk[] slab) {
+  private SimpleMemoryAllocatorImpl createAllocator(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats ohms, SlabImpl[] slab) {
     try {
        return SimpleMemoryAllocatorImpl.createForUnitTest(ooohml, ohms, slab);
     } catch (IllegalStateException e) {
@@ -161,8 +161,8 @@ public class LifecycleListenerJUnitTest {
 
     LifecycleListener.addLifecycleListener(this.listener);
 
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024); // 1k
-    SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[] { slab });
+    SlabImpl slab = new SlabImpl(1024); // 1k
+    SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[] { slab });
 
     Assert.assertEquals(1, this.afterCreateCallbacks.size());
     Assert.assertEquals(0, this.afterReuseCallbacks.size());
@@ -174,8 +174,8 @@ public class LifecycleListenerJUnitTest {
     Assert.assertEquals(0, this.afterReuseCallbacks.size());
     Assert.assertEquals(1, this.beforeCloseCallbacks.size());
 
-    slab = new UnsafeMemoryChunk(1024); // 1k
-    SimpleMemoryAllocatorImpl ma2 = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[] { slab });
+    slab = new SlabImpl(1024); // 1k
+    SimpleMemoryAllocatorImpl ma2 = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[] { slab });
 
     Assert.assertEquals(2, this.afterCreateCallbacks.size());
     Assert.assertEquals(0, this.afterReuseCallbacks.size());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNodeJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNodeJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNodeJUnitTest.java
index 3d2dbc7..e1c3f4e 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNodeJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNodeJUnitTest.java
@@ -49,13 +49,11 @@ public class MemoryBlockNodeJUnitTest {
   private SimpleMemoryAllocatorImpl ma;
   private OutOfOffHeapMemoryListener ooohml;
   private OffHeapMemoryStats stats;
-  private LogWriter lw;
-  private int numSlabs;
-  private AddressableMemoryChunk[] slabs = {
-      new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE), 
-      new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE * 2)
+  private Slab[] slabs = {
+      new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE), 
+      new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE * 2)
   };
-  private MemoryChunkWithRefCount storedObject = null;
+  private StoredObject storedObject = null;
 
   static {
     ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
@@ -84,8 +82,6 @@ public class MemoryBlockNodeJUnitTest {
   public void setUp() {
     ooohml = mock(OutOfOffHeapMemoryListener.class);
     stats = mock(OffHeapMemoryStats.class);
-    lw = mock(LogWriter.class);
-    numSlabs = 3;
     ma = (SimpleMemoryAllocatorImpl) SimpleMemoryAllocatorImpl.createForUnitTest(ooohml, stats, slabs);
   }
 
@@ -98,11 +94,11 @@ public class MemoryBlockNodeJUnitTest {
     return Long.valueOf(Long.MAX_VALUE);
   }
 
-  protected MemoryChunkWithRefCount createValueAsUnserializedStoredObject(Object value) {
-    MemoryChunkWithRefCount createdObject = createValueAsUnserializedStoredObject(value, false);
+  protected StoredObject createValueAsUnserializedStoredObject(Object value) {
+    StoredObject createdObject = createValueAsUnserializedStoredObject(value, false);
     return createdObject;
   }
-  protected MemoryChunkWithRefCount createValueAsUnserializedStoredObject(Object value, boolean isCompressed) {
+  protected StoredObject createValueAsUnserializedStoredObject(Object value, boolean isCompressed) {
     byte[] valueInByteArray;
     if (value instanceof Long) {
       valueInByteArray = convertValueToByteArray(value);
@@ -112,7 +108,7 @@ public class MemoryBlockNodeJUnitTest {
 
     boolean isSerialized = false;
 
-    MemoryChunkWithRefCount createdObject = createChunk(valueInByteArray, isSerialized, isCompressed);
+    StoredObject createdObject = createChunk(valueInByteArray, isSerialized, isCompressed);
     return createdObject;
   }
 
@@ -120,23 +116,23 @@ public class MemoryBlockNodeJUnitTest {
     return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong((Long) value).array();
   }
 
-  private MemoryChunkWithRefCount createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
-    MemoryChunkWithRefCount chunk = (MemoryChunkWithRefCount) ma.allocateAndInitialize(v, isSerialized, isCompressed);
+  private StoredObject createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
+    StoredObject chunk = (StoredObject) ma.allocateAndInitialize(v, isSerialized, isCompressed);
     return chunk;
   }
 
 
-  protected MemoryChunkWithRefCount createValueAsSerializedStoredObject(Object value) {
-    MemoryChunkWithRefCount createdObject = createValueAsSerializedStoredObject(value, false);
+  protected StoredObject createValueAsSerializedStoredObject(Object value) {
+    StoredObject createdObject = createValueAsSerializedStoredObject(value, false);
     return createdObject;
   }
   
-  protected MemoryChunkWithRefCount createValueAsSerializedStoredObject(Object value, boolean isCompressed) {
+  protected StoredObject createValueAsSerializedStoredObject(Object value, boolean isCompressed) {
     byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
 
     boolean isSerialized = true;
 
-    MemoryChunkWithRefCount createdObject = createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
+    StoredObject createdObject = createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
     return createdObject;
   }
   
@@ -151,7 +147,7 @@ public class MemoryBlockNodeJUnitTest {
     expectedException.expect(NullPointerException.class);
     
     MemoryBlock mb = new MemoryBlockNode(ma, null);
-    Long addr = mb.getMemoryAddress();
+    Long addr = mb.getAddress();
     fail("Operations on MemoryBlockNodes with null block argument expected to throw NullPointerException ");
   }
   
@@ -175,7 +171,7 @@ public class MemoryBlockNodeJUnitTest {
   public void getMemoryAddressReturnsAddressOfBlock() {
     Fragment fragment = new Fragment(slabs[0].getMemoryAddress(), slabs[0].getSize());
     MemoryBlock mb = new MemoryBlockNode(ma, fragment);
-    softly.assertThat(mb.getMemoryAddress()).isEqualTo(fragment.getMemoryAddress());
+    softly.assertThat(mb.getAddress()).isEqualTo(fragment.getAddress());
  }
   
   @Test
@@ -315,7 +311,7 @@ public class MemoryBlockNodeJUnitTest {
     storedObject = createValueAsSerializedStoredObject(obj, true);
     MemoryBlock mb = new MemoryBlockNode(ma, (MemoryBlock) storedObject);
     byte[] storedObjectBytes = new byte[storedObject.getValueSizeInBytes()];
-    storedObject.readBytes(0, storedObjectBytes);
+    storedObject.readDataBytes(0, storedObjectBytes);
     softly.assertThat(mb.getDataValue()).isEqualTo(storedObjectBytes);
   }
   
@@ -325,7 +321,7 @@ public class MemoryBlockNodeJUnitTest {
     storedObject = createValueAsUnserializedStoredObject(obj, true);
     MemoryBlock mb = new MemoryBlockNode(ma, (MemoryBlock) storedObject);
     byte[] storedObjectBytes = new byte[storedObject.getValueSizeInBytes()];
-    storedObject.readBytes(0, storedObjectBytes);
+    storedObject.readDataBytes(0, storedObjectBytes);
     softly.assertThat(mb.getDataValue()).isEqualTo(storedObjectBytes);
   }
   
@@ -335,7 +331,7 @@ public class MemoryBlockNodeJUnitTest {
     storedObject = createValueAsUnserializedStoredObject(obj, false);
     MemoryBlock mb = new MemoryBlockNode(ma, (MemoryBlock) storedObject);
     byte[] storedObjectBytes = new byte[storedObject.getValueSizeInBytes()];
-    storedObject.readBytes(0, storedObjectBytes);
+    storedObject.readDataBytes(0, storedObjectBytes);
     softly.assertThat(mb.getDataValue()).isEqualTo(storedObjectBytes);
   }
   
@@ -343,7 +339,7 @@ public class MemoryBlockNodeJUnitTest {
   public void getDataValueWithIllegalDataTypeCatchesIOException() {
     Object obj = getValue();
     storedObject = createValueAsSerializedStoredObject(obj);
-    storedObject.writeByte(0, DSCODE.ILLEGAL);
+    storedObject.writeDataByte(0, DSCODE.ILLEGAL);
     MemoryBlock mb = new MemoryBlockNode(ma, (MemoryBlock) storedObject);
     ByteArrayOutputStream errContent = new ByteArrayOutputStream();
     System.setErr(new PrintStream(errContent));
@@ -356,7 +352,7 @@ public class MemoryBlockNodeJUnitTest {
     storedObject = createValueAsSerializedStoredObject(obj);
     StoredObject spyStoredObject = spy(storedObject);
     MemoryBlock mb = new MemoryBlockNode(ma, (MemoryBlock) spyStoredObject);
-    when(((ObjectChunk)spyStoredObject).getRawBytes()).thenCallRealMethod().thenThrow(new CacheClosedException("Unit test forced exception"));
+    when(((OffHeapStoredObject)spyStoredObject).getRawBytes()).thenCallRealMethod().thenThrow(new CacheClosedException("Unit test forced exception"));
     ByteArrayOutputStream errContent = new ByteArrayOutputStream();
     System.setErr(new PrintStream(errContent));
     softly.assertThat(mb.getDataValue()).isEqualTo("CacheClosedException:Unit test forced exception");
@@ -369,7 +365,7 @@ public class MemoryBlockNodeJUnitTest {
     storedObject = createValueAsSerializedStoredObject(obj);
     StoredObject spyStoredObject = spy(storedObject);
     MemoryBlock mb = new MemoryBlockNode(ma, (MemoryBlock) spyStoredObject);
-    when(((ObjectChunk)spyStoredObject).getRawBytes()).thenCallRealMethod().thenThrow(ClassNotFoundException.class);
+    when(((OffHeapStoredObject)spyStoredObject).getRawBytes()).thenCallRealMethod().thenThrow(ClassNotFoundException.class);
     ByteArrayOutputStream errContent = new ByteArrayOutputStream();
     System.setErr(new PrintStream(errContent));
     softly.assertThat(mb.getDataValue()).isEqualTo("ClassNotFoundException:null");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkJUnitTestBase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkJUnitTestBase.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkJUnitTestBase.java
deleted file mode 100644
index 1b1d300..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkJUnitTestBase.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.concurrent.atomic.AtomicIntegerArray;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-public abstract class MemoryChunkJUnitTestBase {
-  static {
-    ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
-  }
-
-  
-  protected abstract MemoryChunk createChunk(int size);
-  
-  @Test
-  public void testByteReadWrite() {
-    int CHUNK_SIZE = 1024;
-    MemoryChunk mc = createChunk(CHUNK_SIZE);
-    try {
-    for (int i=0; i<CHUNK_SIZE; i++) {
-      mc.writeByte(i, (byte)(i%128));
-    }
-    for (int i=0; i<CHUNK_SIZE; i++) {
-      assertEquals(i%128, mc.readByte(i));
-    }
-    } finally {
-      mc.release();
-    }
-  }
-  
-  @Test
-  public void testGetSize() {
-    MemoryChunk mc = createChunk(5);
-    try {
-      assertEquals(5, mc.getSize());
-    } finally {
-      mc.release();
-    }
-    mc = createChunk(0);
-    try {
-      assertEquals(0, mc.getSize());
-    } finally {
-      mc.release();
-    }
-    mc = createChunk(1024);
-    try {
-      assertEquals(1024, mc.getSize());
-    } finally {
-      mc.release();
-    }
-  }
-
-  @Test
-  public void testToString() {
-    int CHUNK_SIZE = 1024;
-    MemoryChunk mc = createChunk(CHUNK_SIZE);
-    try {
-      mc.toString();
-    } finally {
-      mc.release();
-    }
-  }
- 
-  @Test
-  public void testCopyBytes() {
-    int CHUNK_SIZE = 1024;
-    MemoryChunk mc = createChunk(CHUNK_SIZE*2);
-    try {
-      for (int i=0; i<CHUNK_SIZE; i++) {
-        mc.writeByte(i, (byte)(i%128));
-      }
-      for (int i=0; i<CHUNK_SIZE; i++) {
-        assertEquals(i%128, mc.readByte(i));
-      }
-      mc.copyBytes(0, CHUNK_SIZE, CHUNK_SIZE);
-      for (int i=0; i<CHUNK_SIZE; i++) {
-        assertEquals(i%128, mc.readByte(CHUNK_SIZE+i));
-      }
-      mc.copyBytes(0, 1, CHUNK_SIZE);
-      for (int i=0; i<CHUNK_SIZE; i++) {
-        assertEquals(i%128, mc.readByte(1+i));
-      }
-    } finally {
-      mc.release();
-    }
-  }
- 
-  
-  @Test
-  public void testByteArrayReadWrite() {
-    byte[] writeBytes = new byte[256];
-    int v = Byte.MIN_VALUE;
-    for (int i=0; i < writeBytes.length; i++) {
-      writeBytes[i] = (byte)v++;
-    }
-    int ARRAYS_PER_CHUNK = 100;
-    int CHUNK_SIZE = ARRAYS_PER_CHUNK * writeBytes.length;
-    MemoryChunk mc = createChunk(CHUNK_SIZE);
-    try {
-    for (int i=0; i<CHUNK_SIZE; i+=writeBytes.length) {
-      mc.writeBytes(i, writeBytes);
-    }
-    byte[] readBytes = new byte[writeBytes.length];
-    for (int i=0; i<CHUNK_SIZE; i+=writeBytes.length) {
-      mc.readBytes(i, readBytes);
-      assertTrue("expected " + Arrays.toString(writeBytes) + " but found " + Arrays.toString(readBytes), Arrays.equals(writeBytes, readBytes));
-    }
-    } finally {
-      mc.release();
-    }
-  }
-  public void DISABLEtestBytePerf() throws InterruptedException {
-    final int ITEM_SIZE = 1;
-    final int ITEMS_PER_CHUNK = 100000;
-    final int CHUNK_SIZE = ITEMS_PER_CHUNK * ITEM_SIZE;
-    final MemoryChunk mc = createChunk(CHUNK_SIZE);
-    try {
-      final int WRITE_ITERATIONS = 90000;
-      final Runnable writeRun = new Runnable() {
-        public void run() {
-          for (int j=0; j<WRITE_ITERATIONS; j++) {
-            for (int i=0; i<CHUNK_SIZE; i+=ITEM_SIZE) {
-              mc.writeByte(i, (byte)1);
-            }
-          }
-        }
-      };
-      long startWrite = System.nanoTime();
-      writeRun.run();
-      long endWrite = System.nanoTime();
-      final int READ_ITERATIONS = 90000/10;
-      final AtomicIntegerArray readTimes = new AtomicIntegerArray(READ_ITERATIONS);
-      final int THREAD_COUNT = 3;
-      final Thread[] threads = new Thread[THREAD_COUNT];
-      final ReadWriteLock rwl = new ReentrantReadWriteLock();
-      final Lock rl = rwl.readLock();
-      final AtomicLong longHolder = new AtomicLong();
-      final Runnable r = new Runnable() {
-        public void run() {
-          long c = 0;
-          long lastTs = System.nanoTime();
-          long startTs;
-          for (int j=0; j<READ_ITERATIONS; j++) {
-            startTs = lastTs;
-            for (int i=0; i<CHUNK_SIZE; i+=ITEM_SIZE) {
-//              c += mc.readByte(i);
-              rl.lock();
-              try {
-                c+= mc.readByte(i);
-              } finally {
-                rl.unlock();
-              }
-            }
-            lastTs = System.nanoTime();
-            readTimes.addAndGet(j, (int) (lastTs-startTs));
-          }
-          longHolder.addAndGet(c);
-          //System.out.println("c="+c);
-        }
-      };
-      for (int t=0; t < THREAD_COUNT; t++) {
-        threads[t] = new Thread(r);
-      }
-      long start = System.nanoTime();
-      for (int t=0; t < THREAD_COUNT; t++) {
-        threads[t].start();
-      }
-      for (int t=0; t < THREAD_COUNT; t++) {
-        threads[t].join();
-      }
-//      long start = System.nanoTime();
-//      r.run();
-      long end = System.nanoTime();
-      System.out.println("longHolder=" + longHolder.get());
-      System.out.println(computeHistogram(readTimes, 1000000));
-//      for (int i=0; i < 30; i++) {
-//        System.out.print(readTimes[i]);
-//        System.out.print(' ');
-//      }
-//      System.out.println();
-//      for (int i=readTimes.length-30; i < readTimes.length; i++) {
-//        System.out.print(readTimes[i]);
-//        System.out.print(' ');
-//      }
-//      System.out.println();
-      System.out.println((end-start) / READ_ITERATIONS);
-      System.out.println("BytePerfReads:  " + (double)((long)CHUNK_SIZE*READ_ITERATIONS*THREAD_COUNT)/(double)((end-start)/1000000) + " bytes/ms");
-      System.out.println("BytePerfWrites: " + (double)((long)CHUNK_SIZE*WRITE_ITERATIONS)/(double)((endWrite-startWrite)/1000000) + " bytes/ms");
-    } finally {
-      mc.release();
-    }
-  }
-  static private ArrayList<Bucket> computeHistogram(AtomicIntegerArray originalValues, final int granualarity) {
-    int[] values = new int[originalValues.length()];
-    for (int i=0; i < values.length; i++) {
-      values[i] = originalValues.get(i);
-    }
-    Arrays.sort(values);
-    ArrayList<Bucket> result = new ArrayList<Bucket>();
-    Bucket curBucket = new Bucket(values[0]);
-    result.add(curBucket);
-    for (int i=1; i < values.length; i++) {
-      int curVal = values[i];
-      if (!curBucket.addValue(curVal, granualarity)) {
-        curBucket = new Bucket(curVal);
-        result.add(curBucket);
-      }
-    }
-    return result;
-  }
-  static private class Bucket {
-    public Bucket(long l) {
-      base = l;
-      total = l;
-      count = 1;
-    }
-    public boolean addValue(long curVal, int granualarity) {
-      if (curVal < base || (curVal-base) > granualarity) {
-        return false;
-      }
-      total += curVal;
-      count++;
-      return true;
-    }
-    private final long base;
-    private long total;
-    private int count;
-    
-    @Override
-    public String toString() {
-      return "" + (total/count) + ":" + count;
-    }
-  }
-  public void DISABLEtest256ByteArrayPerf() {
-    byte[] writeBytes = new byte[256];
-    for (int i=0; i < writeBytes.length; i++) {
-      writeBytes[i] = 1;
-    }
-    int ARRAYS_PER_CHUNK = 100000;
-    int CHUNK_SIZE = ARRAYS_PER_CHUNK * writeBytes.length;
-    MemoryChunk mc = createChunk(CHUNK_SIZE);
-    try {
-      int WRITE_ITERATIONS = 2000;
-      long startWrite = System.nanoTime();
-      for (int j=0; j<WRITE_ITERATIONS; j++) {
-        for (int i=0; i<CHUNK_SIZE; i+=writeBytes.length) {
-          mc.writeBytes(i, writeBytes);
-        }
-      }
-      long endWrite = System.nanoTime();
-      byte[] readBytes = new byte[writeBytes.length];
-      int READ_ITERATIONS = 2000;
-      long start = System.nanoTime();
-      for (int j=0; j<READ_ITERATIONS; j++) {
-        for (int i=0; i<CHUNK_SIZE; i+=writeBytes.length) {
-          mc.readBytes(i, readBytes);
-        }
-      }
-      long end = System.nanoTime();
-      System.out.println("ByteArray("+writeBytes.length+")PerfReads: " + (double)((long)CHUNK_SIZE*(long)READ_ITERATIONS)/(double)((end-start)/1000000) + " bytes/ms");
-      System.out.println("ByteArray("+writeBytes.length+")PerfWrites: " + (double)((long)CHUNK_SIZE*(long)WRITE_ITERATIONS)/(double)((endWrite-startWrite)/1000000) + " bytes/ms");
-    } finally {
-      mc.release();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkTestSuite.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkTestSuite.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkTestSuite.java
deleted file mode 100644
index 2908126..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/MemoryChunkTestSuite.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.gemstone.gemfire.internal.offheap;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@Suite.SuiteClasses({
-  ByteArrayMemoryChunkJUnitTest.class,
-  DirectByteBufferMemoryChunkJUnitTest.class,
-  HeapByteBufferMemoryChunkJUnitTest.class,
-  UnsafeMemoryChunkJUnitTest.class,
-})
-@RunWith(Suite.class)
-public class MemoryChunkTestSuite {
-
-}


[07/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
index 14bde59..209a4a4 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorImpl.java
@@ -90,17 +90,17 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
   public static MemoryAllocator create(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, LogWriter lw, 
       int slabCount, long offHeapMemorySize, long maxSlabSize) {
     return create(ooohml, stats, lw, slabCount, offHeapMemorySize, maxSlabSize,
-        null, new AddressableMemoryChunkFactory() {
+        null, new SlabFactory() {
       @Override
-      public AddressableMemoryChunk create(int size) {
-        return new UnsafeMemoryChunk(size);
+      public Slab create(int size) {
+        return new SlabImpl(size);
       }
     });
   }
 
   private static SimpleMemoryAllocatorImpl create(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, LogWriter lw, 
       int slabCount, long offHeapMemorySize, long maxSlabSize, 
-      AddressableMemoryChunk[] slabs, AddressableMemoryChunkFactory memChunkFactory) {
+      Slab[] slabs, SlabFactory slabFactory) {
     SimpleMemoryAllocatorImpl result = singleton;
     boolean created = false;
     try {
@@ -118,16 +118,16 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
         if (lw != null) {
           lw.config("Allocating " + offHeapMemorySize + " bytes of off-heap memory. The maximum size of a single off-heap object is " + maxSlabSize + " bytes.");
         }
-        slabs = new UnsafeMemoryChunk[slabCount];
+        slabs = new SlabImpl[slabCount];
         long uncreatedMemory = offHeapMemorySize;
         for (int i=0; i < slabCount; i++) {
           try {
             if (uncreatedMemory >= maxSlabSize) {
-              slabs[i] = memChunkFactory.create((int) maxSlabSize);
+              slabs[i] = slabFactory.create((int) maxSlabSize);
               uncreatedMemory -= maxSlabSize;
             } else {
               // the last slab can be smaller then maxSlabSize
-              slabs[i] = memChunkFactory.create((int) uncreatedMemory);
+              slabs[i] = slabFactory.create((int) uncreatedMemory);
             }
           } catch (OutOfMemoryError err) {
             if (i > 0) {
@@ -137,7 +137,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
             }
             for (int j=0; j < i; j++) {
               if (slabs[j] != null) {
-                slabs[j].release();
+                slabs[j].free();
               }
             }
             throw err;
@@ -163,11 +163,11 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     return result;
   }
   static SimpleMemoryAllocatorImpl createForUnitTest(OutOfOffHeapMemoryListener ooohml, OffHeapMemoryStats stats, LogWriter lw, 
-      int slabCount, long offHeapMemorySize, long maxSlabSize, AddressableMemoryChunkFactory memChunkFactory) {
+      int slabCount, long offHeapMemorySize, long maxSlabSize, SlabFactory memChunkFactory) {
     return create(ooohml, stats, lw, slabCount, offHeapMemorySize, maxSlabSize, 
         null, memChunkFactory);
   }
-  public static SimpleMemoryAllocatorImpl createForUnitTest(OutOfOffHeapMemoryListener oooml, OffHeapMemoryStats stats, AddressableMemoryChunk[] slabs) {
+  public static SimpleMemoryAllocatorImpl createForUnitTest(OutOfOffHeapMemoryListener oooml, OffHeapMemoryStats stats, Slab[] slabs) {
     int slabCount = 0;
     long offHeapMemorySize = 0;
     long maxSlabSize = 0;
@@ -185,7 +185,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
   }
   
   
-  private void reuse(OutOfOffHeapMemoryListener oooml, LogWriter lw, OffHeapMemoryStats newStats, long offHeapMemorySize, AddressableMemoryChunk[] slabs) {
+  private void reuse(OutOfOffHeapMemoryListener oooml, LogWriter lw, OffHeapMemoryStats newStats, long offHeapMemorySize, Slab[] slabs) {
     if (isClosed()) {
       throw new IllegalStateException("Can not reuse a closed off-heap memory manager.");
     }
@@ -205,7 +205,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     this.stats = newStats;
   }
 
-  private SimpleMemoryAllocatorImpl(final OutOfOffHeapMemoryListener oooml, final OffHeapMemoryStats stats, final AddressableMemoryChunk[] slabs) {
+  private SimpleMemoryAllocatorImpl(final OutOfOffHeapMemoryListener oooml, final OffHeapMemoryStats stats, final Slab[] slabs) {
     if (oooml == null) {
       throw new IllegalArgumentException("OutOfOffHeapMemoryListener is null");
     }
@@ -224,20 +224,20 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     this.stats.incFreeMemory(this.freeList.getTotalMemory());
   }
   
-  public List<ObjectChunk> getLostChunks() {
-    List<ObjectChunk> liveChunks = this.freeList.getLiveChunks();
-    List<ObjectChunk> regionChunks = getRegionLiveChunks();
-    Set<ObjectChunk> liveChunksSet = new HashSet<>(liveChunks);
-    Set<ObjectChunk> regionChunksSet = new HashSet<>(regionChunks);
+  public List<OffHeapStoredObject> getLostChunks() {
+    List<OffHeapStoredObject> liveChunks = this.freeList.getLiveChunks();
+    List<OffHeapStoredObject> regionChunks = getRegionLiveChunks();
+    Set<OffHeapStoredObject> liveChunksSet = new HashSet<>(liveChunks);
+    Set<OffHeapStoredObject> regionChunksSet = new HashSet<>(regionChunks);
     liveChunksSet.removeAll(regionChunksSet);
-    return new ArrayList<ObjectChunk>(liveChunksSet);
+    return new ArrayList<OffHeapStoredObject>(liveChunksSet);
   }
   
   /**
    * Returns a possibly empty list that contains all the Chunks used by regions.
    */
-  private List<ObjectChunk> getRegionLiveChunks() {
-    ArrayList<ObjectChunk> result = new ArrayList<ObjectChunk>();
+  private List<OffHeapStoredObject> getRegionLiveChunks() {
+    ArrayList<OffHeapStoredObject> result = new ArrayList<OffHeapStoredObject>();
     RegionService gfc = GemFireCacheImpl.getInstance();
     if (gfc != null) {
       Iterator<Region<?,?>> rootIt = gfc.rootRegions().iterator();
@@ -253,7 +253,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
     return result;
   }
 
-  private void getRegionLiveChunks(Region<?,?> r, List<ObjectChunk> result) {
+  private void getRegionLiveChunks(Region<?,?> r, List<OffHeapStoredObject> result) {
     if (r.getAttributes().getOffHeap()) {
 
       if (r instanceof PartitionedRegion) {
@@ -277,7 +277,7 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
 
   }
   
-  private void basicGetRegionLiveChunks(LocalRegion r, List<ObjectChunk> result) {
+  private void basicGetRegionLiveChunks(LocalRegion r, List<OffHeapStoredObject> result) {
     for (Object key : r.keySet()) {
       RegionEntry re = ((LocalRegion) r).getRegionEntry(key);
       if (re != null) {
@@ -286,30 +286,30 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
          */
         @Unretained(OffHeapIdentifier.GATEWAY_SENDER_EVENT_IMPL_VALUE)
         Object value = re._getValue();
-        if (value instanceof ObjectChunk) {
-          result.add((ObjectChunk) value);
+        if (value instanceof OffHeapStoredObject) {
+          result.add((OffHeapStoredObject) value);
         }
       }
     }
   }
 
-  private ObjectChunk allocateChunk(int size) {
-    ObjectChunk result = this.freeList.allocate(size);
+  private OffHeapStoredObject allocateOffHeapStoredObject(int size) {
+    OffHeapStoredObject result = this.freeList.allocate(size);
     int resultSize = result.getSize();
     stats.incObjects(1);
     stats.incUsedMemory(resultSize);
     stats.incFreeMemory(-resultSize);
     notifyListeners();
     if (ReferenceCountHelper.trackReferenceCounts()) {
-      ReferenceCountHelper.refCountChanged(result.getMemoryAddress(), false, 1);
+      ReferenceCountHelper.refCountChanged(result.getAddress(), false, 1);
     }
     return result;
   }
   
   @Override
-  public MemoryChunk allocate(int size) {
+  public StoredObject allocate(int size) {
     //System.out.println("allocating " + size);
-    ObjectChunk result = allocateChunk(size);
+    OffHeapStoredObject result = allocateOffHeapStoredObject(size);
     //("allocated off heap object of size " + size + " @" + Long.toHexString(result.getMemoryAddress()), true);
     return result;
   }
@@ -324,16 +324,23 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
   
   @Override
   public StoredObject allocateAndInitialize(byte[] v, boolean isSerialized, boolean isCompressed) {
+    return allocateAndInitialize(v, isSerialized, isCompressed, null);
+  }
+  @Override
+  public StoredObject allocateAndInitialize(byte[] v, boolean isSerialized, boolean isCompressed, byte[] originalHeapData) {
     long addr = OffHeapRegionEntryHelper.encodeDataAsAddress(v, isSerialized, isCompressed);
     if (addr != 0L) {
-      return new DataAsAddress(addr);
+      return new TinyStoredObject(addr);
     }
-    ObjectChunk result = allocateChunk(v.length);
+    OffHeapStoredObject result = allocateOffHeapStoredObject(v.length);
     //debugLog("allocated off heap object of size " + v.length + " @" + Long.toHexString(result.getMemoryAddress()), true);
     //debugLog("allocated off heap object of size " + v.length + " @" + Long.toHexString(result.getMemoryAddress()) +  "chunkSize=" + result.getSize() + " isSerialized=" + isSerialized + " v=" + Arrays.toString(v), true);
     result.setSerializedValue(v);
     result.setSerialized(isSerialized);
     result.setCompressed(isCompressed);
+    if (originalHeapData != null) {
+      result = new OffHeapStoredObjectWithHeapForm(result, originalHeapData);
+    }
     return result;
   }
   
@@ -485,18 +492,18 @@ public class SimpleMemoryAllocatorImpl implements MemoryAllocator {
   }
 
   public synchronized List<MemoryBlock> getOrphans() {
-    List<ObjectChunk> liveChunks = this.freeList.getLiveChunks();
-    List<ObjectChunk> regionChunks = getRegionLiveChunks();
+    List<OffHeapStoredObject> liveChunks = this.freeList.getLiveChunks();
+    List<OffHeapStoredObject> regionChunks = getRegionLiveChunks();
     liveChunks.removeAll(regionChunks);
     List<MemoryBlock> orphans = new ArrayList<MemoryBlock>();
-    for (ObjectChunk chunk: liveChunks) {
+    for (OffHeapStoredObject chunk: liveChunks) {
       orphans.add(new MemoryBlockNode(this, chunk));
     }
     Collections.sort(orphans,
         new Comparator<MemoryBlock>() {
           @Override
           public int compare(MemoryBlock o1, MemoryBlock o2) {
-            return Long.valueOf(o1.getMemoryAddress()).compareTo(o2.getMemoryAddress());
+            return Long.valueOf(o1.getAddress()).compareTo(o2.getAddress());
           }
         });
     //this.memoryBlocks = new WeakReference<List<MemoryBlock>>(orphans);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Slab.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Slab.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Slab.java
new file mode 100644
index 0000000..000b8cb
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Slab.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+/**
+ * A "slab" of memory.
+ * Slabs can be created by calling {@link AddressableMemoryManager#allocateSlab(int)}.
+ * Slabs have an address, a size, and can be freed.
+ */
+public interface Slab {
+  /**
+   * Return the address of the memory of this slab.
+   */
+  public long getMemoryAddress();
+  /**
+   * Returns the size of this memory chunk in bytes.
+   */
+  public int getSize();
+  /**
+   * Returns any memory allocated for this slab.
+   * Note that after free is called the address of
+   * this slab should no longer be used.
+   */
+  public void free();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabFactory.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabFactory.java
new file mode 100644
index 0000000..a3f457d
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabFactory.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+/**
+ * Used to create Slab instances.
+ */
+public interface SlabFactory {
+  /** Create and return a Slab
+   * @throws OutOfMemoryError if the create fails
+   */
+  public Slab create(int size);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabImpl.java
new file mode 100644
index 0000000..1c88bde
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SlabImpl.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+/**
+ * Implements the Slab interface using AddressableMemoryManager.
+ * 
+ * @since 9.0
+ */
+public class SlabImpl implements Slab {
+  private final long address;
+  private final int size;
+  
+  public SlabImpl(int size) {
+    this(AddressableMemoryManager.allocate(size), size);
+  }
+
+  public SlabImpl(long addr, int size) {
+    this.address = addr;
+    this.size = size;
+  }
+  
+  @Override
+  public int getSize() {
+    return this.size;
+  }
+  
+  @Override
+  public long getMemoryAddress() {
+    return this.address;
+  }
+  
+  @Override
+  public void free() {
+    AddressableMemoryManager.free(this.address);
+  }
+
+  @Override
+  public String toString() {
+    final StringBuilder sb = new StringBuilder(getClass().getSimpleName());
+    sb.append("{");
+    sb.append("MemoryAddress=").append(getMemoryAddress());
+    sb.append(", Size=").append(getSize());
+    sb.append("}");
+    return sb.toString();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/StoredObject.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/StoredObject.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/StoredObject.java
index 4d93a07..26cb81f 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/StoredObject.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/StoredObject.java
@@ -18,38 +18,27 @@ package com.gemstone.gemfire.internal.offheap;
 
 import java.io.DataOutput;
 import java.io.IOException;
+import java.nio.ByteBuffer;
 
 import com.gemstone.gemfire.internal.Sendable;
 import com.gemstone.gemfire.internal.cache.CachedDeserializable;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
+import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
 
 /**
  * Represents an object stored in the cache.
  * Currently this interface is only used for values stored in off-heap regions.
+ * This interface provides methods that let you read and write the bytes
+ * of addressable memory used to store the bytes of the object.
+ * A reference count is used to determine if the object is still allocated.
+ * To increment the count call {@link #retain()}.
+ * To decrement the count call {@link #release()}.
  * At some point in the future it may also be used for values stored in heap regions. 
  * 
  * @author darrel
  * @since 9.0
  */
-public interface StoredObject extends Releasable, Sendable, CachedDeserializable {
-  /**
-   * Call to indicate that this object's memory is in use by the caller.
-   * The memory will stay allocated until {@link #release()} is called.
-   * It is ok for a thread other than the one that called this method to call release.
-   * This method is called implicitly at the time the chunk is allocated.
-   * Note: @Retained tells you that "this" is retained by this method.
-   * 
-   * @throws IllegalStateException if the max ref count is exceeded.
-   * @return true if we are able to retain this chunk; false if we need to retry
-   */
-  @Retained
-  public boolean retain();
-
-  /**
-   * Returns true if the value stored in this memory chunk is a serialized object. Returns false if it is a byte array.
-   */
-  public boolean isSerialized();
-
+public interface StoredObject extends Sendable, CachedDeserializable, Releasable {
   /**
    * Returns true if the value stored in this memory chunk is compressed. Returns false if it is uncompressed.
    */
@@ -92,4 +81,94 @@ public interface StoredObject extends Releasable, Sendable, CachedDeserializable
    * @throws IOException
    */
   void sendAsCachedDeserializable(DataOutput out) throws IOException;
+  
+  /**
+   * Call to indicate that this object's memory is in use by the caller.
+   * The memory will stay allocated until {@link #release()} is called.
+   * It is ok for a thread other than the one that called this method to call release.
+   * This method is called implicitly at the time the chunk is allocated.
+   * Note: @Retained tells you that "this" is retained by this method.
+   * 
+   * @throws IllegalStateException if the max ref count is exceeded.
+   * @return true if we are able to retain this chunk; false if we need to retry
+   */
+  @Retained
+  public boolean retain();
+
+  /**
+   * Returns true if this type of StoredObject uses a references count; false otherwise.
+   */
+  public boolean hasRefCount();
+   /**
+   * Returns the number of users of this memory. If this type of StoredObject does not
+   * have a reference count then -1 is returned.
+   */
+  public int getRefCount();
+  
+  /**
+   * Returns the address of the memory used to store this object.
+   * This address may not be to the first byte of stored data since
+   * the implementation may store some internal data in the first bytes of the memory.
+   * This address can be used with AddressableMemoryManager.
+   */
+  public long getAddress();
+
+  /**
+   * Returns the number of bytes of memory used by this object to store an object.
+   * This size includes any bytes used for padding and meta-information.
+   */
+  public int getSize();
+  
+  /**
+   * Returns the number of bytes of memory used to store the object.
+   * This size does not include any bytes used for padding.
+   */
+  public int getDataSize();
+  public byte readDataByte(int offset);
+  public void writeDataByte(int offset, byte value);
+  public void readDataBytes(int offset, byte[] bytes);
+  public void writeDataBytes(int offset, byte[] bytes);
+  public void readDataBytes(int offset, byte[] bytes, int bytesOffset, int size);
+  public void writeDataBytes(int offset, byte[] bytes, int bytesOffset, int size);
+  /**
+   * Returns an address that can read data from this StoredObject at the given offset.
+   */
+  public long getAddressForReadingData(int offset, int size);
+  
+  /**
+   * Returns a StoredObject that acts as if its data is our data starting
+   * at the given offset and limited to the given number of bytes.
+   */
+  public StoredObject slice(int offset, int limit);
+  
+  /**
+   * Returns true if our data is equal to other's data; false otherwise.
+   */
+  public boolean checkDataEquals(StoredObject other);
+  /**
+   * Returns true if the given bytes are equal to our data bytes; false otherwise
+   */
+  public boolean checkDataEquals(byte[] serializedObj);
+
+  /**
+   * Creates and returns a direct ByteBuffer that contains the data of this stored object.
+   * Note that the returned ByteBuffer has a reference to the
+   * address of this stored object so it can only be used while this stored object is retained.
+   * @return the created direct byte buffer or null if it could not be created.
+   */
+  @Unretained
+  public ByteBuffer createDirectByteBuffer();
+  /**
+   * Returns true if the data is serialized with PDX
+   */
+  public boolean isSerializedPdxInstance();
+  
+  /**
+   * Returns a StoredObject that does not cache the heap form.
+   * If a StoredObject is going to be kept around for a while then
+   * it is good to call this so that it will not also keep the heap
+   * form in memory.
+   */
+  public StoredObject getStoredObjectWithoutHeapForm();
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SyncChunkStack.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SyncChunkStack.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SyncChunkStack.java
deleted file mode 100644
index 99fd96f..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/SyncChunkStack.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import com.gemstone.gemfire.LogWriter;
-
-/**
- * A "stack" of "chunk" instances. The chunks are not kept
- * in java object form but instead each "chunk" is just an
- * off-heap address.
- * This class is used for each "tiny" free-list of the off-heap memory allocator.
- */
-public class SyncChunkStack {
-  // Ok to read without sync but must be synced on write
-  private volatile long topAddr;
-  
-  public SyncChunkStack(long addr) {
-    if (addr != 0L) SimpleMemoryAllocatorImpl.validateAddress(addr);
-    this.topAddr = addr;
-  }
-  public SyncChunkStack() {
-    this.topAddr = 0L;
-  }
-  public boolean isEmpty() {
-    return this.topAddr == 0L;
-  }
-  public void offer(long e) {
-    assert e != 0;
-    SimpleMemoryAllocatorImpl.validateAddress(e);
-    synchronized (this) {
-      ObjectChunk.setNext(e, this.topAddr);
-      this.topAddr = e;
-    }
-  }
-  public long poll() {
-    long result;
-    synchronized (this) {
-      result = this.topAddr;
-      if (result != 0L) {
-        this.topAddr = ObjectChunk.getNext(result);
-      }
-    }
-    return result;
-  }
-  /**
-   * Returns the address of the "top" item in this stack.
-   */
-  public long getTopAddress() {
-    return this.topAddr;
-  }
-  /**
-   * Removes all the Chunks from this stack
-   * and returns the address of the first chunk.
-   * The caller owns all the Chunks after this call.
-   */
-  public long clear() {
-    long result;
-    synchronized (this) {
-      result = this.topAddr;
-      if (result != 0L) {
-        this.topAddr = 0L;
-      }
-    }
-    return result;
-  }
-  public void logSizes(LogWriter lw, String msg) {
-    long headAddr = this.topAddr;
-    long addr;
-    boolean concurrentModDetected;
-    do {
-      concurrentModDetected = false;
-      addr = headAddr;
-      while (addr != 0L) {
-        int curSize = ObjectChunk.getSize(addr);
-        addr = ObjectChunk.getNext(addr);
-        testHookDoConcurrentModification();
-        long curHead = this.topAddr;
-        if (curHead != headAddr) {
-          headAddr = curHead;
-          concurrentModDetected = true;
-          // Someone added or removed from the stack.
-          // So we break out of the inner loop and start
-          // again at the new head.
-          break;
-        }
-        // TODO construct a single log msg
-        // that gets reset when concurrentModDetected.
-        lw.info(msg + curSize);
-      }
-    } while (concurrentModDetected);
-  }
-  public long computeTotalSize() {
-    long result;
-    long headAddr = this.topAddr;
-    long addr;
-    boolean concurrentModDetected;
-    do {
-      concurrentModDetected = false;
-      result = 0;
-      addr = headAddr;
-      while (addr != 0L) {
-        result += ObjectChunk.getSize(addr);
-        addr = ObjectChunk.getNext(addr);
-        testHookDoConcurrentModification();
-        long curHead = this.topAddr;
-        if (curHead != headAddr) {
-          headAddr = curHead;
-          concurrentModDetected = true;
-          // Someone added or removed from the stack.
-          // So we break out of the inner loop and start
-          // again at the new head.
-          break;
-        }
-      }
-    } while (concurrentModDetected);
-    return result;
-  }
-  
-  /**
-   * This method allows tests to override it
-   * and do a concurrent modification to the stack.
-   * For production code it will be a noop.
-   */
-  protected void testHookDoConcurrentModification() {
-    // nothing needed in production code
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/TinyStoredObject.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/TinyStoredObject.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/TinyStoredObject.java
new file mode 100644
index 0000000..e8878fa
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/TinyStoredObject.java
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
+import com.gemstone.gemfire.internal.cache.EntryBits;
+import com.gemstone.gemfire.internal.cache.EntryEventImpl;
+import com.gemstone.gemfire.internal.cache.RegionEntry;
+import com.gemstone.gemfire.internal.cache.RegionEntryContext;
+
+/**
+ * Used to represent stored objects that can be stored
+ * in the address field.
+ * The RegionEntry for an off-heap region uses a primitive
+ * long to store the off-heap address of the entry's value.
+ * If the value can be encoded as a long (i.e. its serialized
+ * representation will fit in the 8 bytes of a long without looking
+ * like an actual off-heap address) then these tiny values on an
+ * off-heap regions are actually stored on the heap in the primitive
+ * long field. When these values are "objectified" they will be an
+ * instance of this class.
+ * Instances of this class have a very short lifetime.
+ */
+public class TinyStoredObject extends AbstractStoredObject {
+  private final long address;
+  
+  public TinyStoredObject(long addr) {
+    this.address = addr;
+  }
+  
+  @Override
+  public long getAddress() {
+    return this.address;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o instanceof TinyStoredObject) {
+      return getAddress() == ((TinyStoredObject) o).getAddress();
+    }
+    return false;
+  }
+  
+  @Override
+  public int hashCode() {
+    long value = getAddress();
+    return (int)(value ^ (value >>> 32));
+  }
+
+  @Override
+  public int getSizeInBytes() {
+    return 0;
+  }
+
+  public byte[] getDecompressedBytes(RegionEntryContext r) {
+    byte[] bytes = OffHeapRegionEntryHelper.decodeAddressToBytes(getAddress(), true, true);
+    if (isCompressed()) {
+        long time = r.getCachePerfStats().startDecompression();
+        bytes = r.getCompressor().decompress(bytes);
+        r.getCachePerfStats().endDecompression(time);
+    }
+    return bytes;
+  }
+
+  /**
+   * If we contain a byte[] return it.
+   * Otherwise return the serialize bytes in us in a byte array.
+   */
+  public byte[] getRawBytes() {
+    return OffHeapRegionEntryHelper.decodeAddressToBytes(getAddress(), true, false);
+  }
+  
+  @Override
+  public byte[] getSerializedValue() {
+    byte[] value = OffHeapRegionEntryHelper.decodeAddressToBytes(this.address, true, false);
+    if (!isSerialized()) {
+      value = EntryEventImpl.serialize(value);
+    }
+    return value;
+  }
+
+  @Override
+  public Object getDeserializedValue(Region r, RegionEntry re) {
+    return OffHeapRegionEntryHelper.decodeAddressToObject(this.address);
+  }
+
+  @Override
+  public void fillSerializedValue(BytesAndBitsForCompactor wrapper,
+      byte userBits) {
+    byte[] value;
+    if (isSerialized()) {
+      value = getSerializedValue();
+      userBits = EntryBits.setSerialized(userBits, true);
+    } else {
+      value = (byte[]) getDeserializedForReading();
+    }
+    wrapper.setData(value, userBits, value.length, true);
+  }
+
+  @Override
+  public int getValueSizeInBytes() {
+    return 0;
+  }
+  
+  @Override
+  public boolean isSerialized() {
+    return OffHeapRegionEntryHelper.isSerialized(this.address);
+  }
+
+  @Override
+  public boolean isCompressed() {
+    return OffHeapRegionEntryHelper.isCompressed(this.address);
+  }
+
+  @Override
+  public void release() {
+    // nothing needed
+  }
+
+  @Override
+  public boolean retain() {
+    return true;
+  }
+
+  @Override
+  public int getRefCount() {
+    return -1;
+  }
+
+  @Override
+  public int getSize() {
+    return Long.BYTES;
+  }
+
+  @Override
+  public int getDataSize() {
+    return OffHeapRegionEntryHelper.decodeAddressToDataSize(this.address);
+  }
+
+  @Override
+  public byte readDataByte(int offset) {
+    // TODO OFFHEAP: what if the data is compressed?
+    return getRawBytes()[offset];
+  }
+
+  @Override
+  public void writeDataByte(int offset, byte value) {
+    throw new UnsupportedOperationException("ObjectStoredAsAddress does not support modifying the data bytes");
+  }
+
+  @Override
+  public void readDataBytes(int offset, byte[] bytes) {
+    readDataBytes(offset, bytes, 0, bytes.length);
+  }
+
+  @Override
+  public void writeDataBytes(int offset, byte[] bytes) {
+    writeDataBytes(offset, bytes, 0, bytes.length);
+  }
+
+  @Override
+  public void readDataBytes(int offset, byte[] bytes, int bytesOffset, int size) {
+    // TODO OFFHEAP: what if the data is compressed?
+    byte[] src = getRawBytes();
+    int dstIdx = bytesOffset;
+    for (int i = offset; i < offset+size; i++) {
+      bytes[dstIdx++] = src[i];
+    }
+  }
+
+  @Override
+  public void writeDataBytes(int offset, byte[] bytes, int bytesOffset, int size) {
+    throw new UnsupportedOperationException("ObjectStoredAsAddress does not support modifying the data bytes");
+  }
+
+  @Override
+  public ByteBuffer createDirectByteBuffer() {
+    return null;
+  }
+
+  @Override
+  public boolean hasRefCount() {
+    return false;
+  }
+
+  @Override
+  public boolean checkDataEquals(StoredObject so) {
+    // TODO OFFHEAP: what if the data is compressed?
+    return equals(so);
+  }
+
+  @Override
+  public boolean checkDataEquals(byte[] serializedObj) {
+    // TODO OFFHEAP: what if the data is compressed?
+    byte[] myBytes = getSerializedValue();
+    return Arrays.equals(myBytes, serializedObj);
+  }
+
+  @Override
+  public long getAddressForReadingData(int offset, int size) {
+    throw new UnsupportedOperationException("ObjectStoredAsAddress does not support reading at an address");
+  }
+
+  @Override
+  public StoredObject slice(int offset, int limit) {
+    throw new UnsupportedOperationException("ObjectStoredAsAddress does not support slice");
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunk.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunk.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunk.java
deleted file mode 100644
index aebc459..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunk.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import com.gemstone.gemfire.internal.SharedLibrary;
-import com.gemstone.gemfire.pdx.internal.unsafe.UnsafeWrapper;
-
-/**
- * Represents a single addressable chunk of off-heap memory. The size specifies
- * the number of bytes stored at the address.
- * 
- * @since 9.0
- */
-public class UnsafeMemoryChunk implements AddressableMemoryChunk {
-  private static final UnsafeWrapper unsafe;
-  private static final int ARRAY_BYTE_BASE_OFFSET;
-  private static String reason;
-  static {
-	UnsafeWrapper tmp = null;
-	try {
-	  tmp = new UnsafeWrapper();
-	  reason = null;
-	} catch (RuntimeException ignore) {
-      reason = ignore.toString();
-	} catch (Error ignore) {
-      reason = ignore.toString();
-	}
-	unsafe = tmp;
-    ARRAY_BYTE_BASE_OFFSET = unsafe != null ? unsafe.arrayBaseOffset(byte[].class) : 0;
-  }
-  
-  private final long data;
-  private final int size;
-  
-  public UnsafeMemoryChunk(int size) {
-	if (unsafe == null) {
-      throw new OutOfMemoryError("Off-heap memory is not available because: " + reason);
-	}
-    try {
-    this.data = unsafe.allocateMemory(size);
-    this.size = size;
-    } catch (OutOfMemoryError err) {
-      String msg = "Failed creating " + size + " bytes of off-heap memory during cache creation.";
-      if (err.getMessage() != null && !err.getMessage().isEmpty()) {
-        msg += " Cause: " + err.getMessage();
-      }
-      if (!SharedLibrary.is64Bit() && size >= (1024*1024*1024)) {
-        msg += " The JVM looks like a 32-bit one. For large amounts of off-heap memory a 64-bit JVM is needed.";
-      }
-      throw new OutOfMemoryError(msg);
-    }
-  }
-
-  @Override
-  public int getSize() {
-    return (int)this.size;
-  }
-  
-  /* (non-Javadoc)
-   * @see com.gemstone.gemfire.internal.offheap.AddressableMemoryChunk#getMemoryAddress()
-   */
-  @Override
-  public long getMemoryAddress() {
-    return this.data;
-  }
-  
-  public static byte readAbsoluteByte(long addr) {
-    return unsafe.getByte(addr);
-  }
-  public static char readAbsoluteChar(long addr) {
-    return unsafe.getChar(null, addr);
-  }
-  public static short readAbsoluteShort(long addr) {
-    return unsafe.getShort(null, addr);
-  }
-  public static int readAbsoluteInt(long addr) {
-    return unsafe.getInt(null, addr);
-  }
-  public static int readAbsoluteIntVolatile(long addr) {
-    return unsafe.getIntVolatile(null, addr);
-  }
-  public static long readAbsoluteLong(long addr) {
-    return unsafe.getLong(null, addr);
-  }
-  public static long readAbsoluteLongVolatile(long addr) {
-    return unsafe.getLongVolatile(null, addr);
-  }
-
-  @Override
-  public byte readByte(int offset) {
-    return readAbsoluteByte(this.data+offset);
-  }
-
-  public static void writeAbsoluteByte(long addr, byte value) {
-    unsafe.putByte(addr, value);
-  }
-       
-  public static void writeAbsoluteInt(long addr, int value) {
-    unsafe.putInt(null, addr, value);
-  }
-  public static void writeAbsoluteIntVolatile(long addr, int value) {
-    unsafe.putIntVolatile(null, addr, value);
-  }
-  public static boolean writeAbsoluteIntVolatile(long addr, int expected, int value) {
-    return unsafe.compareAndSwapInt(null, addr, expected, value);
-  }
-  public static void writeAbsoluteLong(long addr, long value) {
-    unsafe.putLong(null, addr, value);
-  }
-  public static void writeAbsoluteLongVolatile(long addr, long value) {
-    unsafe.putLongVolatile(null, addr, value);
-  }
-  public static boolean writeAbsoluteLongVolatile(long addr, long expected, long value) {
-    return unsafe.compareAndSwapLong(null, addr, expected, value);
-  }
-
-  @Override
-  public void writeByte(int offset, byte value) {
-    writeAbsoluteByte(this.data+offset, value);
-  }
-
-  @Override
-  public void readBytes(int offset, byte[] bytes) {
-    readBytes(offset, bytes, 0, bytes.length);
-  }
-
-  @Override
-  public void writeBytes(int offset, byte[] bytes) {
-    writeBytes(offset, bytes, 0, bytes.length);
-  }
-
-  public static void readAbsoluteBytes(long addr, byte[] bytes, int bytesOffset, int size) {
-    // Throwing an Error instead of using the "assert" keyword because passing < 0 to
-    // copyMemory(...) can lead to a core dump with some JVMs and we don't want to
-    // require the -ea JVM flag.
-    if (size < 0) {
-      throw new AssertionError("Size=" + size + ", but size must be >= 0");
-    }
-    
-    assert bytesOffset >= 0 : "byteOffset=" + bytesOffset;
-    assert bytesOffset + size <= bytes.length : "byteOffset=" + bytesOffset + ",size=" + size + ",bytes.length=" + bytes.length;
-    
-    if (size == 0) {
-      return; // No point in wasting time copying 0 bytes
-    }
-    unsafe.copyMemory(null, addr, bytes, ARRAY_BYTE_BASE_OFFSET+bytesOffset, size);
-  }
-
-  @Override
-  public void readBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-    readAbsoluteBytes(this.data+offset, bytes, bytesOffset, size);
-  }
-
-  public static void copyMemory(long srcAddr, long dstAddr, long size) {
-    unsafe.copyMemory(srcAddr, dstAddr, size);
-  }
-  
-  public static void writeAbsoluteBytes(long addr, byte[] bytes, int bytesOffset, int size) {
-    // Throwing an Error instead of using the "assert" keyword because passing < 0 to
-    // copyMemory(...) can lead to a core dump with some JVMs and we don't want to
-    // require the -ea JVM flag.
-    if (size < 0) {
-      throw new AssertionError("Size=" + size + ", but size must be >= 0");
-    }
-
-    assert bytesOffset >= 0 : "byteOffset=" + bytesOffset;
-    assert bytesOffset + size <= bytes.length : "byteOffset=" + bytesOffset + ",size=" + size + ",bytes.length=" + bytes.length;
-    
-    if (size == 0) {
-      return; // No point in wasting time copying 0 bytes
-    }
-    unsafe.copyMemory(bytes, ARRAY_BYTE_BASE_OFFSET+bytesOffset, null, addr, size);
-  }
-
-  public static void fill(long addr, int size, byte fill) {
-    unsafe.setMemory(addr, size, fill);
-  }
-  
-  @Override
-  public void writeBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-    writeAbsoluteBytes(this.data+offset, bytes, bytesOffset, size);
-  }
-
-  @Override
-  public void release() {
-    unsafe.freeMemory(this.data);
-  }
-
-  @Override
-  public void copyBytes(int src, int dst, int size) {
-    unsafe.copyMemory(this.data+src, this.data+dst, size);
-  }
-  
-  @Override
-  public String toString() {
-    final StringBuilder sb = new StringBuilder(getClass().getSimpleName());
-    sb.append("{");
-    sb.append("MemoryAddress=").append(getMemoryAddress());
-    sb.append(", Size=").append(getSize());
-    sb.append("}");
-    return sb.toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ByteBufferInputStream.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ByteBufferInputStream.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ByteBufferInputStream.java
index cfc05f2..d7ec947 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ByteBufferInputStream.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ByteBufferInputStream.java
@@ -31,8 +31,8 @@ import java.nio.ByteOrder;
 
 import com.gemstone.gemfire.internal.ByteBufferWriter;
 import com.gemstone.gemfire.internal.HeapDataOutputStream;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
+import com.gemstone.gemfire.internal.offheap.AddressableMemoryManager;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 
 /**
  * <p>
@@ -109,15 +109,15 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
     public static ByteSource create(ByteBuffer bb) {
       return new ByteBufferByteSource(bb);
     }
-    public static ByteSource create(ObjectChunk chunk) {
-      // Since I found a way to create a DirectByteBuffer (using reflection) from a Chunk
+    public static ByteSource create(StoredObject so) {
+      // Since I found a way to create a DirectByteBuffer (using reflection) from a StoredObject
       // we might not even need the ByteSource abstraction any more.
       // But it is possible that createByteBuffer will not work on a different jdk so keep it for now.
-      ByteBuffer bb = chunk.createDirectByteBuffer();
+      ByteBuffer bb = so.createDirectByteBuffer();
       if (bb != null) {
         return create(bb);
       } else {
-        return new OffHeapByteSource(chunk);
+        return new OffHeapByteSource(so);
       }
     }
   }
@@ -323,10 +323,10 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
   public static class OffHeapByteSource implements ByteSource {
     private int position;
     private int limit;
-    private final ObjectChunk chunk;
+    private final StoredObject chunk;
 
-    public OffHeapByteSource(ObjectChunk c) {
-      this.chunk = c;
+    public OffHeapByteSource(StoredObject so) {
+      this.chunk = so;
       this.position = 0;
       this.limit = capacity();
     }
@@ -474,17 +474,17 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
       }
       int p = this.position;
       this.position += length;
-      this.chunk.readBytes(p, dst, offset, length);
+      this.chunk.readDataBytes(p, dst, offset, length);
     }
 
     @Override
     public byte get() {
-      return this.chunk.readByte(nextGetIndex());
+      return this.chunk.readDataByte(nextGetIndex());
     }
     @Override
     public byte get(int pos) {
       checkIndex(pos);
-      return this.chunk.readByte(pos);
+      return this.chunk.readDataByte(pos);
     }
 
     /**
@@ -513,16 +513,16 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
       return basicGetShort(pos);
     }
     private short basicGetShort(int pos) {
-      long addr = this.chunk.getAddressForReading(pos, 2);
+      long addr = this.chunk.getAddressForReadingData(pos, 2);
       if (unaligned) {
-        short result = UnsafeMemoryChunk.readAbsoluteShort(addr);
+        short result = AddressableMemoryManager.readShort(addr);
         if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
           result = Short.reverseBytes(result);
         }
         return result;
       } else {
-        int ch1 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        int ch2 = UnsafeMemoryChunk.readAbsoluteByte(addr);
+        int ch1 = AddressableMemoryManager.readByte(addr++);
+        int ch2 = AddressableMemoryManager.readByte(addr);
         return (short)((ch1 << 8) + (ch2 << 0));
       }
     }
@@ -537,16 +537,16 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
       return basicGetChar(pos);
     }
     private char basicGetChar(int pos) {
-      long addr = this.chunk.getAddressForReading(pos, 2);
+      long addr = this.chunk.getAddressForReadingData(pos, 2);
       if (unaligned) {
-        char result = UnsafeMemoryChunk.readAbsoluteChar(addr);
+        char result = AddressableMemoryManager.readChar(addr);
         if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
           result = Character.reverseBytes(result);
         }
         return result;
       } else {
-        int ch1 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        int ch2 = UnsafeMemoryChunk.readAbsoluteByte(addr);
+        int ch1 = AddressableMemoryManager.readByte(addr++);
+        int ch2 = AddressableMemoryManager.readByte(addr);
         return (char)((ch1 << 8) + (ch2 << 0));
       }
     }
@@ -562,18 +562,18 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
     }
     
     private int basicGetInt(final int pos) {
-      long addr = this.chunk.getAddressForReading(pos, 4);
+      long addr = this.chunk.getAddressForReadingData(pos, 4);
       if (unaligned) {
-        int result = UnsafeMemoryChunk.readAbsoluteInt(addr);
+        int result = AddressableMemoryManager.readInt(addr);
         if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
           result = Integer.reverseBytes(result);
         }
         return result;
       } else {
-        byte b0 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b1 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b2 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b3 = UnsafeMemoryChunk.readAbsoluteByte(addr);
+        byte b0 = AddressableMemoryManager.readByte(addr++);
+        byte b1 = AddressableMemoryManager.readByte(addr++);
+        byte b2 = AddressableMemoryManager.readByte(addr++);
+        byte b3 = AddressableMemoryManager.readByte(addr);
         return (b0 << 24) + ((b1 & 255) << 16) + ((b2 & 255) << 8) + ((b3 & 255) << 0);
       }
     }
@@ -588,22 +588,22 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
       return basicGetLong(pos);
     }
     private long basicGetLong(final int pos) {
-      long addr = this.chunk.getAddressForReading(pos, 8);
+      long addr = this.chunk.getAddressForReadingData(pos, 8);
       if (unaligned) {
-        long result = UnsafeMemoryChunk.readAbsoluteLong(addr);
+        long result = AddressableMemoryManager.readLong(addr);
         if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
           result = Long.reverseBytes(result);
         }
         return result;
       } else {
-        byte b0 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b1 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b2 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b3 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b4 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b5 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b6 = UnsafeMemoryChunk.readAbsoluteByte(addr++);
-        byte b7 = UnsafeMemoryChunk.readAbsoluteByte(addr);
+        byte b0 = AddressableMemoryManager.readByte(addr++);
+        byte b1 = AddressableMemoryManager.readByte(addr++);
+        byte b2 = AddressableMemoryManager.readByte(addr++);
+        byte b3 = AddressableMemoryManager.readByte(addr++);
+        byte b4 = AddressableMemoryManager.readByte(addr++);
+        byte b5 = AddressableMemoryManager.readByte(addr++);
+        byte b6 = AddressableMemoryManager.readByte(addr++);
+        byte b7 = AddressableMemoryManager.readByte(addr);
         return (((long)b0 << 56) +
             ((long)(b1 & 255) << 48) +
             ((long)(b2 & 255) << 40) +
@@ -724,7 +724,7 @@ public class ByteBufferInputStream extends InputStream implements DataInput, jav
     this.buffer = copy.buffer.duplicate();
   }
 
-  public ByteBufferInputStream(ObjectChunk blob) {
+  public ByteBufferInputStream(StoredObject blob) {
     this.buffer = ByteSourceFactory.create(blob);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ImmutableByteBufferInputStream.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ImmutableByteBufferInputStream.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ImmutableByteBufferInputStream.java
index d632158..ff0871a 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ImmutableByteBufferInputStream.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/tcp/ImmutableByteBufferInputStream.java
@@ -18,7 +18,7 @@ package com.gemstone.gemfire.internal.tcp;
 
 import java.nio.ByteBuffer;
 
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 
 /**
  * You should only create an instance of this class if the bytes this buffer reads
@@ -67,7 +67,7 @@ public class ImmutableByteBufferInputStream extends ByteBufferInputStream {
     // for serialization
   }
   
-  public ImmutableByteBufferInputStream(ObjectChunk blob) {
+  public ImmutableByteBufferInputStream(StoredObject blob) {
     super(blob);
   }
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/util/BlobHelper.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/util/BlobHelper.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/util/BlobHelper.java
index 40015a4..28252c3 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/util/BlobHelper.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/util/BlobHelper.java
@@ -27,7 +27,7 @@ import com.gemstone.gemfire.internal.DSCODE;
 import com.gemstone.gemfire.internal.HeapDataOutputStream;
 import com.gemstone.gemfire.internal.Version;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
 import com.gemstone.gemfire.pdx.internal.PdxInputStream;
 
@@ -140,7 +140,7 @@ public class BlobHelper {
    * If a PdxInstance is returned then it will refer to Chunk's off-heap memory
    * with an unretained reference.
    */
-  public static @Unretained Object deserializeOffHeapBlob(ObjectChunk blob) throws IOException, ClassNotFoundException {
+  public static @Unretained Object deserializeOffHeapBlob(StoredObject blob) throws IOException, ClassNotFoundException {
     Object result;
     final long start = startDeserialization();
     // For both top level and nested pdxs we just want a reference to this off-heap blob.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxInputStream.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxInputStream.java b/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxInputStream.java
index 4a5a9df..85c6cd5 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxInputStream.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/PdxInputStream.java
@@ -26,7 +26,7 @@ import java.util.Date;
 import com.gemstone.gemfire.DataSerializer;
 import com.gemstone.gemfire.InternalGemFireException;
 import com.gemstone.gemfire.pdx.PdxSerializationException;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.tcp.ByteBufferInputStream;
 import com.gemstone.gemfire.internal.tcp.ImmutableByteBufferInputStream;
 
@@ -76,7 +76,7 @@ public class PdxInputStream extends ImmutableByteBufferInputStream {
     // for serialization
   }
 
-  public PdxInputStream(ObjectChunk blob) {
+  public PdxInputStream(StoredObject blob) {
     super(blob);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
index 7a4d09e..dce68cf 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
@@ -110,8 +110,8 @@ import com.gemstone.gemfire.internal.cache.versions.RegionVersionVector;
 import com.gemstone.gemfire.internal.cache.versions.VMRegionVersionVector;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.offheap.MemoryChunkWithRefCount;
 import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.test.dunit.AsyncInvocation;
 import com.gemstone.gemfire.test.dunit.DistributedTestCase;
 import com.gemstone.gemfire.test.dunit.DistributedTestUtils;
@@ -2004,8 +2004,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
               LocalRegion reRegion;
               reRegion = (LocalRegion) region;
               RegionEntry re = reRegion.getRegionEntry(key2);
-              MemoryChunkWithRefCount mc = (MemoryChunkWithRefCount) re._getValue();
-              assertEquals(1, mc.getRefCount());
+              StoredObject so = (StoredObject) re._getValue();
+              assertEquals(1, so.getRefCount());
               assertEquals(1, ma.getStats().getObjects());
             }
           }
@@ -2091,8 +2091,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
             assertEquals(2, ma.getStats().getObjects());
             LocalRegion reRegion;
             reRegion = (LocalRegion) region;
-            MemoryChunkWithRefCount mc = (MemoryChunkWithRefCount) reRegion.getRegionEntry(key)._getValue();
-            assertEquals(1, mc.getRefCount());
+            StoredObject so = (StoredObject) reRegion.getRegionEntry(key)._getValue();
+            assertEquals(1, so.getRefCount());
           }
         }
       });
@@ -2157,8 +2157,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
               assertEquals(2, ma.getStats().getObjects());
               LocalRegion reRegion;
               reRegion = (LocalRegion) region;
-              MemoryChunkWithRefCount mc = (MemoryChunkWithRefCount) reRegion.getRegionEntry(key)._getValue();
-              assertEquals(1, mc.getRefCount());
+              StoredObject so = (StoredObject) reRegion.getRegionEntry(key)._getValue();
+              assertEquals(1, so.getRefCount());
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ChunkValueWrapperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ChunkValueWrapperJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ChunkValueWrapperJUnitTest.java
deleted file mode 100644
index b69f82e..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ChunkValueWrapperJUnitTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.cache;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.internal.cache.DiskEntry.Helper.ChunkValueWrapper;
-import com.gemstone.gemfire.internal.cache.DiskEntry.Helper.Flushable;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.NullOffHeapMemoryStats;
-import com.gemstone.gemfire.internal.offheap.NullOutOfOffHeapMemoryListener;
-import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class ChunkValueWrapperJUnitTest {
-
-  private static ChunkValueWrapper createChunkValueWrapper(byte[] bytes, boolean isSerialized) {
-    ObjectChunk c = (ObjectChunk)SimpleMemoryAllocatorImpl.getAllocator().allocateAndInitialize(bytes, isSerialized, false);
-    return new ChunkValueWrapper(c);
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-  }
-
-  @Test
-  public void testIsSerialized() {
-    assertEquals(true, createChunkValueWrapper(new byte[16], true).isSerialized());
-    assertEquals(false, createChunkValueWrapper(new byte[16], false).isSerialized());
-  }
-  
-  @Test
-  public void testGetUserBits() {
-    assertEquals((byte)1, createChunkValueWrapper(new byte[16], true).getUserBits());
-    assertEquals((byte)0, createChunkValueWrapper(new byte[16], false).getUserBits());
-  }
-  
-  @Test
-  public void testGetLength() {
-    assertEquals(32, createChunkValueWrapper(new byte[32], true).getLength());
-    assertEquals(17, createChunkValueWrapper(new byte[17], false).getLength());
-  }
-  
-  @Test
-  public void testGetBytesAsString() {
-    assertEquals("byte[0, 0, 0, 0, 0, 0, 0, 0]", createChunkValueWrapper(new byte[8], false).getBytesAsString());
-  }
-  
-  @Test
-  public void testSendTo() throws IOException {
-    final ByteBuffer bb = ByteBuffer.allocateDirect(18);
-    bb.limit(8);
-    ChunkValueWrapper vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8}, false);
-    vw.sendTo(bb, new Flushable() {
-      @Override
-      public void flush() throws IOException {
-        fail("should not have been called");
-      }
-
-      @Override
-      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
-        fail("should not have been called");
-      }
-    });
-    assertEquals(8, bb.position());
-    bb.flip();
-    assertEquals(1, bb.get());
-    assertEquals(2, bb.get());
-    assertEquals(3, bb.get());
-    assertEquals(4, bb.get());
-    assertEquals(5, bb.get());
-    assertEquals(6, bb.get());
-    assertEquals(7, bb.get());
-    assertEquals(8, bb.get());
-    
-    bb.clear();
-    bb.limit(8);
-    vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8,9}, false);
-    final int[] flushCalls = new int[1];
-    vw.sendTo(bb, new Flushable() {
-      @Override
-      public void flush() throws IOException {
-        if (flushCalls[0] != 0) {
-          fail("expected flush to only be called once");
-        }
-        flushCalls[0]++;
-        assertEquals(8, bb.position());
-        for (int i=0; i < 8; i++) {
-          assertEquals(i+1, bb.get(i));
-        }
-        bb.clear();
-        bb.limit(8);
-      }
-
-      @Override
-      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
-        fail("should not have been called");
-      }
-    });
-    assertEquals(1, bb.position());
-    bb.flip();
-    assertEquals(9, bb.get());
-    
-    bb.clear();
-    bb.limit(8);
-    flushCalls[0] = 0;
-    vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}, false);
-    vw.sendTo(bb, new Flushable() {
-      @Override
-      public void flush() throws IOException {
-        if (flushCalls[0] > 1) {
-          fail("expected flush to only be called twice");
-        }
-        assertEquals(8, bb.position());
-        for (int i=0; i < 8; i++) {
-          assertEquals((flushCalls[0]*8)+i+1, bb.get(i));
-        }
-        flushCalls[0]++;
-        bb.clear();
-        bb.limit(8);
-      }
-
-      @Override
-      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
-        fail("should not have been called");
-      }
-    });
-    assertEquals(1, bb.position());
-    bb.flip();
-    assertEquals(17, bb.get());
-    
-    // now test with a chunk that will not fit in bb.
-    bb.clear();
-    flushCalls[0] = 0;
-    bb.put((byte) 0);
-    vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}, false);
-    vw.sendTo(bb, new Flushable() {
-      @Override
-      public void flush() throws IOException {
-        fail("should not have been called");
-      }
-
-      @Override
-      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
-        flushCalls[0]++;
-        assertEquals(1, bb.position());
-        bb.flip();
-        assertEquals(0, bb.get());
-        assertEquals(19, chunkbb.remaining());
-        for (int i=1; i <= 19; i++) {
-          assertEquals(i, chunkbb.get());
-        }
-      }
-    });
-    assertEquals(1, flushCalls[0]);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapTestUtil.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapTestUtil.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapTestUtil.java
index cbf3bf6..8fd6895 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapTestUtil.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapTestUtil.java
@@ -52,7 +52,7 @@ public class OffHeapTestUtil {
     }
     
     if(orphans != null && ! orphans.isEmpty()) {
-      List<RefCountChangeInfo> info = ReferenceCountHelper.getRefCountInfo(orphans.get(0).getMemoryAddress());
+      List<RefCountChangeInfo> info = ReferenceCountHelper.getRefCountInfo(orphans.get(0).getAddress());
       System.out.println("FOUND ORPHAN!!");
       System.out.println("Sample orphan: " + orphans.get(0));
       System.out.println("Orphan info: " + info);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapValueWrapperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapValueWrapperJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapValueWrapperJUnitTest.java
new file mode 100644
index 0000000..0829009
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OffHeapValueWrapperJUnitTest.java
@@ -0,0 +1,188 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.cache;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.internal.cache.DiskEntry.Helper.OffHeapValueWrapper;
+import com.gemstone.gemfire.internal.cache.DiskEntry.Helper.Flushable;
+import com.gemstone.gemfire.internal.offheap.NullOffHeapMemoryStats;
+import com.gemstone.gemfire.internal.offheap.NullOutOfOffHeapMemoryListener;
+import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
+import com.gemstone.gemfire.internal.offheap.SlabImpl;
+import com.gemstone.gemfire.internal.offheap.StoredObject;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class OffHeapValueWrapperJUnitTest {
+
+  private static OffHeapValueWrapper createChunkValueWrapper(byte[] bytes, boolean isSerialized) {
+    StoredObject c = SimpleMemoryAllocatorImpl.getAllocator().allocateAndInitialize(bytes, isSerialized, false);
+    return new OffHeapValueWrapper(c);
+  }
+
+  @Before
+  public void setUp() throws Exception {
+    SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+  }
+
+  @Test
+  public void testIsSerialized() {
+    assertEquals(true, createChunkValueWrapper(new byte[16], true).isSerialized());
+    assertEquals(false, createChunkValueWrapper(new byte[16], false).isSerialized());
+  }
+  
+  @Test
+  public void testGetUserBits() {
+    assertEquals((byte)1, createChunkValueWrapper(new byte[16], true).getUserBits());
+    assertEquals((byte)0, createChunkValueWrapper(new byte[16], false).getUserBits());
+  }
+  
+  @Test
+  public void testGetLength() {
+    assertEquals(32, createChunkValueWrapper(new byte[32], true).getLength());
+    assertEquals(17, createChunkValueWrapper(new byte[17], false).getLength());
+  }
+  
+  @Test
+  public void testGetBytesAsString() {
+    assertEquals("byte[0, 0, 0, 0, 0, 0, 0, 0]", createChunkValueWrapper(new byte[8], false).getBytesAsString());
+  }
+  
+  @Test
+  public void testSendTo() throws IOException {
+    final ByteBuffer bb = ByteBuffer.allocateDirect(18);
+    bb.limit(8);
+    OffHeapValueWrapper vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8}, false);
+    vw.sendTo(bb, new Flushable() {
+      @Override
+      public void flush() throws IOException {
+        fail("should not have been called");
+      }
+
+      @Override
+      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
+        fail("should not have been called");
+      }
+    });
+    assertEquals(8, bb.position());
+    bb.flip();
+    assertEquals(1, bb.get());
+    assertEquals(2, bb.get());
+    assertEquals(3, bb.get());
+    assertEquals(4, bb.get());
+    assertEquals(5, bb.get());
+    assertEquals(6, bb.get());
+    assertEquals(7, bb.get());
+    assertEquals(8, bb.get());
+    
+    bb.clear();
+    bb.limit(8);
+    vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8,9}, false);
+    final int[] flushCalls = new int[1];
+    vw.sendTo(bb, new Flushable() {
+      @Override
+      public void flush() throws IOException {
+        if (flushCalls[0] != 0) {
+          fail("expected flush to only be called once");
+        }
+        flushCalls[0]++;
+        assertEquals(8, bb.position());
+        for (int i=0; i < 8; i++) {
+          assertEquals(i+1, bb.get(i));
+        }
+        bb.clear();
+        bb.limit(8);
+      }
+
+      @Override
+      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
+        fail("should not have been called");
+      }
+    });
+    assertEquals(1, bb.position());
+    bb.flip();
+    assertEquals(9, bb.get());
+    
+    bb.clear();
+    bb.limit(8);
+    flushCalls[0] = 0;
+    vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}, false);
+    vw.sendTo(bb, new Flushable() {
+      @Override
+      public void flush() throws IOException {
+        if (flushCalls[0] > 1) {
+          fail("expected flush to only be called twice");
+        }
+        assertEquals(8, bb.position());
+        for (int i=0; i < 8; i++) {
+          assertEquals((flushCalls[0]*8)+i+1, bb.get(i));
+        }
+        flushCalls[0]++;
+        bb.clear();
+        bb.limit(8);
+      }
+
+      @Override
+      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
+        fail("should not have been called");
+      }
+    });
+    assertEquals(1, bb.position());
+    bb.flip();
+    assertEquals(17, bb.get());
+    
+    // now test with a chunk that will not fit in bb.
+    bb.clear();
+    flushCalls[0] = 0;
+    bb.put((byte) 0);
+    vw = createChunkValueWrapper(new byte[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}, false);
+    vw.sendTo(bb, new Flushable() {
+      @Override
+      public void flush() throws IOException {
+        fail("should not have been called");
+      }
+
+      @Override
+      public void flush(ByteBuffer bb, ByteBuffer chunkbb) throws IOException {
+        flushCalls[0]++;
+        assertEquals(1, bb.position());
+        bb.flip();
+        assertEquals(0, bb.get());
+        assertEquals(19, chunkbb.remaining());
+        for (int i=1; i <= 19; i++) {
+          assertEquals(i, chunkbb.get());
+        }
+      }
+    });
+    assertEquals(1, flushCalls[0]);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OldValueImporterTestBase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OldValueImporterTestBase.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OldValueImporterTestBase.java
index 690b55a..84d7fc7 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OldValueImporterTestBase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OldValueImporterTestBase.java
@@ -26,12 +26,12 @@ import org.junit.Test;
 
 import com.gemstone.gemfire.internal.HeapDataOutputStream;
 import com.gemstone.gemfire.internal.cache.EntryEventImpl.OldValueImporter;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.DataAsAddress;
+import com.gemstone.gemfire.internal.offheap.OffHeapStoredObject;
+import com.gemstone.gemfire.internal.offheap.TinyStoredObject;
 import com.gemstone.gemfire.internal.offheap.NullOffHeapMemoryStats;
 import com.gemstone.gemfire.internal.offheap.NullOutOfOffHeapMemoryListener;
 import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
+import com.gemstone.gemfire.internal.offheap.SlabImpl;
 import com.gemstone.gemfire.internal.util.BlobHelper;
 
 public abstract class OldValueImporterTestBase {
@@ -110,10 +110,10 @@ public abstract class OldValueImporterTestBase {
     // off-heap DataAsAddress byte array
     {
       SimpleMemoryAllocatorImpl sma =
-          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
+          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
       try {
         byte[] baValue = new byte[] {1,2};
-        DataAsAddress baValueSO = (DataAsAddress) sma.allocateAndInitialize(baValue, false, false);
+        TinyStoredObject baValueSO = (TinyStoredObject) sma.allocateAndInitialize(baValue, false, false);
         OldValueImporter omsg = createImporter();
         omsg.importOldObject(baValueSO, false);
         hdos = new HeapDataOutputStream(bytes);
@@ -127,10 +127,10 @@ public abstract class OldValueImporterTestBase {
     // off-heap Chunk byte array
     {
       SimpleMemoryAllocatorImpl sma =
-          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
+          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
       try {
         byte[] baValue = new byte[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
-        ObjectChunk baValueSO = (ObjectChunk) sma.allocateAndInitialize(baValue, false, false);
+        OffHeapStoredObject baValueSO = (OffHeapStoredObject) sma.allocateAndInitialize(baValue, false, false);
         OldValueImporter omsg = createImporter();
         omsg.importOldObject(baValueSO, false);
         hdos = new HeapDataOutputStream(bytes);
@@ -144,11 +144,11 @@ public abstract class OldValueImporterTestBase {
     // off-heap DataAsAddress String
     {
       SimpleMemoryAllocatorImpl sma =
-          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
+          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
       try {
         String baValue = "12";
         byte[] baValueBlob = BlobHelper.serializeToBlob(baValue);
-        DataAsAddress baValueSO = (DataAsAddress) sma.allocateAndInitialize(baValueBlob, true, false);
+        TinyStoredObject baValueSO = (TinyStoredObject) sma.allocateAndInitialize(baValueBlob, true, false);
         OldValueImporter omsg = createImporter();
         omsg.importOldObject(baValueSO, true);
         hdos = new HeapDataOutputStream(bytes);
@@ -162,11 +162,11 @@ public abstract class OldValueImporterTestBase {
     // off-heap Chunk String
     {
       SimpleMemoryAllocatorImpl sma =
-          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
+          SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
       try {
         String baValue = "12345678";
         byte[] baValueBlob = BlobHelper.serializeToBlob(baValue);
-        ObjectChunk baValueSO = (ObjectChunk) sma.allocateAndInitialize(baValueBlob, true, false);
+        OffHeapStoredObject baValueSO = (OffHeapStoredObject) sma.allocateAndInitialize(baValueBlob, true, false);
         OldValueImporter omsg = createImporter();
         omsg.importOldObject(baValueSO, true);
         hdos = new HeapDataOutputStream(bytes);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/MessageJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/MessageJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/MessageJUnitTest.java
index b7bd47a..8caf3f6 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/MessageJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/MessageJUnitTest.java
@@ -28,7 +28,6 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.offheap.HeapByteBufferMemoryChunkJUnitTest;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunkJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunkJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunkJUnitTest.java
deleted file mode 100644
index e9972a5..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunkJUnitTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class ByteArrayMemoryChunkJUnitTest extends MemoryChunkJUnitTestBase {
-  @Override
-  protected MemoryChunk createChunk(int size) {
-    return new ByteArrayMemoryChunk(size);
-  }
-
-}


[11/45] incubator-geode git commit: GEODE-1038: CI failure: DistributionAdvisorDUnitTest.testGenericAdvice

Posted by kl...@apache.org.
GEODE-1038: CI failure: DistributionAdvisorDUnitTest.testGenericAdvice


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a42a2f31
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a42a2f31
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a42a2f31

Branch: refs/heads/feature/GEODE-1050
Commit: a42a2f311be2fec845cb769b216261630f931f09
Parents: 3087c86
Author: Jianxia Chen <jc...@pivotal.io>
Authored: Tue Mar 8 16:17:54 2016 -0800
Committer: Jianxia Chen <jc...@pivotal.io>
Committed: Tue Mar 8 16:17:54 2016 -0800

----------------------------------------------------------------------
 .../distributed/internal/DistributionAdvisorDUnitTest.java        | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a42a2f31/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisorDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisorDUnitTest.java
index 8e238ac..d11d22b 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisorDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionAdvisorDUnitTest.java
@@ -27,6 +27,7 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
 import com.gemstone.gemfire.test.dunit.DistributedTestCase;
 import com.gemstone.gemfire.test.dunit.Invoke;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
+import com.gemstone.gemfire.test.dunit.VM;
 
 /**
  *
@@ -66,7 +67,7 @@ public class DistributionAdvisorDUnitTest extends DistributedTestCase {
         }
       });
     Set ids = getSystem().getDistributionManager().getOtherNormalDistributionManagerIds();
-    assertEquals(4, ids.size());
+    assertEquals(VM.getVMCount(), ids.size());
     List profileList = new ArrayList();
     
     int i = 0;


[40/45] incubator-geode git commit: GEODE-986 MultiuserAPIDUnitTest.testMultiUserUnsupportedAPIs failed with SocketException

Posted by kl...@apache.org.
GEODE-986 MultiuserAPIDUnitTest.testMultiUserUnsupportedAPIs failed with SocketException

Reactivated the TcpServer backward-compatibility test.  This test failed if
TcpClient thought that the locator was running 5.7 (I hand-sabotaged the
code to make it think the locator was 5.7) but it passes with 9a .0 fallback
default.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/aef84eb0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/aef84eb0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/aef84eb0

Branch: refs/heads/feature/GEODE-1050
Commit: aef84eb091791312efba7d42bcde9b7f6436223c
Parents: d25e445
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Mar 14 09:31:08 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Mon Mar 14 09:34:52 2016 -0700

----------------------------------------------------------------------
 .../internal/tcpserver/TcpClient.java           | 16 +++-
 .../internal/tcpserver/TcpServer.java           |  0
 .../TcpServerBackwardCompatDUnitTest.java       | 97 +++++++-------------
 .../gemfire/test/dunit/DistributedTestCase.java |  2 +
 4 files changed, 44 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aef84eb0/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpClient.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpClient.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpClient.java
old mode 100644
new mode 100755
index dfcb78c..803f284
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpClient.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpClient.java
@@ -105,8 +105,6 @@ public class TcpClient {
       ipAddr = new InetSocketAddress(addr, port); // fix for bug 30810
     }
     
-    logger.debug("TcpClient sending {} to {}", request, ipAddr);
-
     long giveupTime = System.currentTimeMillis() + timeout;
     
     // Get the GemFire version of the TcpServer first, before sending any other request.
@@ -128,6 +126,8 @@ public class TcpClient {
       return null;
     }
     
+    logger.debug("TcpClient sending {} to {}", request, ipAddr);
+
     Socket sock=SocketCreator.getDefaultInstance().connect(ipAddr.getAddress(), ipAddr.getPort(), (int)newTimeout, null, false);
     sock.setSoTimeout((int)newTimeout);
     DataOutputStream out = null;
@@ -214,7 +214,7 @@ public class TcpClient {
       out.flush();
 
       DataInputStream in = new DataInputStream(sock.getInputStream());
-      in = new VersionedDataInputStream(in, Version.GFE_57); 
+      in = new VersionedDataInputStream(in, Version.GFE_90); 
       try {
         VersionResponse response = DataSerializer.readObject(in);
         if (response != null) {
@@ -239,13 +239,19 @@ public class TcpClient {
       logger.debug("Locator " + ipAddr + " did not respond to a request for its version.  I will assume it is using v5.7 for safety.");
     }
     synchronized(serverVersions) {
-      serverVersions.put(ipAddr, Version.GFE_57.ordinal());
+      serverVersions.put(ipAddr, Version.GFE_90.ordinal());
     }
-    return Short.valueOf(Version.GFE_57.ordinal());
+    return Short.valueOf(Version.GFE_90.ordinal());
   }
 
   private TcpClient() {
     //static class
   }
+  
+  public static void clearStaticData() {
+    synchronized(serverVersions) {
+      serverVersions.clear();
+    }
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aef84eb0/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServer.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServer.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServer.java
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aef84eb0/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
index a66367b..3685ac4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
@@ -32,8 +32,13 @@ import com.gemstone.gemfire.cache30.CacheSerializableRunnable;
 import com.gemstone.gemfire.distributed.Locator;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.distributed.internal.membership.gms.locator.FindCoordinatorRequest;
+import com.gemstone.gemfire.distributed.internal.membership.gms.locator.FindCoordinatorResponse;
 import com.gemstone.gemfire.distributed.internal.tcpserver.TcpServer;
 import com.gemstone.gemfire.internal.AvailablePort;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.SocketCreator;
 import com.gemstone.gemfire.internal.Version;
 import com.gemstone.gemfire.test.dunit.DistributedTestCase;
 import com.gemstone.gemfire.test.dunit.Host;
@@ -51,7 +56,7 @@ import com.gemstone.gemfire.test.junit.categories.DistributedTest;
  *
  */
 @Category(DistributedTest.class)
-@Ignore("Test was disabled by renaming to DisabledTest")
+//@Ignore("Test was disabled by renaming to DisabledTest")
 public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
 
   /**
@@ -98,18 +103,15 @@ public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
     final VM locatorRestart0 = host.getVM(2);
     final VM member = host.getVM(3);
 
+    int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);
+
     // Create properties for locator0
-    final int port0 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    final File logFile0 = new File(getUniqueName() + "-locator" + port0 + ".log");
+    final int port0 = ports[0];
+    final File logFile0 = null;//new File("");
     
     // Create properties for locator1
-    int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    while (port == port0) {
-      port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    }
-    final int port1 = port;
-
-    final File logFile1 = new File(getUniqueName() + "-locator" + port1 + ".log");
+    final int port1 = ports[1];
+    final File logFile1 = null;//new File("");
     
     final String locators = host.getHostName() + "[" + port0 + "]," +
                             host.getHostName() + "[" + port1 + "]";
@@ -118,6 +120,7 @@ public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
     props.setProperty(DistributionConfig.LOCATORS_NAME, locators);
     props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
     props.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "false");
+    props.setProperty(DistributionConfig.LOG_LEVEL_NAME, "finest");
     
     // Start locator0 with props.
     //props.setProperty(DistributionConfig.START_LOCATOR_NAME, host.getHostName() + "["+port0+"]");
@@ -157,45 +160,20 @@ public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
           TcpServer.OLDTESTVERSION -= 100;
           TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.TESTVERSION, Version.CURRENT_ORDINAL);
           TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.OLDTESTVERSION, Version.GFE_57.ordinal());
-          assertEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
-          assertEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
+//          assertEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
+//          assertEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
 
           Locator.startLocatorAndDS(port1, logFile1, props);
 
           // Start a gossip client to connect to first locator "locator0".
-          fail("this test must be fixed to work with the jgroups replacement");
-          // TODO
-//          final GossipClient client = new GossipClient(new IpAddress(InetAddress.getLocalHost(), port1),  500);
-//          client.register("mygroup1", new IpAddress(InetAddress.getLocalHost(), port1), 5000, false);
-
-          WaitCriterion ev = new WaitCriterion() {
-            public boolean done() {
-              try {
-                // TODO
-//                Vector members = client.getMembers("mygroup1", 
-//                    new IpAddress(InetAddress.getLocalHost(), port0), true, 5000);
-//                return members.size() == 2;
-              }
-              catch (Exception e) {
-                e.printStackTrace();
-                fail("unexpected exception");
-              }
-              return false; // NOTREACHED
-            }
-            public String description() {
-              return null;
-            }
-          };
+          FindCoordinatorRequest req = new FindCoordinatorRequest(new InternalDistributedMember(
+              SocketCreator.getLocalHost(), 1234));
+          FindCoordinatorResponse response = null;
           
-          Wait.waitForCriterion(ev, 1000, 200, true);
-          fail("this test must be fixed to work with the jgroups replacement");
-          // TODO
-//          Vector members = client.getMembers("mygroup1", new IpAddress(InetAddress.getLocalHost(), port0), true, 5000);
-//          Assert.assertEquals(2, members.size());
-//          Assert.assertTrue(members.contains(new IpAddress(InetAddress.getLocalHost(), port0)));
-//          Assert.assertTrue(members.contains(new IpAddress(InetAddress.getLocalHost(), port1)));
+          response = (FindCoordinatorResponse)TcpClient.requestToServer(SocketCreator.getLocalHost(), port1, req, 5000);
+          assertNotNull(response);
 
-        } catch (IOException e) {
+        } catch (Exception e) {
           com.gemstone.gemfire.test.dunit.Assert.fail("Locator1 start failed with Gossip Version: " + TcpServer.GOSSIPVERSION + "!", e);
         }
       }
@@ -222,33 +200,20 @@ public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
           TcpServer.OLDTESTVERSION -= 100;
           TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.TESTVERSION, Version.CURRENT_ORDINAL);
           TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.OLDTESTVERSION, Version.GFE_57.ordinal());
-          assertEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
-          assertEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
+//          assertEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
+//          assertEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
 
           Locator.startLocatorAndDS(port0, logFile0, props);
 
-          // A new gossip client with new GOSSIPVERSION must be able
-          // to connect with new locator on port1, remote locator.
-          // Reuse locator0 VM.
-          fail("this test must be fixed to work with the jgroups replacement");
-          // TODO
-//          final GossipClient client2 = new GossipClient(new IpAddress(InetAddress.getLocalHost(), port1),  500);
-//          Vector<IpAddress> members = client2.getMembers("mygroup1", new IpAddress(InetAddress.getLocalHost(), port1), true, 5000);
-//          Assert.assertEquals(2, members.size());
-          // As they are coming from other locator, their pid is of other locator process.
-//          getLogWriter().info(members.get(0) + " " + members.get(1));
-
-          // TODO
-//          for (IpAddress ipAddr : members) {
-//            int port = ipAddr.getPort();
-//            String hostname = ipAddr.getIpAddress().getHostAddress();
-//            int pid = ipAddr.getProcessId();
-//            Assert.assertTrue(" " + ipAddr, port == port0 || port == port1);
-//            Assert.assertTrue(" " + ipAddr, hostname.equals(InetAddress.getLocalHost().getHostAddress()));
-//            Assert.assertTrue(" " + ipAddr, pid == locator1.getPid());
-//          }
+          // Start a gossip client to connect to first locator "locator0".
+          FindCoordinatorRequest req = new FindCoordinatorRequest(new InternalDistributedMember(
+              SocketCreator.getLocalHost(), 1234));
+          FindCoordinatorResponse response = null;
+          
+          response = (FindCoordinatorResponse)TcpClient.requestToServer(SocketCreator.getLocalHost(), port0, req, 5000);
+          assertNotNull(response);
 
-        } catch (IOException e) {
+        } catch (Exception e) {
           com.gemstone.gemfire.test.dunit.Assert.fail("Locator0 start failed with Gossip Version: " + TcpServer.GOSSIPVERSION + "!", e);
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aef84eb0/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
index c7227a2..4f656fd 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
@@ -42,6 +42,7 @@ import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.DistributionMessageObserver;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.CreationStackGenerator;
+import com.gemstone.gemfire.distributed.internal.tcpserver.TcpClient;
 import com.gemstone.gemfire.internal.SocketCreator;
 import com.gemstone.gemfire.internal.admin.ClientStatsManager;
 import com.gemstone.gemfire.internal.cache.DiskStoreObserver;
@@ -487,6 +488,7 @@ public abstract class DistributedTestCase extends TestCase implements java.io.Se
     RegionTestCase.preSnapshotRegion = null;
     SocketCreator.resetHostNameCache();
     SocketCreator.resolve_dns = true;
+    TcpClient.clearStaticData();
 
     // clear system properties -- keep alphabetized
     System.clearProperty("gemfire.log-level");


[31/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/properties.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/properties.html b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/properties.html
new file mode 100755
index 0000000..1cd1b72
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/properties.html
@@ -0,0 +1,3937 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<html>
+<head>
+<title>GemFire System Properties</title>
+</head>
+<body>
+<h1>Introduction</h1>
+Please edit this file by hand in order to facilitate merges!
+<p>
+Please keep entries in this file in alphabetical order in order to
+facilitate merging!
+<h1>Java Methods Swept</h1>
+These are the methods that I have found that reference the system properties
+table.  If you can think of others I have missed, add them (alphabetically)
+to this list, perform the sweep using Eclipse and add your results.
+<p>
+<ul>
+<li><code>Boolean#getBoolean(String)</code></li>
+<li><code>Integer#getInteger(String)</code></li>
+<li><code>Integer#getInteger(String, Integer)</code></li>
+<li><code>Integer#getInteger(String, int)</code></li>
+<li><code>Long#getLong(String)</code></li>
+<li><code>Long#getLong(String, Long)</code></li>
+<li><code>Long#getLong(String, long)</code></li>
+<li><code>System#getProperties</code></li>
+<li><code>System#getProperty(String)</code></li>
+<li><code>System#getProperty(String, String)</code></li>
+</ul>
+
+<h1>Miscellaneous</h1>
+
+DistributionConfigImpl constructor prepends <code>gemfire.</code> to each
+valid attribute name, then looks for a System property with that value.  If
+such a property name exists, it overrides any read from a property file or
+any properties passed into the caller.
+<p>
+<code>com.gemstone.gemfire.internal.cache.Oplog</code> looks for properties
+of the form:
+<ul>
+
+<li>fullRegionName + <code>_UNIT_BUFF_SIZE</code></li> -- <em>Integer</em>;
+"Asif: The minimum unit size of the Pool created. The ByteBuffer pools
+present at different indexes will be multiple of this size. Default unit
+buffer size is 1024"
+
+<li>fullRegionName + <code>_MAX_POOL_SIZE</code></li> -- <em>Integer</em>;
+"The initial pool size . Default pool size is zero"
+
+<li>fullRegionName + <code>_WAIT_TIME</code></li> -- <em>Integer</em>;
+"Asif: MAX time in milliseconds for which a thread will wait for a buffer to
+get freed up. If not available in that duration a buffer will be created on
+the fly. The timeout has no meaning if the max pool size is -1( no upper
+bound)"
+</ul>
+<p>
+
+<h1>Properties, in Alphabetical Order</h1>
+
+
+<dl>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>AdminDistributedSystemImpl.TIMEOUT_MS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 60000)
+<p>
+See <code>com.gemstone.gemfire.admin.internal.AdminDistributedSystemImpl#TIMEOUT_MS</code>.
+<p>
+TBA
+</dd>
+
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>AvailablePort.fastRandom</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.AvailablePort</code>.
+<p>
+If true, an instance of <code>java.util.Random</code> is used instead of
+<code>java.security.SecureRandom</code> to randomly select a port.
+<p>
+This property is available in case there is a performance issue involved
+with random port selection.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>AvailablePort.timeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 2000)
+<p>
+See <code>com.gemstone.gemfire.internal.AvailablePort#isPortAvailable</code>.
+<p>
+When establishing a JGroups locator, this sets the <code>SO_TIMEOUT</code>
+characteristic on the UDP port that we attempt to test.
+<p>
+Units are in milliseconds.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Bridge.VERBOSE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+See <code>com.gemstone.gemfire.internal.cache.BridgeServerImpl.#VERBOSE</code>.
+<p>
+Enable verbose logging in the BridgeServer
+<p>
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.HANDSHAKE_POOL_SIZE</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>Integer</em> (default is 4)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#HANDSHAKE_POOL_SIZE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.MAXIMUM_CHUNK_SIZE</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>Integer</em> (default is 100)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#maximumChunkSize</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.MAX_INCOMING_DATA</strong></dt>
+<dd>
+<em>Public:</em> yes?
+<p>
+<em>Integer</em> (default is -1)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#MAX_INCOMING_DATA</code>.
+<p>
+<pre>
+   Maximum number of concurrent incoming client message bytes that a bridge server will allow.
+   Once a server is working on this number additional incoming client messages
+   will wait until one of them completes or fails.
+   The bytes are computed based in the size sent in the incoming msg header.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.MAX_INCOMING_MSGS</strong></dt>
+<dd>
+<em>Public:</em> yes?
+<p>
+<em>Integer</em> (default is -1)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#MAX_INCOMING_MSGS</code>.
+<p>
+<pre>
+   Maximum number of concurrent incoming client messages that a bridge server will allow.
+   Once a server is working on this number additional incoming client messages
+   will wait until one of them completes or fails.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.SELECTOR</strong></dt>
+<dd>
+<em>Public:</em> jpmc-cbb
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#DEPRECATED_SELECTOR</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.SELECTOR_POOL_SIZE</strong></dt>
+<dd>
+<em>Public:</em> jpmc-cbb
+<p>
+<em>Integer</em> (default is 16)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#DEPRECATED_SELECTOR_POOL_SIZE</code>.
+<p>
+<pre>
+   This system property is only used if max-threads == 0.
+   This is for 5.0.2 backwards compatibility.
+   @deprecated since 5.1 use cache-server max-threads instead
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.SOCKET_BUFFER_SIZE</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>Integer</em> (default is 32768)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientNotifier#socketBufferSize</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientUpdater#CacheClietnUpdater(String, EndpointImpl, List, LogWriter, boolean, DistributedSystem)</code>.
+<p>
+<pre>
+   The size of the server-to-client communication socket buffers. This can be
+   modified using the BridgeServer.SOCKET_BUFFER_SIZE system property.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.acceptTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 2900)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#acceptTimeout</code>.
+<p>
+Units are in milliseconds.
+<p>
+<pre>
+  Test value for accept timeout
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.backlog</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl</code>
+constructor.
+<p>
+This is the TCP accept backlog for the acceptor thread's listening socket.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>BridgeServer.handShakeTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 59000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#handShakeTimeout</code>.
+<p>
+<pre>
+  Test value for handshake timeout
+</pre>
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>CacheServerLauncher.PRINT_LAUNCH_COMMAND</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.CacheServerLauncher#PRINT_LAUNCH_COMMAND</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DataSerializer.DEBUG</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.DataSerializer#DEBUG</code>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DataSerializer.DUMP_SERIALIZED</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.DataSerializer#DUMP_SERIALIZED</code>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributedLockService.VERBOSE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockLogWriter#VERBOSE</code>.
+<p>
+Enables logging for this class.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.DEBUG_JAVAGROUPS</strong></dt>
+<dd>
+<em>Public:</em> yes (general debugging)
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager</code>.
+<p>
+See <code>com.gemstone.org.jgroups.stack.Protocol#trace/<code>.
+<p>
+Enables JGroups-package debug logging.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.DISCONNECT_WAIT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 10 * 1000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.InternalDistributedSystem#MAX_DISCONNECT_WAIT</code>.
+<p>
+<pre>
+   This is how much time, in milliseconds to allow a disconnect listener
+   to run before we interrupt it.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.INCOMING_QUEUE_LIMIT</strong></dt>
+<dd>
+<em>Public:</em> jpmc-cbb
+<p>
+<em>Integer</em> (default is 80000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#INCOMING_QUEUE_LIMIT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.INCOMING_QUEUE_THROTTLE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is INCOMING_QUEUE_LIMIT * .75)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#INCOMING_QUEUE_THROTTLE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.JAVAGROUPS_CONFIG</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+If multicast is enabled, the default is com/gemstone/gemfire/distributed/internal/javagroups-mcast.txt.
+<p>
+If multicast is not enabled, the default is com/gemstone/gemfire/distributed/internal/javagroups-config.txt.
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+<pre>
+   The system property that specifies the name of a file from which to read
+   Jgroups configuration information
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.MAX_FE_THREADS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer:</em> (default is 16)
+<p>
+Maximum function execution threads.
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_FE_THREADS</code>.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.MAX_PR_THREADS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_PR_THREADS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.MAX_SERIAL_QUEUE_THREAD</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_SERIAL_QUEUE_THREAD</code>.
+<p>
+<pre>
+  Max number of serial Queue executors, in case of multi-serial-queue executor
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.MAX_THREADS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 100)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_THREADS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.MAX_WAITING_THREADS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is Integer.MAX_VALUE)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_WAITING_THREADS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.OptimizedUpdateByteLimit</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 2000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.SearchLoadAndWriteProcessor#SMALL_BLOB_SIZE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.PUSHER_QUEUE_SIZE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 4096)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#PUSHER_QUEUE_SIZE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.PUSHER_THREADS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 50)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#PUSHER_THREADS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.SERIAL_QUEUE_BYTE_LIMIT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 40 * 1024 * 1024)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SERIAL_QUEUE_BYTE_LIMIT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.SERIAL_QUEUE_SIZE_LIMIT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SERIAL_QUEUE_SIZE_LIMIT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.SERIAL_QUEUE_SIZE_THROTTLE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is SERIAL_QUEUE_SIZE_LIMIT * THROTTLE_PERCENT)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SERIAL_QUEUE_THROTTLE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.SERIAL_QUEUE_THROTTLE_PERCENT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 75)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#THROTTLE_PERCENT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.STARTUP_TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 15000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#STARTUP_TIMEOUT</code>.
+<p>
+Units are in milliseconds.  This is how long a Startup message waits before
+it declares the peer to be nonresponsive.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is -1)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#TIMEOUT</code>.
+<p>
+<pre>
+  The number of milliseconds to wait for distribution-related
+  things to happen */
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.TOTAL_SERIAL_QUEUE_BYTE_LIMIT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 80 * 1024 * 1024)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#TOTAL_SERIAL_QUEUE_BYTE_LIMIT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.TOTAL_SERIAL_QUEUE_THROTTLE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is SERIAL_QUEUE_BYTE_LIMIT * THROTTLE_PERCENT)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#TOTAL_SERIAL_QUEUE_THROTTLE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.VERBOSE</strong></dt>
+<dd>
+<em>Public:</em> yes (general debugging)
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#VERBOSE</code>.
+<p>
+Enables certain additional (fine-level?) logging.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.VERBOSE_VIEWS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#VERBOSE_VIEWS</code>.
+<p>
+Enables additional info-level logging
+(see <code>#addShunnedMember</code> and <code>#addSurpriseMember</code>).
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.enqueueOrderedMessages</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#INLINE_PROCESS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.requireAllStartupResponses</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#sendStartupMessage</code>.
+<p>
+Fail distributed system join unless a startup response is received from
+<em>all</em> peers.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.singleSerialExecutor</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MULTI_SERIAL_EXECUTORS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DistributionManager.syncEvents</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SYNC_EVENTS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DynamicRegionFactory.disablePersistence</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.cache.DynamicRegionFactory#DISABLE_PERSIST_BACKUP</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DynamicRegionFactory.disableRegisterInterest</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.cache.DynamicRegionFactory#DISABLE_REGISTER_INTEREST</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>DynamicRegionFactory.msDelay</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 250)
+<p>
+See <code>com.gemstone.gemfire.cache.DynamicRegionFactory#regionCreateSleepMillis</code>.
+<p>
+<pre>
+   This controls the delay introduced to try and avoid any race conditions
+   between propagation of newly created Dynamic Regions
+   and the Entries put into them.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Gateway.EVENT_TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 5 * 60 * 1000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.EventWrapper#EVENT_TIMEOUT</code>.
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Gateway.MAXIMUM_SHUTDOWN_PEEKS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.#MAXIMUM_SHUTDOWN_PEEKS</code>.
+<p>
+<pre>
+  The number of times to peek on shutdown before giving up and shutting down.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Gateway.QUEUE_SIZE_THRESHOLD</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 5000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.#QUEUE_SIZE_THRESHOLD</code>.
+<p>
+<pre>
+  The queue size threshold used to warn the user. If the queue reaches this
+  size, log a warning.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Gateway.TOKEN_TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 15000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.#TOKEN_TIMEOUT</code>.
+<p>
+<pre>
+  Timeout tokens in the unprocessedEvents map after this many milliseconds.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>GetInitialImage.chunkSize</strong></dt>
+<dd>
+<em>Public:</em> ml-rio
+<p>
+<em>Integer</em> (default is 500 * 1024)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.InitialImageOperation#CHUNK_SIZE_IN_BYTES</code>.
+<p>
+<pre>
+   maximum number of bytes to put in a single message
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>GrantorRequestProcessor.ELDER_CHANGE_SLEEP</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 100)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.GrantorRequestProcessor#ELDER_CHANGE_SLEEP</code>.
+<p>
+<pre>
+   The number of milliseconds to sleep for elder change if current elder
+   is departing (and already sent shutdown msg) but is still in the View.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>JGroups.SHUN_SUNSET</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 90)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#isShunned</code>.
+<p>
+This is the length of time during which incoming messages from a departed peer
+are regarded as out-of-order messages and are hence ignored (shunned).
+<p>
+Units are in seconds.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Locator.forceAdminDMType</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.InternalLocator#FORCE_ADMIN_DM_TYPE</code>.
+<p>
+No longer exists as of 7.0.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Locator.forceLocatorDMType</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+Used internally by the locator. It sets it to true to tell other code
+that the member type should be LOCATOR.
+As of 7.0.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>Locator.inhibitDMBanner</strong></dt>
+<dd>
+<em>Public:</em> ml-rio
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.InternalLocator#INHIBIT_DM_BANNER</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>MAX_WAIT_FOR_SPACE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.ComplexDiskRegion#MAX_WAIT_FOR_SPACE</code>.
+<p>
+Units are in seconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>StatArchiveReader.dump</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.StatArchiveReader(File[], ValueFilter[], boolean)</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.StatArchiveReader#dump(PrintWriter)</code>.
+<p>
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>StatArchiveReader.dumpall</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.StatArchiveReader(File[], ValueFilter[], boolean)</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>StateFlushOperation.DEBUG</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+<em>Boolean</em>
+<p>
+See <code>com.gemstone.gemfire.internal.cache.StateFlushOperation#DEBUG</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>ack-threshold-exception</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.ReplyProcessor21#THROW_EXCEPTION_ON_TIMEOUT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>bind.address</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em> (See <code>InetAddress.getByName</code>)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.FD_SOCK#setProperties(Properties)</code>.
+<p>
+See <code>com.gemstone.org.jgroups.protocols.MPING#setProperties(Properties)</code>.
+<p>
+See <code>com.gemstone.org.jgroups.protocols.TP#setProperties(Properties)</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>java.util.concurrent.NanoTimerProvider</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+Default is <code>java.util.concurrent.NanoTimerProvider</code>.
+<p>
+See java.util.concurrent.Utils#providerProp</code>.
+<p>
+This is the name of a class that implements the
+<code>java.util.concurrent.helpers.NanoTimer</code>
+interface.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>com.gemstone.gemfire.internal.OSProcess.trace</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.internal.OSProcess#bgexec(String[], File, File, boolean)</code>.
+<p>
+If this property exists and has non-zero length, additional information about
+the executed command is printed to <code>System.out</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>com.gemstone.gemfire.internal.cache.PartitionedRegion-logging</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#initPrInternals</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore-logging (constructor)</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore.PartitionedRegionDataStore(PartitionedRegion)</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>disable-intelligent-msg</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionAdvisor#disabled</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>enable_canonicalization</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.org.jgroups.Message#DISABLE_CANONICALIZATION</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>force.properties</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.org.jgroups.conf.ConfiguratorFactory class init</code>.
+<p>
+A JGroups configuration string?
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>GemFire.ALWAYS_REPLICATE_UPDATES</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If true then non-replicate regions will turn a remote update they receive
+on an entry they do not have into a local create.
+By default these updates would have been ignored.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.ALLOW_PERSISTENT_TRANSACTIONS</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If true then transactions on persistent regions are allowed.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.artificialGatewayDelay</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> -1
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayEventRemoteDispatcher#ARTIFICIAL_DELAY</code>
+<p>
+Introduce artificial delay (in ms) before batch sending to simulate a real WAN link
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.ASCII_STRINGS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.MsgStreamer#ASCII_STRINGS</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.HeapDataOutputStream#ASCII_STRINGS</code>.
+<p>
+Causes GemFire's implementation of writeUTF to only work for Strings that use the ASCII
+character set. So Strings that use the international characters will be serialized incorrectly.
+If you know your Strings only use ASCII setting this to true can improve your performance if
+you are using writeUTF frequently. Most Strings are serialized using DataSerializer.writeString
+which does not use writeUTF.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.AutoSerializer.SAFE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If set to true forces the ReflectionBasedAutoSerializer to not use the
+sun.misc.Unsafe code. Using Unsafe optimizes performance but reduces
+portablity.
+By default ReflectionBasedAutoSerializer will attempt to use Unsafe but
+silently not use it if it is not available.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.AutoSerializer.UNSAFE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If set to true then the ReflectionBasedAutoSerializer will throw
+an exception if it is not able to use the sun.misc.Unsafe code.
+Using Unsafe optimizes performance but reduces portablity.
+By default ReflectionBasedAutoSerializer will attempt to use Unsafe but
+silently not use it if it is not available.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.BUCKET_RECOVERY_DELAY</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 2)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PRHAFailureAndRecoveryPRovider#BUCKET_RECOVERY_DELAY</code>.
+<p>
+Mean amount of time, in seconds, to delay before starting to
+recover a bucket.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.BUCKET_RECOVERY_JITTER</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 200)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PRHAFailureAndRecoveryPRovider#BUCKET_RECOVERY_JITTER</code>.
+<p>
+<pre>
+   Maximum additional amount of time, in milliseconds, to skew bucket creation, 
+   to stagger recovery and creation in a starting system. 
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.BucketAdvisor.getPrimaryTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 1000 * 60)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.BucketAdvisor#GET_PRIMARY_TIMEOUT</code>.
+<p>
+<pre>
+   Specifies the timeout to wait for a primary when calling {@link 
+   #getPrimary()} 
+</pre>
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.ASYNC_EVENT_LISTENERS</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCache#ASYNC_EVENT_LISTENERS</code>.
+<p>
+If true then cache event listeners will be invoked by a background thread.
+By default they are invoked by the same thread that is doing the cache operation.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.EVENT_QUEUE_LIMIT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 4096)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCache#EVENT_QUEUE_LIMIT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.defaultLockLease</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 120)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCache#DEFAULT_LOCK_LEASE</code>.
+<p>
+<pre>
+  The default duration (in seconds) of a lease on a distributed lock
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.defaultLockTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 60)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCache#DEFAULT_LOCK_TIMEOUT</code>.
+<p>
+<pre>
+  The default number of seconds to wait for a distributed lock
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.defaultSearchTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 300)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCache#DEFAULT_SEARCH_TIMEOUT</code>.
+<p>
+<pre>
+  The default amount of time to wait for a <code>netSearch</code> to
+  complete
+</pre>
+<p>
+Units are in seconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.startSerialNumber</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is Integer.MAX_VALUE - 10)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCache#START_SERIAL_NUMBER</code>.
+<p>
+<pre>
+  Specifies the starting serial number for the {@link #serialNumberSequencer
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.CacheServerLauncher.assignBucketsToPartitions</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.CacheServerLauncher.ASSIGN_BUCKETS</code>.
+<p>
+If a cache server is started using that CacheServerLauncher and this property is set to true, the cache
+server will create all of the buckets when it is started.
+<p>
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.CacheDistributionAdvisor.rolloverThreshold</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor#ROLLOVER_THRESHOLD</code>.
+<p>
+<pre>
+  Used to compare profile versioning numbers against 
+  {@link Integer#MAX_VALUE} and {@link Integer#MIN_VALUE} to determine
+  if a rollover has occurred.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Capacity</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 230000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.ha.HARegionQueueAttributes#BLOCKING_QUEUE_CAPACITY</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DEBUG_EXPIRATION</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.ExpirationScheduler#DEBUG</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DEFAULT_MAX_OPLOG_SIZE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 1024 * 1024 * 1024)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.DiskWriteAttributesImpl#DEFAULT_MAX_OPLOG_SIZE</code>.
+<p>
+<pre>
+  default max in bytes
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.automateFreeResources</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See com.gemstone.gemfire.distributed.internal.locks.DLockService.DLockService(String, DistributedSystem, boolean, boolean, boolean).
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.LockGrantorId.rolloverMargin</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 10000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.LockGrantorId#ROLLOVER_MARGIN</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.debug.disallowLockRequestLoop</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_LOCK_REQUEST_LOOP</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.debug.disallowLockRequestLoopCount</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_LOCK_REQUEST_LOOP_COUNT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.debug.disallowNotHolder</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_DISALLOW_NOT_HOLDER</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.debug.enforceSafeExit</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_ENFORCE_SAFE_EXIT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.debug.nonGrantorDestroyLoop</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_NONGRANTOR_DESTROY_LOOP</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.debug.nonGrantorDestroyLoopCount</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DLockService.notGrantorSleep</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 2000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#NOT_GRANTOR_SLEEP</code>.
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DistributedLockService.startSerialNumber</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is Integer.MAX_VALUE - 10)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#START_SERIAL_NUMBER</code>.
+<p>
+<pre>
+  Specifies the starting serial number for the {@link #serialNumberSequencer}
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DO_EXPENSIVE_VALIDATIONS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.LocalRegion#DO_EXPENSIVE_VALIDATIONS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DistributionAdvisor.startVersionNumber</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is Integer.MAX_VALUE - 10)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionAdvisor#START_VERSION_NUMBER</code>.
+<p>
+<pre>
+   Specifies the starting version number for the {@link 
+   #profileVersionSequencer}.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.EXPIRY_THREADS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 0)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.ExpiryTask class init</code>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.EXPIRY_UNITS_MS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.LocalRegion#EXPIRY_UNITS_MS</code>.
+<p>
+<pre>
+   Used by unit tests to set expiry to milliseconds instead of the default
+   seconds. Used in ExpiryTask.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.FD_TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 0)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+If <code>gemfire.useFD</code> is true or this property's value is non-zero,
+the <code>FD</code> protocol is inserted on the JGroups stack.
+<p>
+Furthermore, the <code>MEMBER_TIMEOUT</code> string is substituted with this
+value in the JGroups default config, which in turn sets the
+<code>timeout</code> property in the <code>VERIFY_SUSPECT</code> protocol,
+which otherwise defaults to 2000 milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.IDLE_THREAD_TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 15000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.PooledExecutorWithDMStats#PooledExecutorWithDMStats(BlockingQueue, int, PoolStatHelper, ThreadFactory)</code>.
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.isDedicatedServer</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.CacheServerLauncher.#isDedicatedCacheServer</code>
+<p>
+Tell admin API whether the member is a dedicated cache server
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.memoryEventTolerance</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default for Sun/Oracle is 1 and for others 5)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.control.InternalResourceManager.#MEMORY_EVENT_TOLERANCE</code>
+<p>
+Number of memory events that ResourceManager will tolerate before throwing a LME. Useful with JVM 1.7
+</dd>
+
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.MAX_PENDING_CANCELS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 10000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.ExpirationScheduler#MAX_PENDING_CANCELS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.MIN_BUCKET_SIZE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.partitioned.SizedBasedLoadProbe.#MIN_BUCKET_SIZE</code>
+<p>
+Allows setting the minimum bucket size to be used during rebalance
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.DISABLE_MOVE_PRIMARIES_ON_STARTUP</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If true then pr primary buckets will not be balanced when a new member is started.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.MessageTimeToLive</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 180)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.ha.HARegionQueue#REGION_ENTRY_EXPIRY_TIME</code>.
+<p>
+<pre>
+   Constant used to set region entry expiry time using system property.
+</pre>
+<p>
+Units are in seconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.ON_DISCONNECT_CLEAR_PDXTYPEIDS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.cache.client.internal.PoolImpl</code>
+<p>
+Clear pdxType ids when client disconnects from servers
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PRDebug</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.admin.GemFireMonitorService#processGetValCommand</code>.
+<p>
+See <code>com.gemstone.gemfire.admin.remote.RemoteCacheInfo.RemoteCacheInfo(GemFireCache)</code>.
+<p>
+See <code>com.gemstone.gemfire.admin.remote.RootRegionResponse#create(DistributionManager, InternalDistributedMember)</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore#createBucketRegion(int)</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionHelper#getPRConfigRegion(Region, Cache)</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PREFER_DESERIALIZED</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.CachedDeserializableFactory#PREFER_DESERIALIZED</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PREFER_SERIALIZED</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<P>
+See <code>com.gemstone.gemfire.internal.cache.CachedDeserializableFactory.#PREFER_DESERIALIZED</code>
+<p>
+Enable storing the values in serialized form
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PRSanityCheckDisabled</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.partitioned.PRSanityCheckMessage#schedule</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PRSanityCheckInterval</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 5000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.partitioned.PRSanityCheckMessage#schedule</code>.
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PartitionedRegionRandomSeed</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (defaults to NanoTimer.getTime())
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#rand</code>.
+<p>
+Seed for the random number generator in this class.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Query.COMPILED_QUERY_CLEAR_TIME</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (defaults to 10 * 60 * 1000)
+<p>
+See <code>com.gemstone.gemfire.cache.query.internal.DefaultQuery.#COMPILED_QUERY_CLEAR_TIME</code>
+<p>
+Frequency of clean up compiled queries
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Query.VERBOSE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<p>
+See <code>com.gemstone.gemfire.cache.query.internal.DefaultQuery.#QUERY_VERBOSE</code><em>Boolean</em> (defaults to false)
+<p>
+Enable verbose logging in the query execution
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.QueryService.QueryHeterogeneousObjects</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (defaults to true)
+<p>
+See <code>com.gemstone.gemfire.cache.query.internal.DefaultQueryService.#QUERY_HETEROGENEOUS_OBJECTS</code>
+<p>
+Allow query on region with heterogeneous objects
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.randomizeOnMember</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (defaults to false)
+<p>
+See <code>com.gemstone.gemfire.cache.execute.internal.FunctionServiceManager.#RANDOM_onMember</code>
+<p>
+When set, onMember execution will be executed on a random member.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.RegionAdvisor.volunteeringThreadCount</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.partitioned.RegionAdvisor#VOLUNTERING_THREAD_COUNT</code>.
+<p>
+<pre>
+  Number of threads allowed to concurrently volunteer for bucket primary.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.VIEW_BUNDLING_WAIT_TIME</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 150)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.pbcast.GMS#BUNDLE_WAITTIME</code>.
+<p>
+<pre>
+     GemStoneAddition - amount of time to wait for additional join/leave
+     requests before processing.  Set gemfire.VIEW_BUNDLING_WAIT_TIME to
+     the number of milliseconds.  Defaults to 150ms.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.VM_OWNERSHIP_WAIT_TIME</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is Long.MAX_VALUE)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#VM_OWNERSHIP_WAIT_TIME</code>
+<p>
+<pre>
+  Time to wait for for acquiring distributed lock ownership
+</pre>
+<p>
+Time is specified in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.asynchronous-gateway-distribution-enabled</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayHubImpl#USE_ASYNCHRONOUS_DISTRIBUTION</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.bridge.disableShufflingOfEndpoints</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ConnectionProxyImpl#disableShufflingOfEndpoints</code>.
+<p>
+<pre>
+   A debug flag, which can be toggled by tests to disable/enable shuffling of
+   the endpoints list
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.bridge.suppressIOExceptionLogging</strong></dt>
+<dd>
+<em>Public:</em> jpmc-jets
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>ConnectionProxyImpl</code>,
+<code>ServerConnection</code>, and
+<code>ServerMonitor</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.BridgeServer.FORCE_LOAD_UPDATE_FREQUENCY</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> 10
+<p>
+See <code>com.gemstone.gemfire.internal.cache.BridgeServerImpl.#FORCE_LOAD_UPDATE_FREQUENCY</code>
+<p>
+How often to force a BridgeServer load message to be sent
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.BucketRegion.alwaysFireLocalListeners</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> default is false
+<p>
+See <code>com.gemstone.gemfire.internal.cache.BucketRegion.#FORCE_LOCAL_LISTENERS_INVOCATION</code>
+<p>
+Enable invocation of listeners in both primary and secondary buckets
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.Cache.MAX_QUERY_EXECUTION_TIME</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Integer</em> default is -1
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GemFireCacheImpl.#MAX_QUERY_EXECUTION_TIME</code>
+<p>
+Limit the max query execution time (ms)
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.CLIENT_FUNCTION_TIMEOUT</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> default is 0
+<p>
+See <code>com.gemstone.gemfire.cache.client.internal.ConnectioImpl.#CLIENT_FUNCTION_TIMEOUT</code>
+<p>
+Timeout to set for client function execution
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.clientMonitorLogFile</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em> (default is unset, to use System.out)
+<p>
+See <code>com.gemstone.gemfire.admin.GemFireClientAdminTool#logFileName</code>.
+<p>
+This is a file name.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.clientSocketFactory</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.internal.SocketCreator</code>
+<p>
+Non-standard Socket creator
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.cq.EXECUTE_QUERY_DURING_INIT</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> true
+<p>
+See <code>com.gemstone.gemfire.cache.query.internal.CqService.#EXECUTE_QUERY_DURING_INIT</code>
+<p>
+When set to false, avoid query execution during CQ when initial results are not required
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.debug</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.SharedLibrary#getName</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.debug-frag2</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.FRAG2#DEBUG_FRAG2</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disableAccessTimeUpdateOnPut</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.AbstractRegionEntry.#DISABLE_ACCESS_TIME_UPDATE_ON_PUT</code>
+<p>
+Disable access time updates on put event
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disable-event-old-value</strong></dt>
+<dd>
+<em>Public:</em> jpmc-cbb
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.EntryEventImpl#EVENT_OLD_VALUE</code>.
+<p>
+Discussing EVENT_OLD_VALUE = !Boolean.getBoolean():
+<pre>
+   If true (the default) then preserve old values in events.
+   If false then mark non-null values as being NOT_AVAILABLE.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disablePartitionedRegionBucketAck</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion.#DISABLE_SECONDARY_BUCKET_ACK</code>
+<p>
+Enable no-ack replication in bucket regions
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disable-udp-direct-ack</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.DistributedCacheOperation#UDP_DISABLE_DIRECT_ACK</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disableNotificationWarnings</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientProxy#LOG_DROPPED_MSGS</code>.
+<p>
+Discussing LOG_DROPPED_MSGS = !Boolean.getBoolean():
+<pre>
+   Defaults to true; meaning do some logging of dropped client notification
+   messages. Set the system property to true to cause dropped messages to NOT
+   be logged.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disableShutdownHook</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If true then the shutdown hooks of the DistributedSystem, Locator, and Agent
+are not run on shutdown. This was added for bug 38407.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disallowMcastDefaults</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+Used by unit tests to make sure the GemFire mcast-port has been configured
+to a non-default value.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.disk.recoverValues</strong></dt>
+<dd>
+<em>Public:</em> jpmc-cbb
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.SimpleDiskRegion</code>.
+<p>
+<pre>
+  Whether to get the values from disk to memory on recovery
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.EXPIRATIONS_CAUSE_CONFLICTS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.LocalRegion.#EXPIRATIONS_CAUSE_CONFLICTS</code>
+<p>
+Allow expirations to be done by multiple threads, avoiding the 
+pendingExpires list (set in conjunction with gemfire.EXPIRY_THREADS)
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.enableCpuTime</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+This property causes the per thread stats to also measure cpu time.
+This property is ignored unless "gemfire.enableThreadStats" is also set to true.
+See java.lang.management.ThreadMXBean.setThreadCpuTimeEnabled(boolean)
+for more information.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.enableContentionTime</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+This property causes the per thread stats to also measure contention.
+This property is ignored unless "gemfire.enableThreadStats" is also set to true.
+See java.lang.management.ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
+for more information.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.enableThreadStats</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+This property causes the per thread stats to be collected.
+See java.lang.management.ThreadMXBean
+for more information.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.fast-member-timeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1000)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.VERIFY_SUSPECT#suspect</code>.
+<p>
+<pre>
+  artificially age the entry for faster processing
+</pre>
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.gateway-conserve-sockets-allowed</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.GatewayHubImpl#ALLOW_CONSERVE_SOCKETS</code>.
+<p>
+<pre>
+   A boolean that defines whether the value of the conserve-sockets property
+   in the gemfire.properties file is preserved. By default, the value in
+   gemfire.properties is overridden so that queue ordering is preserved. If
+   ALLOW_CONSERVE_SOCKETS=true, then the conserve-sockets property is
+   used and queue ordering may not be preserved. This property can be set
+   using the System property called 'gemfire.gateway-conserve-sockets-allowed'.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.gateway-queue-no-ack</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.SingleWriteSingleReadRegionQueue#NO_ACK</code>.
+<p>
+<pre>
+   Whether the <code>Gateway</code> queue should be no-ack instead of ack.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.GatewayReceiver.ApplyRestries</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+If true causes the GatewayReceiver will apply batches it has already received.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.gateway.ApplyRetries</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#APPLY_RETRIES</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.GetInitialImage.CHUNK_PERMITS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 16)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.InitialImageOperation.#CHUNK_PERMITS</code>
+<p>
+Allowed number of in-flight initial image chunks. This property controls how many requests for GII chunks can be handled simultaneously.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.GetInitialImage.MAX_PARALLEL_GIIS</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Integer</em> (default is 5)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.InitialImageOperation.#MAX_PARALLEL_GIIS </code>
+<p>
+Allowed number of GIIs in parallel. This property controls how many regions can do GII simultaneously. Each replicated region and partitioned region bucket counts against this number.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.haltOnAssertFailure</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.Assert#debug</code>.
+<p>
+Causes VM to hang on assertion failure (to allow a debugger to be attached)
+instead of exiting the process.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.jg-can_bind_to_mcast_addr</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+On OSes that support it bind to the mcast_addr to prevent traffic on 
+different addresses, but on the same port.
+Setting to true can avoid cross address chatter.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.launcher.registerSignalHandlers</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+Causes the code used by gfsh to launch a server or locator to install
+signal handlers using sun.misc.Signal.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.lightLocators</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.gui.RemoteCommandManager#getLocatorStart</code>.
+<p>
+Adds the "-lightweight" argument when creating the locator.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.loadLibrary.debug</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.PureJavaMode#debug</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.locatorXms</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.internal.gui.RemoteCommandManager#getLocatorStart</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.gui.StartStopManager#startLocalLocator</code>.
+<p>
+A JVM property, esp. "-Xms150m".
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.locatorXmx</strong></dt>
+<em>String</em>
+<p>
+<dd>
+<em>Public:</em> false
+<p>
+See <code>com.gemstone.gemfire.internal.gui.RemoteCommandManager#getLocatorStart</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.gui.StartStopManager#startLocalLocator</code>.
+<p>
+A JVM property, esp. "-Xmx400m"
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.locators</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See the constructor for <code>com.gemstone.gemfire.distributed.internal.InternalLocator</code>.
+<p>
+If this property is not found in gemfire.properties, the system property
+of the same name is used.
+</dd>
+
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.lru.maxSearchEntries</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is -1)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.lru.NewLRUClockHand#maxEntries</code>.
+<p>
+This is the maximum number of "good enough" entries to pass over for eviction
+before settling on the next acceptable entry.  This prevents excessive cache
+processing to find a candidate for eviction.
+<p>
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.order-pr-gets</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.partitioned.GetMessage#ORDER_PR_GETS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.partitionedRegionRetryTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 60 * 60 * 1000)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#retryTimeout</code>
+<p>
+<pre>
+  The maximum milliseconds for retrying operations
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.PRQueryProcessor.numThreads</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> 1+ (default is 2)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PRQueryProcessor#executeQuery</code>
+<p>
+<pre>
+  The number of concurrent threads to use within a single VM to execute queries
+  on a Partitioned Region. If set to 1 (or less) then queries are run
+  sequentially with a single thread.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.pureJavaMode</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.PureJavaMode class init</code>.
+<p>
+Force use of "pure" Java mode (native libraries will not be loaded)
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.SPECIAL_DURABLE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.cache.client.internal.PoolImpl.#SPECIAL_DURABLE</code>
+<p>
+Makes multiple durable subscriptions from same client unique. on java client ensures only a single server proxy is created but will limit the client to a single active client pool at a time
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.statsDisabled</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.InternalDistributedSystem#statsDisabled</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.statusPollingDelay</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 5000)
+<p>
+See <code>com.gemstone.gemfire.admin.GemFireClientAdminTool#_statusPollingDelay</code>.
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.syncWrites</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em>
+<p>
+See <code>com.gemstone.gemfire.internal.cache.Oplog#SYNC_WRITES</code>.
+<p>
+<pre>
+   This system property instructs that writes be synchronously written to disk
+   and not to file system. (Use rwd instead of rw - RandomAccessFile property)
+</pre>
+<p>
+TBA
+</dd>
+	
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.TcpServer.MAX_POOL_SIZE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em>
+<p>
+<pre>
+   This property limits the number of threads that the locator will
+	use for processing gossip messages and server location
+	requests.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.useFD</strong></dt>
+<dd>
+<em>Public:</em> true
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.validateMessageSize</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionConfig#VALIDATE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfire.validateMessageSizeCeiling</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 8 * 1024 * 1024)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.DistributionConfig#VALIDATE_CEILING</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemfirePropertyFile</strong></dt>
+<dd>
+<em>Public:</em> yes
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.distributed.DistributedSystem#PROPERTY_FILE</code>.
+<p>
+<pre>
+     The <code>PROPERTY_FILE</code> is the name of the
+     property file that the connect method will check for when
+     it looks for a property file.
+     The file will be searched for, in order, in the following directories:
+     <ol>
+     <li> the current directory
+     <li> the home directory
+     <li> the class path
+     </ol>
+     Only the first file found will be used.
+     <p>
+     The default value of PROPERTY_FILE is
+     <code>"gemfire.properties"</code>.  However if the
+     "gemfirePropertyFile" system property is set then its value is
+     the value of PROPERTY_FILE. If this value is a relative file
+     system path then the above search is done.  If it is an absolute
+     file system path then that file must exist; no search for it is
+     done.
+     @since 5.0
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gemstone.MAX_BUCKET_GRAB_ATTEMPTS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 20)
+<p>
+See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore.BucketRecoverer#grabBuckets</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gfAgentDebug</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em>
+<p>
+See <code>com.gemstone.gemfire.admin.jmx.internal.AgentImpl#checkDebug</code>.
+<p>
+<pre>
+  Enables mx4j tracing if Agent debugging is enabled.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gfAgentPropertyFile</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.admin.jmx.internal.AgentConfigImpl#retrievePropertyFile</code>.
+<p>
+<pre>
+   The <code>propertyFile</code> is the name of the property file that will 
+   be loaded on startup of the Agent.
+   <p>
+   The file will be searched for, in order, in the following directories:
+   <ol>
+   <li> the current directory
+   <li> the home directory
+   <li> the class path
+   </ol>
+   Only the first file found will be used.
+   <p>
+   The default value of propertyFile is <code>"agent.properties"</code>. However 
+   if the "gfAgentPropertyFile" system property is set then its value is the 
+   value of propertyFile. If this value is a relative file system path then 
+   the above search is done. If its an absolute file system path then that 
+   file must exist; no search for it is done.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gfc.propertyfile.init</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.internal.gui.Service#initProps()</code>.
+<p>
+This is name of a <code>Properties</code> file read at startup.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>gfc.propertyfile.onclose</strong></dt>
+<em>String</em>
+<p>
+See <code>com.gemstone.gemfire.internal.gui.Service#saveProps</code>.
+<dd>
+<em>Public:</em> false
+<p>
+This is the name of a <code>Properties</code> file to which some properties
+are saved a close.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>ignore.bind.address</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.MPING#setProperties(Properties)</code>.
+<p>
+See <code>com.gemstone.org.jgroups.util.Util#isBindAddressPropertyIgnored</code>.
+<p>
+If <code>true</code>, the value of the
+<code>bind.address</code> property is ignored.
+<p>
+This is used in MPING, FD_SOCK, and TP.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>install</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.gui.NavigationPane#NavigationPane()</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.gui.Service#Service()</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>java.net.preferIPv6Addresses</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.org.jgroups.util.Util#getFirstNonLoopbackAddress</code>.
+<p>
+TBA
+<p>
+Is this a standard Java property?
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>jboss.partition.udpGroup</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em> (See <code>InetAddress.getByName</code>)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.UDP#setProperties</code>.
+<p>
+<pre>
+  The multicast address used for sending and receiving packets 
+</pre>
+If you manage to get here without setting mcast_addr_name, the default
+is 228.8.8.8.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>jboss.partition.udpPort</strong></dt>
+<em>Integer</em>
+<p>
+See <code>com.gemstone.org.jgroups.protocols.UDP#setProperties</code>.
+<dd>
+<em>Public:</em> false
+<p>
+<p>
+<pre>
+  The multicast port used for sending and receiving packets
+</pre>
+<p>
+If you manage to get here without setting mcast_port, the default value is 7600.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>jta.VERBOSE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em>
+<p>
+See <code>com.gemstone.gemfire.internal.jta.GlobalTransaction#VERBOSE</code>.
+<p>
+See <code>com.gemstone.gemfire.internal.jta.TransactionManagerImpl#VERBOSE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>jta.defaultTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 600)
+<p>
+See <code>com.gemstone.gemfire.internal.jta.TransactionManagerImpl#DEFAULT_TRANSACTION_TIMEOUT</code>.
+<p>
+Units are in seconds.
+<p>
+TBA Is this a standard JTA property?
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>local_addr.timeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 30000)
+<p>
+See <code>com.gemstone.org.jgroups.JChannel#LOCAL_ADDR_TIMEOUT</code>.
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>mergelogs.TRIM_TIMESTAMPS</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.LogFileParser#TRIM_TIMESTAMPS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>org.apache.commons.logging.log</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em> (default is org.apache.commons.logging.impl.SimpleLog)
+<p>
+See <code>com.gemstone.gemfire.admin.jmx.internal.AgentImpl class init</code>.
+<p>
+This is the name of a class.
+<p>
+This property is also used by commons-logging.jar (and
+discussed below).  It is called out here
+because of its explicit use in the JMX Agent.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>osStatsDisabled</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.GemFireStatSampler#osStatsDisabled</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.DEBUG</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#DEBUG</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.DEBUG_FAIL_FIRST</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.pbcast.ClientGmsImpl#join(Address)</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.VERBOSE</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#QUIET</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.ackSenderThread</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.UNICAST#start</code>.
+<p>
+Creates an <code>AckSender</code> thread.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.backlog</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 50)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#BACKLOG</code>.
+<p>
+<pre>
+  backlog is the "accept" backlog configuration parameter all
+  conduits server socket */
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.batchBufferSize</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 1024 * 1024)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.Connection#BATCH_BUFFER_SIZE</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.batchFlushTime</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> in JGroups, <em>Integer</em> in Connection.
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code> (default is 20).
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.Connection#BATCH_FLUSH_MS</code>.
+(Default is 50)
+<p>
+Replaces <code>BUNDLING_TIMEOUT</code> in the JGroups config template.
+This in turn sets the <code>max_bundle_timeout</code> property in the
+<code>TP</code> JGroups protocol:
+<p>
+<pre>
+    Max number of milliseconds until queued messages are sent. Messages are
+    sent when max_bundle_size or
+    max_bundle_timeout has been exceeded (whichever occurs faster)
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.batchSends</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.Connection#BATCH_SENDS</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.debugConnect</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.defaultConcurrencyLevel</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is the number of processors on current machine,
+but no less than 2)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.direct.DirectChannel#DEFAULT_CONCURRENCY_LEVEL</code>.
+<p>
+<pre>
+   Return how many concurrent operations should be allowed by default.
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.defaultLogLevel</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>String</em> (one of "config", "fine", "finer", or "finest")
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#getLogger</code>.
+<p>
+Used only if this class needs to create a logger.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.directAckTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 15000)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.DirAck#DIRACK_TIMEOUT</code>.
+<p>
+<pre>
+  warning timer period for log message while waiting for acks
+</pre>
+<p>
+Units are in milliseconds.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.disableBatching</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (default is false)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+If true, sets <code>ENABLE_BUNDLING</code> to false and
+<code>BUNDLING_TIMEOUT</code> to 30 in the JGroups config template; otherwise
+it sets <code>ENABLE_BUNDLING</code> to true and <code>BUNDLING_TIMEOUT</code>
+to <code>p2p.batchFlushTime</code> (30 if not set).
+<p>
+<code>ENABLE_BUNDLING</code> maps to the <code>enable_bundling</code> property
+in <code>UDP</code>, and <code>BUNDLING_TIMEOUT</code> maps to the 
+<code>max_bundle_timeout</code> property in <code>UDP</code>.
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.disableDirAckBypass</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (defaults to false)
+<p>
+See <code>com.gemstone.org.jgroups.protocols.DirAck#DIRACK_BYPASS</code>.
+<p>
+See <code>com.gemstone.org.jgroups.protocols.TP#dirackBypass</code>.
+<p>
+<pre>
+   set -Dp2p.disableDirAckBypass=true to disengage bypassing most of the stack
+   on outgoing messages
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.disableSocketWrite</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Boolean</em> (defaults to false)
+<p>
+See <code>com.gemstone.gemfire.internal.tcp.Connection#SOCKET_WRITE_DISABLED</code>.
+<p>
+<pre>
+  use to test message prep overhead (no socket write).
+  WARNING: turning this on completely disables distribution of batched sends
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.disconnectDelay</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 3000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#destroyMember</code>.
+<p>
+TBA Workaround for bug 34010: small pause inserted before closing
+reader threads for a departed member.
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.discoveryProbes</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Integer</em> (default is 2)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+This substitutes the <code>NUM_PING_REQUESTS</code> field in the JGroups
+config template, which in turn sets the <code>num_ping_requests</code> property
+in the <code>Discovery</code> protocol.
+<p>
+<pre>
+Number of GET_MBRS_REQ messages to be sent (min=1), distributed over timeout ms
+</pre>
+<p>
+TBA
+</dd>
+
+<!-- -------------------------------------------------------  -->
+<dt><strong>p2p.discoveryTimeout</strong></dt>
+<dd>
+<em>Public:</em> false
+<p>
+<em>Long</em> (default is 1000)
+<p>
+See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
+<p>
+Sets the <code>DISCOVERY_TIMEOUT</code> field in the JGroups template, which
+in turn sets the <code>timeout</code> property in the <code>Discovery</

<TRUNCATED>


[12/45] incubator-geode git commit: GEODE-417: deprecated ssl-* gemfire properties should not be allowed with cluster-ssl-* properties

Posted by kl...@apache.org.
GEODE-417: deprecated ssl-* gemfire properties should not be allowed with cluster-ssl-* properties

Modified the verification code to only complain if corresponding properties
are both set and are not equal.  Modified the exception text to be (I believe)
grammatically correct.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/6c74e5ab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/6c74e5ab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/6c74e5ab

Branch: refs/heads/feature/GEODE-1050
Commit: 6c74e5ab10295c4420c3d75694ab5e077c46e16e
Parents: a42a2f3
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Wed Mar 9 08:53:44 2016 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Wed Mar 9 08:56:26 2016 -0800

----------------------------------------------------------------------
 .../internal/DistributionConfigImpl.java        | 33 +++++----
 .../gemfire/internal/AbstractConfig.java        |  2 +
 .../internal/SSLConfigIntegrationJUnitTest.java |  2 +-
 .../gemfire/internal/SSLConfigJUnitTest.java    | 73 ++++++++++++++++----
 4 files changed, 77 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6c74e5ab/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
index fc2fca7..93b59f5 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java
@@ -746,27 +746,28 @@ public class DistributionConfigImpl
     if(sslEnabledString != null && clusterSSLEnabledString != null){
       boolean sslEnabled = new Boolean(sslEnabledString).booleanValue();
       boolean clusterSSLEnabled =new Boolean(clusterSSLEnabledString).booleanValue();
-      if (sslEnabled != DEFAULT_SSL_ENABLED
-          && clusterSSLEnabled != DEFAULT_CLUSTER_SSL_ENABLED) {
+      if (sslEnabled != clusterSSLEnabled) {
         throw new IllegalArgumentException(
-            "Gemfire property \'ssl-enabled\' and \'cluster-ssl-enabled\' can not be used at the same time. Prefer way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
+            "GemFire properties \'ssl-enabled\' and \'cluster-ssl-enabled\' can not be used at the same time and have different values. The preferred way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
       }
     }
     
     String sslCipher = (String)props.get(SSL_CIPHERS_NAME);
     String clusterSSLCipher = (String)props.get(CLUSTER_SSL_CIPHERS_NAME);
-    if (sslCipher != null && sslCipher != DEFAULT_SSL_CIPHERS
-        && clusterSSLCipher != null && clusterSSLCipher != DEFAULT_CLUSTER_SSL_CIPHERS) {
-      throw new IllegalArgumentException(
-          "Gemfire property \'ssl-cipher\' and \'cluster-ssl-cipher\' can not be used at the same time. Prefer way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
+    if (sslCipher != null && clusterSSLCipher != null) {
+      if ( !sslCipher.equals(clusterSSLCipher) ) {
+        throw new IllegalArgumentException(
+          "GemFire properties \'ssl-cipher\' and \'cluster-ssl-cipher\' can not be used at the same time and have different values. The preferred way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
+      }
     }
 
     String sslProtocol = (String)props.get(SSL_PROTOCOLS_NAME);
     String clusterSSLProtocol = (String)props.get(CLUSTER_SSL_PROTOCOLS_NAME);
-    if (sslProtocol != null && sslProtocol != DEFAULT_SSL_PROTOCOLS
-        && clusterSSLProtocol != null && clusterSSLProtocol != DEFAULT_CLUSTER_SSL_PROTOCOLS ) {
-      throw new IllegalArgumentException(
-          "Gemfire property \'ssl-protocols\' and \'cluster-ssl-protocols\' can not be used at the same time. Prefer way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
+    if (sslProtocol != null && clusterSSLProtocol != null) {
+      if ( !sslProtocol.equals(clusterSSLProtocol) ) {
+        throw new IllegalArgumentException(
+          "GemFire properties \'ssl-protocols\' and \'cluster-ssl-protocols\' can not be used at the same time and have different values. The preferred way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
+      }
     }
     
     String sslReqAuthString = (String)props.get(SSL_REQUIRE_AUTHENTICATION_NAME);
@@ -774,10 +775,9 @@ public class DistributionConfigImpl
     if(sslReqAuthString != null && clusterReqAuthString != null){
       boolean sslReqAuth = new Boolean(sslReqAuthString).booleanValue();
       boolean clusterSSLReqAuth =new Boolean(clusterReqAuthString).booleanValue();
-      if (sslReqAuth != DEFAULT_SSL_REQUIRE_AUTHENTICATION
-          && clusterSSLReqAuth != DEFAULT_CLUSTER_SSL_REQUIRE_AUTHENTICATION) {
+      if (sslReqAuth != clusterSSLReqAuth) {
         throw new IllegalArgumentException(
-            "Gemfire property \'ssl-require-authentication\' and \'cluster-ssl-require-authentication\' can not be used at the same time. Prefer way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
+            "GemFire properties \'ssl-require-authentication\' and \'cluster-ssl-require-authentication\' can not be used at the same time and have different values. The preferred way is to use all \'cluster-ssl*\' properties instead of \'ssl-*\'.");
       }
     }
     
@@ -786,10 +786,9 @@ public class DistributionConfigImpl
     if(jmxSSLString != null && jmxSSLEnabledString != null){
       boolean jmxSSL = new Boolean(jmxSSLString).booleanValue();
       boolean jmxSSLEnabled =new Boolean(jmxSSLEnabledString).booleanValue();
-      if (jmxSSL != DEFAULT_SSL_ENABLED
-          && jmxSSLEnabled != DEFAULT_CLUSTER_SSL_ENABLED) {
+      if (jmxSSL != jmxSSLEnabled) {
         throw new IllegalArgumentException(
-            "Gemfire property \'jmx-manager-ssl\' and \'jmx-manager-ssl-enabled\' can not be used at the same time. Prefer way is to use \'jmx-manager-ssl-enabled\' instead of \'jmx-manager-ssl\'.");
+            "GemFire properties \'jmx-manager-ssl\' and \'jmx-manager-ssl-enabled\' can not be used at the same time and have different values and have different values. The preferred way is to use \'jmx-manager-ssl-enabled\' instead of \'jmx-manager-ssl\'.");
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6c74e5ab/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
index ee4aceb..09fc61c 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/AbstractConfig.java
@@ -211,6 +211,8 @@ public abstract class AbstractConfig implements Config {
       return true;
     } else if (attName.equals(DistributionConfig.SSL_REQUIRE_AUTHENTICATION_NAME)) {
       return true;
+    } else if (attName.equals(DistributionConfig.JMX_MANAGER_SSL_NAME)) {
+      return true;
     }
     return false; 
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6c74e5ab/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigIntegrationJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigIntegrationJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigIntegrationJUnitTest.java
index 148004e..c4d643d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigIntegrationJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigIntegrationJUnitTest.java
@@ -36,7 +36,7 @@ import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 public class SSLConfigIntegrationJUnitTest {
 
   @Test
-  public void test51531() {
+  public void testIsClusterSSLRequireAuthentication() {
     Cache mCache = new CacheFactory().set("mcast-port", "0").set("jmx-manager", "true").create();
     ManagementService mService = ManagementService.getManagementService(mCache);
     MemberMXBean mMemberBean = mService.getMemberMXBean();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6c74e5ab/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
index 99eb949..543574a 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
@@ -355,7 +355,7 @@ public class SSLConfigJUnitTest {
     try{
       DistributionConfigImpl config = new DistributionConfigImpl( gemFireProps );
     }catch(IllegalArgumentException e){
-      if (! e.toString().contains( "Gemfire property \'jmx-manager-ssl\' and \'jmx-manager-ssl-enabled\' can not be used at the same time")) {
+      if (! e.toString().contains( "GemFire properties \'jmx-manager-ssl\' and \'jmx-manager-ssl-enabled\' can not be used at the same time")) {
         throw new Exception( "did not get expected exception, got this instead...", e );
       }
     }
@@ -471,61 +471,104 @@ public class SSLConfigJUnitTest {
     Properties gemFireProps = new Properties();
     gemFireProps.setProperty( "mcast-port", "0" );
     gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
-    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "false");
     DistributionConfigImpl config = null;
     try{
       config = new DistributionConfigImpl( gemFireProps );
+      throw new Exception();
     }catch(IllegalArgumentException e){
-      if (! e.toString().contains( "Gemfire property \'ssl-enabled\' and \'cluster-ssl-enabled\' can not be used at the same time")) {
+      if (! e.toString().contains( "GemFire properties \'ssl-enabled\' and \'cluster-ssl-enabled\' can not be used at the same time")) {
         throw new Exception( "did not get expected exception, got this instead...", e );
       }
     }
     
-    //ssl-protocol and clsuter-ssl-protocol set at the same time
+    //ssl-protocol and cluster-ssl-protocol set at the same time
     gemFireProps = new Properties();
     gemFireProps.setProperty( "mcast-port", "0" );
     gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
     gemFireProps.put(DistributionConfig.SSL_PROTOCOLS_NAME, sslprotocols);
-    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "false");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
     gemFireProps.put(DistributionConfig.CLUSTER_SSL_PROTOCOLS_NAME, clusterSslprotocols);
     try{
       config = new DistributionConfigImpl( gemFireProps );
+      throw new Exception();
     }catch(IllegalArgumentException e){
-      if (! e.toString().contains( "Gemfire property \'ssl-protocols\' and \'cluster-ssl-protocols\' can not be used at the same time") ) {
+      if (! e.toString().contains( "GemFire properties \'ssl-protocols\' and \'cluster-ssl-protocols\' can not be used at the same time") ) {
         throw new Exception( "did not get expected exception, got this instead...", e );
       }
     }
     
-    //ssl-cipher and clsuter-ssl-cipher set at the same time
+    //ssl-protocol and cluster-ssl-protocol set at the same time with same value
+    gemFireProps = new Properties();
+    gemFireProps.setProperty( "mcast-port", "0" );
+    gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.SSL_PROTOCOLS_NAME, sslprotocols);
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_PROTOCOLS_NAME, sslprotocols);
+    try{
+      config = new DistributionConfigImpl( gemFireProps );
+    } catch(IllegalArgumentException e){
+      throw new Exception();
+    }
+    
+    //ssl-cipher and cluster-ssl-cipher set at the same time
     gemFireProps = new Properties();
     gemFireProps.setProperty( "mcast-port", "0" );
     gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
     gemFireProps.put(DistributionConfig.SSL_CIPHERS_NAME, sslciphers);
-    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "false");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
     gemFireProps.put(DistributionConfig.CLUSTER_SSL_CIPHERS_NAME, clusterSslciphers);
     try{
       config = new DistributionConfigImpl( gemFireProps );
-    }catch(IllegalArgumentException e){
-      if (! e.toString().contains( "Gemfire property \'ssl-cipher\' and \'cluster-ssl-cipher\' can not be used at the same time") ) {
+      throw new Exception();
+    } catch(IllegalArgumentException e){
+      if (! e.toString().contains( "GemFire properties \'ssl-cipher\' and \'cluster-ssl-cipher\' can not be used at the same time") ) {
         throw new Exception( "did not get expected exception, got this instead...", e );
       }
     }
     
-  //ssl-require-authentication and clsuter-ssl-require-authentication set at the same time
+    //ssl-cipher and cluster-ssl-cipher set at the same time with same value
+    gemFireProps = new Properties();
+    gemFireProps.setProperty( "mcast-port", "0" );
+    gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.SSL_CIPHERS_NAME, sslciphers);
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_CIPHERS_NAME, sslciphers);
+    try{
+      config = new DistributionConfigImpl( gemFireProps );
+    } catch(IllegalArgumentException e){
+      throw new Exception();
+    }
+    
+    //ssl-require-authentication and cluster-ssl-require-authentication set at the same time
     gemFireProps = new Properties();
     gemFireProps.setProperty( "mcast-port", "0" );
     gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
     gemFireProps.put(DistributionConfig.SSL_REQUIRE_AUTHENTICATION_NAME, "true");
-    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "false");
-    gemFireProps.put(DistributionConfig.CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME, "false");
     try{
       config = new DistributionConfigImpl( gemFireProps );
-    }catch(IllegalArgumentException e){
-      if (! e.toString().contains( "Gemfire property \'ssl-require-authentication\' and \'cluster-ssl-require-authentication\' can not be used at the same time") ) {
+      throw new Exception();
+    } catch(IllegalArgumentException e){
+      if (! e.toString().contains( "GemFire properties \'ssl-require-authentication\' and \'cluster-ssl-require-authentication\' can not be used at the same time") ) {
         throw new Exception( "did not get expected exception, got this instead...", e );
       }
     }
     
+    //ssl-require-authentication and cluster-ssl-require-authentication set at the same time and have the same value
+    gemFireProps = new Properties();
+    gemFireProps.setProperty( "mcast-port", "0" );
+    gemFireProps.put(DistributionConfig.SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.SSL_REQUIRE_AUTHENTICATION_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_ENABLED_NAME, "true");
+    gemFireProps.put(DistributionConfig.CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME, "true");
+    try{
+      config = new DistributionConfigImpl( gemFireProps );
+    } catch(IllegalArgumentException e){
+      throw new Exception();
+    }
+    
     // only ssl-* properties provided. same should reflect in cluster-ssl properties
     gemFireProps = new Properties();
     gemFireProps.setProperty("mcast-port", "0");


[41/45] incubator-geode git commit: GEODE-1078 CI failure: ClientMembershipSelectorDUnitTest.testClientMembershipEventsInServer

Posted by kl...@apache.org.
GEODE-1078 CI failure: ClientMembershipSelectorDUnitTest.testClientMembershipEventsInServer

added an assertion that the distributed system hasn't changed in between
getSystem() and createRegion() calls.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/c5d8ea77
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/c5d8ea77
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/c5d8ea77

Branch: refs/heads/feature/GEODE-1050
Commit: c5d8ea770d56832b54fb64ade61cef956317b638
Parents: aef84eb
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Mar 14 09:33:20 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Mon Mar 14 09:34:52 2016 -0700

----------------------------------------------------------------------
 .../cache30/ClientMembershipDUnitTest.java      | 138 ++++++++++---------
 1 file changed, 74 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c5d8ea77/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index a8ea590..d4678ca 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@ -42,10 +42,12 @@ import com.gemstone.gemfire.cache.client.ClientCache;
 import com.gemstone.gemfire.cache.client.Pool;
 import com.gemstone.gemfire.cache.client.PoolManager;
 import com.gemstone.gemfire.distributed.DistributedMember;
+import com.gemstone.gemfire.distributed.DistributedSystem;
 import com.gemstone.gemfire.distributed.DurableClientAttributes;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.internal.cache.tier.InternalClientMembership;
 import com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl;
 import com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection;
@@ -57,6 +59,7 @@ import com.gemstone.gemfire.management.membership.ClientMembershipListener;
 import com.gemstone.gemfire.test.dunit.Assert;
 import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.IgnoredException;
+import com.gemstone.gemfire.test.dunit.Invoke;
 import com.gemstone.gemfire.test.dunit.NetworkUtils;
 import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
@@ -85,15 +88,20 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     super(name);
   }
 
+  @Override
   public void setUp() throws Exception {
     super.setUp();
   }
   
   @Override
-  protected final void postTearDownCacheTestCase() throws Exception {
-    InternalClientMembership.unregisterAllListeners();
+  protected void postTearDown() throws Exception {
+    Invoke.invokeInEveryVM((() -> cleanup()));
   }
-
+  
+  public static void cleanup() {
+    properties = null;
+  }
+  
   private void waitForAcceptsInProgressToBe(final int target)
     throws Exception {
     WaitCriterion ev = new WaitCriterion() {
@@ -138,7 +146,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       SerializableRunnable createMeanSocket = new CacheSerializableRunnable("Connect to server with socket") {
         public void run2() throws CacheException {
           getCache(); // create a cache so we have stats
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("connecting to cache server with socket");
+          System.out.println("connecting to cache server with socket");
           try {
             InetAddress addr = InetAddress.getByName(hostName);
             meanSocket = new Socket(addr, port);
@@ -150,7 +158,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       };
       SerializableRunnable closeMeanSocket = new CacheSerializableRunnable("close mean socket") {
         public void run2() throws CacheException {
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("closing mean socket");
+          System.out.println("closing mean socket");
           try {
             meanSocket.close();
           }
@@ -161,28 +169,28 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
 
       assertEquals(0, getAcceptsInProgress());
       
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("creating mean socket");
+      System.out.println("creating mean socket");
       vm0.invoke(createMeanSocket);
       try {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("waiting to see it connect on server");
+        System.out.println("waiting to see it connect on server");
         waitForAcceptsInProgressToBe(1);
       } finally {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("closing mean socket");
+        System.out.println("closing mean socket");
         vm0.invoke(closeMeanSocket);
       }
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("waiting to see accept to go away on server");
+      System.out.println("waiting to see accept to go away on server");
       waitForAcceptsInProgressToBe(0);
 
       // now try it without a close. Server should timeout the mean connect
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("creating mean socket 2");
+      System.out.println("creating mean socket 2");
       vm0.invoke(createMeanSocket);
       try {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("waiting to see it connect on server 2");
+        System.out.println("waiting to see it connect on server 2");
         waitForAcceptsInProgressToBe(1);
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("waiting to see accept to go away on server without us closing");
+        System.out.println("waiting to see accept to go away on server without us closing");
         waitForAcceptsInProgressToBe(0);
       } finally {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("closing mean socket 2");
+        System.out.println("closing mean socket 2");
         vm0.invoke(closeMeanSocket);
       }
 
@@ -749,7 +757,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     // create and register ClientMembershipListener in controller vm...
     ClientMembershipListener listener = new ClientMembershipListener() {
       public synchronized void memberJoined(ClientMembershipEvent event) {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] memberJoined: " + event);
+        System.out.println("[testClientMembershipEventsInClient] memberJoined: " + event);
         fired[JOINED] = true;
         member[JOINED] = event.getMember();
         memberId[JOINED] = event.getMemberId();
@@ -757,11 +765,11 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
         notifyAll();
       }
       public synchronized void memberLeft(ClientMembershipEvent event) {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] memberLeft: " + event);
+        System.out.println("[testClientMembershipEventsInClient] memberLeft: " + event);
 //        fail("Please update testClientMembershipEventsInClient to handle memberLeft for BridgeServer.");
       }
       public synchronized void memberCrashed(ClientMembershipEvent event) {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] memberCrashed: " + event);
+        System.out.println("[testClientMembershipEventsInClient] memberCrashed: " + event);
         fired[CRASHED] = true;
         member[CRASHED] = event.getMember();
         memberId[CRASHED] = event.getMemberId();
@@ -779,7 +787,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     vm0.invoke(new CacheSerializableRunnable("Create BridgeServer") {
       public void run2() throws CacheException {
         try {
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] Create BridgeServer");
+          System.out.println("[testClientMembershipEventsInClient] Create BridgeServer");
           getSystem();
           AttributesFactory factory = new AttributesFactory();
           factory.setScope(Scope.LOCAL);
@@ -803,9 +811,9 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
 
     String serverMemberId = serverMember.toString();
 
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] ports[0]=" + ports[0]);
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] serverMember=" + serverMember);
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] serverMemberId=" + serverMemberId);
+    System.out.println("[testClientMembershipEventsInClient] ports[0]=" + ports[0]);
+    System.out.println("[testClientMembershipEventsInClient] serverMember=" + serverMember);
+    System.out.println("[testClientMembershipEventsInClient] serverMemberId=" + serverMemberId);
 
     assertFalse(fired[JOINED]);
     assertNull(member[JOINED]);
@@ -821,7 +829,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     assertFalse(isClient[CRASHED]);
     
     // sanity check...
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] sanity check");
+    System.out.println("[testClientMembershipEventsInClient] sanity check");
     DistributedMember test = new TestDistributedMember("test");
     InternalClientMembership.notifyJoined(test, SERVER);
     synchronized(listener) {
@@ -845,7 +853,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     resetArraysForTesting(fired, member, memberId, isClient);
     
     // create bridge client in controller vm...
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] create bridge client");
+    System.out.println("[testClientMembershipEventsInClient] create bridge client");
     Properties config = new Properties();
     config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
     config.setProperty(DistributionConfig.LOCATORS_NAME, "");
@@ -868,7 +876,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       }
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] assert client detected server join");
+    System.out.println("[testClientMembershipEventsInClient] assert client detected server join");
     
     // first check the getCurrentServers() result
     ClientCache clientCache = (ClientCache)getCache();
@@ -897,7 +905,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
 
     vm0.invoke(new SerializableRunnable("Stop BridgeServer") {
       public void run() {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] Stop BridgeServer");
+        System.out.println("[testClientMembershipEventsInClient] Stop BridgeServer");
         stopBridgeServers(getCache());
       }
     });
@@ -907,7 +915,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       }
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] assert client detected server departure");
+    System.out.println("[testClientMembershipEventsInClient] assert client detected server departure");
     assertFalse(fired[JOINED]);
     assertNull(member[JOINED]);
     assertNull(memberId[JOINED]);
@@ -928,7 +936,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     vm0.invoke(new CacheSerializableRunnable("Recreate BridgeServer") {
       public void run2() throws CacheException {
         try {
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] restarting BridgeServer");
+          System.out.println("[testClientMembershipEventsInClient] restarting BridgeServer");
           startBridgeServer(ports[0]);
         }
         catch(IOException e) {
@@ -943,7 +951,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       }
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] assert client detected server recovery");
+    System.out.println("[testClientMembershipEventsInClient] assert client detected server recovery");
     assertTrue(fired[JOINED]);
     assertNotNull(member[JOINED]);
     assertNotNull(memberId[JOINED]);
@@ -972,7 +980,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     // create and register ClientMembershipListener in controller vm...
     ClientMembershipListener listener = new ClientMembershipListener() {
       public synchronized void memberJoined(ClientMembershipEvent event) {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] memberJoined: " + event);
+        System.out.println("[testClientMembershipEventsInServer] memberJoined: " + event);
         fired[JOINED] = true;
         member[JOINED] = event.getMember();
         memberId[JOINED] = event.getMemberId();
@@ -981,7 +989,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
         assertFalse(fired[LEFT] || fired[CRASHED]);
       }
       public synchronized void memberLeft(ClientMembershipEvent event) {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] memberLeft: " + event);
+        System.out.println("[testClientMembershipEventsInServer] memberLeft: " + event);
         fired[LEFT] = true;
         member[LEFT] = event.getMember();
         memberId[LEFT] = event.getMemberId();
@@ -990,7 +998,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
         assertFalse(fired[JOINED] || fired[CRASHED]);
       }
       public synchronized void memberCrashed(ClientMembershipEvent event) {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] memberCrashed: " + event);
+        System.out.println("[testClientMembershipEventsInServer] memberCrashed: " + event);
         fired[CRASHED] = true;
         member[CRASHED] = event.getMember();
         memberId[CRASHED] = event.getMemberId();
@@ -1006,7 +1014,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     final int[] ports = new int[1];
 
     // create BridgeServer in controller vm...
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] Create BridgeServer");
+    System.out.println("[testClientMembershipEventsInServer] Create BridgeServer");
     getSystem();
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
@@ -1019,9 +1027,9 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     DistributedMember serverMember = getMemberId();
     String serverMemberId = serverMember.toString();
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] ports[0]=" + ports[0]);
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] serverMemberId=" + serverMemberId);
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] serverMember=" + serverMember);
+    System.out.println("[testClientMembershipEventsInServer] ports[0]=" + ports[0]);
+    System.out.println("[testClientMembershipEventsInServer] serverMemberId=" + serverMemberId);
+    System.out.println("[testClientMembershipEventsInServer] serverMember=" + serverMember);
 
     assertFalse(fired[JOINED]);
     assertNull(member[JOINED]);
@@ -1037,7 +1045,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     assertFalse(isClient[CRASHED]);
     
     // sanity check...
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] sanity check");
+    System.out.println("[testClientMembershipEventsInServer] sanity check");
     DistributedMember test = new TestDistributedMember("test");
     InternalClientMembership.notifyJoined(test, CLIENT);
     synchronized(listener) {
@@ -1063,16 +1071,17 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     SerializableCallable createConnectionPool =
     new SerializableCallable("Create connectionPool") {
       public Object call() {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] create bridge client");
+        System.out.println("[testClientMembershipEventsInServer] create bridge client");
         Properties config = new Properties();
         config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
         config.setProperty(DistributionConfig.LOCATORS_NAME, "");
-        getSystem(config);
+        properties = config;
+        DistributedSystem s = getSystem(config);
         AttributesFactory factory = new AttributesFactory();
-        factory.setScope(Scope.LOCAL);
-        ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, 2, null);
+        Pool pool = ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, 2, null);
         createRegion(name, factory.create());
         assertNotNull(getRootRegion().getSubregion(name));
+        assertTrue(s == system); // see geode-1078
         return getMemberId();
       }
     };
@@ -1087,7 +1096,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       }
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] assert server detected client join");
+    System.out.println("[testClientMembershipEventsInServer] assert server detected client join");
     assertTrue(fired[JOINED]);
     assertEquals(member[JOINED] + " should equal " + clientMember,
       clientMember, member[JOINED]);
@@ -1108,7 +1117,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     
     vm0.invoke(new SerializableRunnable("Stop bridge client") {
       public void run() {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] Stop bridge client");
+        System.out.println("[testClientMembershipEventsInServer] Stop bridge client");
         getRootRegion().getSubregion(name).close();
         Map m = PoolManager.getAll();
         Iterator mit = m.values().iterator();
@@ -1125,7 +1134,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       }
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] assert server detected client left");
+    System.out.println("[testClientMembershipEventsInServer] assert server detected client left");
     assertFalse(fired[JOINED]);
     assertNull(member[JOINED]);
     assertNull(memberId[JOINED]);
@@ -1149,7 +1158,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       }
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] assert server detected client re-join");
+    System.out.println("[testClientMembershipEventsInServer] assert server detected client re-join");
     assertTrue(fired[JOINED]);
     assertEquals(clientMember, member[JOINED]);
     assertEquals(clientMemberId, memberId[JOINED]);
@@ -1170,7 +1179,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     try {
       vm0.invoke(new SerializableRunnable("Stop bridge client") {
         public void run() {
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] Stop bridge client");
+          System.out.println("[testClientMembershipEventsInServer] Stop bridge client");
           getRootRegion().getSubregion(name).close();
           Map m = PoolManager.getAll();
           Iterator mit = m.values().iterator();
@@ -1187,7 +1196,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
         }
       }
       
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] assert server detected client crashed");
+      System.out.println("[testClientMembershipEventsInServer] assert server detected client crashed");
       assertFalse(fired[JOINED]);
       assertNull(member[JOINED]);
       assertNull(memberId[JOINED]);
@@ -1253,6 +1262,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     Properties config = new Properties();
     config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
     config.setProperty(DistributionConfig.LOCATORS_NAME, "");
+    properties = config;
     getSystem(config);
     
     // assert that event is fired while connected
@@ -1284,6 +1294,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     resetArraysForTesting(fired, member, memberId, isClient);
     
     // assert that event is fired again after reconnecting
+    properties = config;
     InternalDistributedSystem sys = getSystem(config);
     assertTrue(sys.isConnected());
 
@@ -1310,7 +1321,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     IgnoredException.addIgnoredException("ConnectException");
 
     // create BridgeServer in controller vm...
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] Create BridgeServer");
+    System.out.println("[testGetConnectedClients] Create BridgeServer");
     getSystem();
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
@@ -1322,20 +1333,17 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     assertTrue(ports[0] != 0);
     String serverMemberId = getSystem().getDistributedMember().toString();
 
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] ports[0]=" + ports[0]);
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] serverMemberId=" + serverMemberId);
+    System.out.println("[testGetConnectedClients] ports[0]=" + ports[0]);
+    System.out.println("[testGetConnectedClients] serverMemberId=" + serverMemberId);
 
     final Host host = Host.getHost(0);
     SerializableCallable createPool =
     new SerializableCallable("Create connection pool") {
       public Object call() {
-        com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] create bridge client");
+        System.out.println("[testGetConnectedClients] create bridge client");
         properties = new Properties();
         properties.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
         properties.setProperty(DistributionConfig.LOCATORS_NAME, "");
-        // 11/30/2015 this test is periodically failing during distributedTest runs
-        // so we are setting the log-level to fine to figure out what's going on
-        properties.setProperty(DistributionConfig.LOG_LEVEL_NAME, "fine");
         getSystem(properties);
         AttributesFactory factory = new AttributesFactory();
         factory.setScope(Scope.LOCAL);
@@ -1407,7 +1415,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       vm.invoke(new CacheSerializableRunnable("Create bridge server") {
         public void run2() throws CacheException {
           // create BridgeServer in controller vm...
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedServers] Create BridgeServer");
+          System.out.println("[testGetConnectedServers] Create BridgeServer");
           getSystem();
           AttributesFactory factory = new AttributesFactory();
           factory.setScope(Scope.LOCAL);
@@ -1426,9 +1434,9 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
           
           assertTrue(testGetConnectedServers_port != 0);
       
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedServers] port=" + 
+          System.out.println("[testGetConnectedServers] port=" + 
             ports[whichVM]);
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedServers] serverMemberId=" + 
+          System.out.println("[testGetConnectedServers] serverMemberId=" + 
             getDistributedMember());
         }
       });
@@ -1436,10 +1444,11 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       assertTrue(ports[whichVM] != 0);
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedServers] create bridge client");
+    System.out.println("[testGetConnectedServers] create bridge client");
     Properties config = new Properties();
     config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
     config.setProperty(DistributionConfig.LOCATORS_NAME, "");
+    properties = config;
     getSystem(config);
     getCache();
     
@@ -1447,7 +1456,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     factory.setScope(Scope.LOCAL);
 
     for (int i = 0; i < ports.length; i++) {
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedServers] creating connectionpool for " + 
+      System.out.println("[testGetConnectedServers] creating connectionpool for " + 
         NetworkUtils.getServerHostName(host) + " " + ports[i]);
       int[] thisServerPorts = new int[] { ports[i] };
       ClientServerTestCase.configureConnectionPoolWithName(factory, NetworkUtils.getServerHostName(host), thisServerPorts, false, -1, -1, null,"pooly"+i);
@@ -1489,7 +1498,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     assertEquals(host.getVMCount(), connectedServers.size());
     for (Iterator iter = connectedServers.keySet().iterator(); iter.hasNext();) {
       String connectedServer = (String) iter.next();
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedServers]  value for connectedServer: " + 
+      System.out.println("[testGetConnectedServers]  value for connectedServer: " + 
                           connectedServers.get(connectedServer));
     }
   }
@@ -1522,7 +1531,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       vm.invoke(new CacheSerializableRunnable("Create bridge server") {
         public void run2() throws CacheException {
           // create BridgeServer in controller vm...
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetNotifiedClients] Create BridgeServer");
+          System.out.println("[testGetNotifiedClients] Create BridgeServer");
           getSystem();
           AttributesFactory factory = new AttributesFactory();
           Region region = createRegion(name, factory.create());
@@ -1540,9 +1549,9 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
           
           assertTrue(testGetNotifiedClients_port != 0);
       
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetNotifiedClients] port=" + 
+          System.out.println("[testGetNotifiedClients] port=" + 
             ports[whichVM]);
-          com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetNotifiedClients] serverMemberId=" + 
+          System.out.println("[testGetNotifiedClients] serverMemberId=" + 
             getMemberId());
         }
       });
@@ -1550,17 +1559,18 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
       assertTrue(ports[whichVM] != 0);
     }
     
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetNotifiedClients] create bridge client");
+    System.out.println("[testGetNotifiedClients] create bridge client");
     Properties config = new Properties();
     config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
     config.setProperty(DistributionConfig.LOCATORS_NAME, "");
-    getSystem(config);
+    properties = config;
+    getSystem();
     getCache();
     
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.LOCAL);
 
-    com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetNotifiedClients] creating connection pool");
+    System.out.println("[testGetNotifiedClients] creating connection pool");
     ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, -1, null);
     Region region = createRegion(name, factory.create());
     assertNotNull(getRootRegion().getSubregion(name));


[08/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunk.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunk.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunk.java
deleted file mode 100644
index 29e6956..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunk.java
+++ /dev/null
@@ -1,737 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.nio.ByteBuffer;
-
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.internal.DSCODE;
-import com.gemstone.gemfire.internal.HeapDataOutputStream;
-import com.gemstone.gemfire.internal.InternalDataSerializer;
-import com.gemstone.gemfire.internal.cache.EntryEventImpl;
-import com.gemstone.gemfire.internal.cache.RegionEntry;
-import com.gemstone.gemfire.internal.cache.RegionEntryContext;
-import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
-
-/**
-   * A chunk that stores a Java object.
-   * Currently the object stored in this chunk
-   * is always an entry value of a Region.
-   * Note: this class has a natural ordering that is inconsistent with equals.
-   * Instances of this class should have a short lifetime. We do not store references
-   * to it in the cache. Instead the memoryAddress is stored in a primitive field in
-   * the cache and if used it will then, if needed, create an instance of this class.
-   */
-  public class ObjectChunk extends OffHeapCachedDeserializable implements Comparable<ObjectChunk>, MemoryBlock {
-    /**
-     * The unsafe memory address of the first byte of this chunk
-     */
-    private final long memoryAddress;
-    
-    /**
-     * The useCount, chunkSize, dataSizeDelta, isSerialized, and isCompressed
-     * are all stored in off heap memory in a HEADER. This saves heap memory
-     * by using off heap.
-     */
-    public final static int OFF_HEAP_HEADER_SIZE = 4 + 4;
-    /**
-     * We need to smallest chunk to at least have enough room for a hdr
-     * and for an off heap ref (which is a long).
-     */
-    public final static int MIN_CHUNK_SIZE = OFF_HEAP_HEADER_SIZE + 8;
-    /**
-     * int field.
-     * The number of bytes in this chunk.
-     */
-    private final static int CHUNK_SIZE_OFFSET = 0;
-    /**
-     * Volatile int field
-     * The upper two bits are used for the isSerialized
-     * and isCompressed flags.
-     * The next three bits are unused.
-     * The lower 3 bits of the most significant byte contains a magic number to help us detect
-     * if we are changing the ref count of an object that has been released.
-     * The next byte contains the dataSizeDelta.
-     * The number of bytes of logical data in this chunk.
-     * Since the number of bytes of logical data is always <= chunkSize
-     * and since chunkSize never changes, we have dataSize be
-     * a delta whose max value would be HUGE_MULTIPLE-1.
-     * The lower two bytes contains the use count.
-     */
-    final static int REF_COUNT_OFFSET = 4;
-    /**
-     * The upper two bits are used for the isSerialized
-     * and isCompressed flags.
-     */
-    final static int IS_SERIALIZED_BIT =    0x80000000;
-    final static int IS_COMPRESSED_BIT =    0x40000000;
-    // UNUSED 0x38000000
-    final static int MAGIC_MASK = 0x07000000;
-    final static int MAGIC_NUMBER = 0x05000000;
-    final static int DATA_SIZE_DELTA_MASK = 0x00ff0000;
-    final static int DATA_SIZE_SHIFT = 16;
-    final static int REF_COUNT_MASK =       0x0000ffff;
-    final static int MAX_REF_COUNT = 0xFFFF;
-    final static long FILL_PATTERN = 0x3c3c3c3c3c3c3c3cL;
-    final static byte FILL_BYTE = 0x3c;
-    
-    protected ObjectChunk(long memoryAddress, int chunkSize) {
-      SimpleMemoryAllocatorImpl.validateAddressAndSize(memoryAddress, chunkSize);
-      this.memoryAddress = memoryAddress;
-      setSize(chunkSize);
-      UnsafeMemoryChunk.writeAbsoluteIntVolatile(getMemoryAddress()+REF_COUNT_OFFSET, MAGIC_NUMBER);
-    }
-    public void readyForFree() {
-      UnsafeMemoryChunk.writeAbsoluteIntVolatile(getMemoryAddress()+REF_COUNT_OFFSET, 0);
-    }
-    public void readyForAllocation() {
-      if (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(getMemoryAddress()+REF_COUNT_OFFSET, 0, MAGIC_NUMBER)) {
-        throw new IllegalStateException("Expected 0 but found " + Integer.toHexString(UnsafeMemoryChunk.readAbsoluteIntVolatile(getMemoryAddress()+REF_COUNT_OFFSET)));
-      }
-    }
-    /**
-     * Should only be used by FakeChunk subclass
-     */
-    protected ObjectChunk() {
-      this.memoryAddress = 0L;
-    }
-    
-    /**
-     * Used to create a Chunk given an existing, already allocated,
-     * memoryAddress. The off heap header has already been initialized.
-     */
-    protected ObjectChunk(long memoryAddress) {
-      SimpleMemoryAllocatorImpl.validateAddress(memoryAddress);
-      this.memoryAddress = memoryAddress;
-    }
-    
-    protected ObjectChunk(ObjectChunk chunk) {
-      this.memoryAddress = chunk.memoryAddress;
-    }
-    
-    /**
-     * Throw an exception if this chunk is not allocated
-     */
-    public void checkIsAllocated() {
-      int originalBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
-      if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
-        throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
-      }
-    }
-    
-    public void incSize(int inc) {
-      setSize(getSize()+inc);
-    }
-    
-    protected void beforeReturningToAllocator() {
-      
-    }
-
-    @Override
-    public int getSize() {
-      return getSize(this.memoryAddress);
-    }
-
-    public void setSize(int size) {
-      setSize(this.memoryAddress, size);
-    }
-
-    public long getMemoryAddress() {
-      return this.memoryAddress;
-    }
-    
-    public int getDataSize() {
-      /*int dataSizeDelta = UnsafeMemoryChunk.readAbsoluteInt(this.memoryAddress+REF_COUNT_OFFSET);
-      dataSizeDelta &= DATA_SIZE_DELTA_MASK;
-      dataSizeDelta >>= DATA_SIZE_SHIFT;
-      return getSize() - dataSizeDelta;*/
-      return getDataSize(this.memoryAddress);
-    }
-    
-    protected static int getDataSize(long memoryAdress) {
-      int dataSizeDelta = UnsafeMemoryChunk.readAbsoluteInt(memoryAdress+REF_COUNT_OFFSET);
-      dataSizeDelta &= DATA_SIZE_DELTA_MASK;
-      dataSizeDelta >>= DATA_SIZE_SHIFT;
-      return getSize(memoryAdress) - dataSizeDelta;
-    }
-    
-    protected long getBaseDataAddress() {
-      return this.memoryAddress+OFF_HEAP_HEADER_SIZE;
-    }
-    protected int getBaseDataOffset() {
-      return 0;
-    }
-    
-    /**
-     * Creates and returns a direct ByteBuffer that contains the contents of this Chunk.
-     * Note that the returned ByteBuffer has a reference to this chunk's
-     * off-heap address so it can only be used while this Chunk is retained.
-     * @return the created direct byte buffer or null if it could not be created.
-     */
-    @Unretained
-    public ByteBuffer createDirectByteBuffer() {
-      return basicCreateDirectByteBuffer(getBaseDataAddress(), getDataSize());
-    }
-    @Override
-    public void sendTo(DataOutput out) throws IOException {
-      if (!this.isCompressed() && out instanceof HeapDataOutputStream) {
-        ByteBuffer bb = createDirectByteBuffer();
-        if (bb != null) {
-          HeapDataOutputStream hdos = (HeapDataOutputStream) out;
-          if (this.isSerialized()) {
-            hdos.write(bb);
-          } else {
-            hdos.writeByte(DSCODE.BYTE_ARRAY);
-            InternalDataSerializer.writeArrayLength(bb.remaining(), hdos);
-            hdos.write(bb);
-          }
-          return;
-        }
-      }
-      super.sendTo(out);
-    }
-    
-    @Override
-    public void sendAsByteArray(DataOutput out) throws IOException {
-      if (!isCompressed() && out instanceof HeapDataOutputStream) {
-        ByteBuffer bb = createDirectByteBuffer();
-        if (bb != null) {
-          HeapDataOutputStream hdos = (HeapDataOutputStream) out;
-          InternalDataSerializer.writeArrayLength(bb.remaining(), hdos);
-          hdos.write(bb);
-          return;
-        }
-      }
-      super.sendAsByteArray(out);
-    }
-       
-    private static volatile Class dbbClass = null;
-    private static volatile Constructor dbbCtor = null;
-    private static volatile boolean dbbCreateFailed = false;
-    
-    /**
-     * @return the created direct byte buffer or null if it could not be created.
-     */
-    private static ByteBuffer basicCreateDirectByteBuffer(long baseDataAddress, int dataSize) {
-      if (dbbCreateFailed) {
-        return null;
-      }
-      Constructor ctor = dbbCtor;
-      if (ctor == null) {
-        Class c = dbbClass;
-        if (c == null) {
-          try {
-            c = Class.forName("java.nio.DirectByteBuffer");
-          } catch (ClassNotFoundException e) {
-            //throw new IllegalStateException("Could not find java.nio.DirectByteBuffer", e);
-            dbbCreateFailed = true;
-            dbbAddressFailed = true;
-            return null;
-          }
-          dbbClass = c;
-        }
-        try {
-          ctor = c.getDeclaredConstructor(long.class, int.class);
-        } catch (NoSuchMethodException | SecurityException e) {
-          //throw new IllegalStateException("Could not get constructor DirectByteBuffer(long, int)", e);
-          dbbClass = null;
-          dbbCreateFailed = true;
-          return null;
-        }
-        ctor.setAccessible(true);
-        dbbCtor = ctor;
-      }
-      try {
-        return (ByteBuffer)ctor.newInstance(baseDataAddress, dataSize);
-      } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-        //throw new IllegalStateException("Could not create an instance using DirectByteBuffer(long, int)", e);
-        dbbClass = null;
-        dbbCtor = null;
-        dbbCreateFailed = true;
-        return null;
-      }
-    }
-    private static volatile Method dbbAddressMethod = null;
-    private static volatile boolean dbbAddressFailed = false;
-    
-    /**
-     * Returns the address of the Unsafe memory for the first byte of a direct ByteBuffer.
-     * If the buffer is not direct or the address can not be obtained return 0.
-     */
-    public static long getDirectByteBufferAddress(ByteBuffer bb) {
-      if (!bb.isDirect()) {
-        return 0L;
-      }
-      if (dbbAddressFailed) {
-        return 0L;
-      }
-      Method m = dbbAddressMethod;
-      if (m == null) {
-        Class c = dbbClass;
-        if (c == null) {
-          try {
-            c = Class.forName("java.nio.DirectByteBuffer");
-          } catch (ClassNotFoundException e) {
-            //throw new IllegalStateException("Could not find java.nio.DirectByteBuffer", e);
-            dbbCreateFailed = true;
-            dbbAddressFailed = true;
-            return 0L;
-          }
-          dbbClass = c;
-        }
-        try {
-          m = c.getDeclaredMethod("address");
-        } catch (NoSuchMethodException | SecurityException e) {
-          //throw new IllegalStateException("Could not get method DirectByteBuffer.address()", e);
-          dbbClass = null;
-          dbbAddressFailed = true;
-          return 0L;
-        }
-        m.setAccessible(true);
-        dbbAddressMethod = m;
-      }
-      try {
-        return (Long)m.invoke(bb);
-      } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-        //throw new IllegalStateException("Could not create an invoke DirectByteBuffer.address()", e);
-        dbbClass = null;
-        dbbAddressMethod = null;
-        dbbAddressFailed = true;
-        return 0L;
-      }
-    }
-    /**
-     * Returns an address that can be used with unsafe apis to access this chunks memory.
-     * @param offset the offset from this chunk's first byte of the byte the returned address should point to. Must be >= 0.
-     * @param size the number of bytes that will be read using the returned address. Assertion will use this to verify that all the memory accessed belongs to this chunk. Must be > 0.
-     * @return a memory address that can be used with unsafe apis
-     */
-    public long getUnsafeAddress(int offset, int size) {
-      assert offset >= 0 && offset + size <= getDataSize(): "Offset=" + offset + ",size=" + size + ",dataSize=" + getDataSize() + ", chunkSize=" + getSize() + ", but offset + size must be <= " + getDataSize();
-      assert size > 0;
-      long result = getBaseDataAddress() + offset;
-      // validateAddressAndSizeWithinSlab(result, size);
-      return result;
-    }
-    
-    @Override
-    public byte readByte(int offset) {
-      assert offset < getDataSize();
-      return UnsafeMemoryChunk.readAbsoluteByte(getBaseDataAddress() + offset);
-    }
-
-    @Override
-    public void writeByte(int offset, byte value) {
-      assert offset < getDataSize();
-      UnsafeMemoryChunk.writeAbsoluteByte(getBaseDataAddress() + offset, value);
-    }
-
-    @Override
-    public void readBytes(int offset, byte[] bytes) {
-      readBytes(offset, bytes, 0, bytes.length);
-    }
-
-    @Override
-    public void writeBytes(int offset, byte[] bytes) {
-      writeBytes(offset, bytes, 0, bytes.length);
-    }
-
-    public long getAddressForReading(int offset, int size) {
-      //delegate to getUnsafeAddress - as both the methods does return the memory address from given offset
-      return getUnsafeAddress(offset, size);
-    }
-    
-    @Override
-    public void readBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-      assert offset+size <= getDataSize();
-      UnsafeMemoryChunk.readAbsoluteBytes(getBaseDataAddress() + offset, bytes, bytesOffset, size);
-    }
-
-    @Override
-    public void writeBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-      assert offset+size <= getDataSize();
-      UnsafeMemoryChunk.writeAbsoluteBytes(getBaseDataAddress() + offset, bytes, bytesOffset, size);
-    }
-    
-    @Override
-    public void release() {
-      release(this.memoryAddress);
-     }
-
-    @Override
-    public int compareTo(ObjectChunk o) {
-      int result = Integer.signum(getSize() - o.getSize());
-      if (result == 0) {
-        // For the same sized chunks we really don't care about their order
-        // but we need compareTo to only return 0 if the two chunks are identical
-        result = Long.signum(getMemoryAddress() - o.getMemoryAddress());
-      }
-      return result;
-    }
-    
-    @Override
-    public boolean equals(Object o) {
-      if (o instanceof ObjectChunk) {
-        return getMemoryAddress() == ((ObjectChunk) o).getMemoryAddress();
-      }
-      return false;
-    }
-    
-    @Override
-    public int hashCode() {
-      long value = this.getMemoryAddress();
-      return (int)(value ^ (value >>> 32));
-    }
-
-    // OffHeapCachedDeserializable methods 
-    
-    @Override
-    public void setSerializedValue(byte[] value) {
-      writeBytes(0, value);
-    }
-    
-    public byte[] getDecompressedBytes(RegionEntryContext context) {
-      byte[] result = getCompressedBytes();
-      long time = context.getCachePerfStats().startDecompression();
-      result = context.getCompressor().decompress(result);
-      context.getCachePerfStats().endDecompression(time);      
-      return result;
-    }
-    
-    /**
-     * Returns the raw possibly compressed bytes of this chunk
-     */
-    public byte[] getCompressedBytes() {
-      byte[] result = new byte[getDataSize()];
-      readBytes(0, result);
-      //debugLog("reading", true);
-      SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
-      return result;
-    }
-    protected byte[] getRawBytes() {
-      byte[] result = getCompressedBytes();
-      // TODO OFFHEAP: change the following to assert !isCompressed();
-      if (isCompressed()) {
-        throw new UnsupportedOperationException();
-      }
-      return result;
-    }
-
-    @Override
-    public byte[] getSerializedValue() {
-      byte [] result = getRawBytes();
-      if (!isSerialized()) {
-        // The object is a byte[]. So we need to make it look like a serialized byte[] in our result
-        result = EntryEventImpl.serialize(result);
-      }
-      return result;
-    }
-    
-    @Override
-    public Object getDeserializedValue(Region r, RegionEntry re) {
-      if (isSerialized()) {
-        // TODO OFFHEAP: debug deserializeChunk
-        return EntryEventImpl.deserialize(getRawBytes());
-        //assert !isCompressed();
-        //return EntryEventImpl.deserializeChunk(this);
-      } else {
-        return getRawBytes();
-      }
-    }
-    
-    /**
-     * We want this to include memory overhead so use getSize() instead of getDataSize().
-     */
-    @Override
-    public int getSizeInBytes() {
-      // Calling getSize includes the off heap header size.
-      // We do not add anything to this since the size of the reference belongs to the region entry size
-      // not the size of this object.
-      return getSize();
-    }
-
-    @Override
-    public int getValueSizeInBytes() {
-      return getDataSize();
-    }
-
-    @Override
-    public void copyBytes(int src, int dst, int size) {
-      throw new UnsupportedOperationException("Implement if used");
-//      assert src+size <= getDataSize();
-//      assert dst+size < getDataSize();
-//      getSlabs()[this.getSlabIdx()].copyBytes(getBaseDataAddress()+src, getBaseDataAddress()+dst, size);
-    }
-
-    @Override
-    public boolean isSerialized() {
-      return (UnsafeMemoryChunk.readAbsoluteInt(this.memoryAddress+REF_COUNT_OFFSET) & IS_SERIALIZED_BIT) != 0;
-    }
-
-    @Override
-    public boolean isCompressed() {
-      return (UnsafeMemoryChunk.readAbsoluteInt(this.memoryAddress+REF_COUNT_OFFSET) & IS_COMPRESSED_BIT) != 0;
-    }
-
-    @Override
-    public boolean retain() {
-      return retain(this.memoryAddress);
-    }
-
-    @Override
-    public int getRefCount() {
-      return getRefCount(this.memoryAddress);
-    }
-
-    public static int getSize(long memAddr) {
-      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
-      return UnsafeMemoryChunk.readAbsoluteInt(memAddr+CHUNK_SIZE_OFFSET);
-    }
-    public static void setSize(long memAddr, int size) {
-      SimpleMemoryAllocatorImpl.validateAddressAndSize(memAddr, size);
-      UnsafeMemoryChunk.writeAbsoluteInt(memAddr+CHUNK_SIZE_OFFSET, size);
-    }
-    public static long getNext(long memAddr) {
-      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
-      return UnsafeMemoryChunk.readAbsoluteLong(memAddr+OFF_HEAP_HEADER_SIZE);
-    }
-    public static void setNext(long memAddr, long next) {
-      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
-      UnsafeMemoryChunk.writeAbsoluteLong(memAddr+OFF_HEAP_HEADER_SIZE, next);
-    }
-    
-    /**
-     * Fills the chunk with a repeated byte fill pattern.
-     * @param baseAddress the starting address for a {@link ObjectChunk}.
-     */
-    public static void fill(long baseAddress) {
-      long startAddress = baseAddress + MIN_CHUNK_SIZE;
-      int size = getSize(baseAddress) - MIN_CHUNK_SIZE;
-      
-      UnsafeMemoryChunk.fill(startAddress, size, FILL_BYTE);
-    }
-    
-    /**
-     * Validates that the fill pattern for this chunk has not been disturbed.  This method
-     * assumes the TINY_MULTIPLE is 8 bytes.
-     * @throws IllegalStateException when the pattern has been violated.
-     */
-    public void validateFill() {
-      assert FreeListManager.TINY_MULTIPLE == 8;
-      
-      long startAddress = getMemoryAddress() + MIN_CHUNK_SIZE;
-      int size = getSize() - MIN_CHUNK_SIZE;
-      
-      for(int i = 0;i < size;i += FreeListManager.TINY_MULTIPLE) {
-        if(UnsafeMemoryChunk.readAbsoluteLong(startAddress + i) != FILL_PATTERN) {
-          throw new IllegalStateException("Fill pattern violated for chunk " + getMemoryAddress() + " with size " + getSize());
-        }        
-      }
-    }
-
-    public void setSerialized(boolean isSerialized) {
-      if (isSerialized) {
-        int bits;
-        int originalBits;
-        do {
-          originalBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
-          if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
-            throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
-          }
-          bits = originalBits | IS_SERIALIZED_BIT;
-        } while (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, originalBits, bits));
-      }
-    }
-    public void setCompressed(boolean isCompressed) {
-      if (isCompressed) {
-        int bits;
-        int originalBits;
-        do {
-          originalBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
-          if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
-            throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
-          }
-          bits = originalBits | IS_COMPRESSED_BIT;
-        } while (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, originalBits, bits));
-      }
-    }
-    public void setDataSize(int dataSize) { // KIRK
-      assert dataSize <= getSize();
-      int delta = getSize() - dataSize;
-      assert delta <= (DATA_SIZE_DELTA_MASK >> DATA_SIZE_SHIFT);
-      delta <<= DATA_SIZE_SHIFT;
-      int bits;
-      int originalBits;
-      do {
-        originalBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
-        if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
-          throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
-        }
-        bits = originalBits;
-        bits &= ~DATA_SIZE_DELTA_MASK; // clear the old dataSizeDelta bits
-        bits |= delta; // set the dataSizeDelta bits to the new delta value
-      } while (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, originalBits, bits));
-    }
-    
-    public void initializeUseCount() {
-      int rawBits;
-      do {
-        rawBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
-        if ((rawBits&MAGIC_MASK) != MAGIC_NUMBER) {
-          throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(rawBits));
-        }
-        int uc = rawBits & REF_COUNT_MASK;
-        if (uc != 0) {
-          throw new IllegalStateException("Expected use count to be zero but it was: " + uc + " rawBits=0x" + Integer.toHexString(rawBits));
-        }
-      } while (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, rawBits, rawBits+1));
-    }
-
-    public static int getRefCount(long memAddr) {
-      return UnsafeMemoryChunk.readAbsoluteInt(memAddr+REF_COUNT_OFFSET) & REF_COUNT_MASK;
-    }
-
-    public static boolean retain(long memAddr) {
-      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
-      int uc;
-      int rawBits;
-      int retryCount = 0;
-      do {
-        rawBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(memAddr+REF_COUNT_OFFSET);
-        if ((rawBits&MAGIC_MASK) != MAGIC_NUMBER) {
-          // same as uc == 0
-          // TODO MAGIC_NUMBER rethink its use and interaction with compactor fragments
-          return false;
-        }
-        uc = rawBits & REF_COUNT_MASK;
-        if (uc == MAX_REF_COUNT) {
-          throw new IllegalStateException("Maximum use count exceeded. rawBits=" + Integer.toHexString(rawBits));
-        } else if (uc == 0) {
-          return false;
-        }
-        retryCount++;
-        if (retryCount > 1000) {
-          throw new IllegalStateException("tried to write " + (rawBits+1) + " to @" + Long.toHexString(memAddr) + " 1,000 times.");
-        }
-      } while (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(memAddr+REF_COUNT_OFFSET, rawBits, rawBits+1));
-      //debugLog("use inced ref count " + (uc+1) + " @" + Long.toHexString(memAddr), true);
-      if (ReferenceCountHelper.trackReferenceCounts()) {
-        ReferenceCountHelper.refCountChanged(memAddr, false, uc+1);
-      }
-
-      return true;
-    }
-    public static void release(final long memAddr) {
-      release(memAddr, null);
-    }
-    static void release(final long memAddr, FreeListManager freeListManager) {
-      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
-      int newCount;
-      int rawBits;
-      boolean returnToAllocator;
-      do {
-        returnToAllocator = false;
-        rawBits = UnsafeMemoryChunk.readAbsoluteIntVolatile(memAddr+REF_COUNT_OFFSET);
-        if ((rawBits&MAGIC_MASK) != MAGIC_NUMBER) {
-          String msg = "It looks like off heap memory @" + Long.toHexString(memAddr) + " was already freed. rawBits=" + Integer.toHexString(rawBits) + " history=" + ReferenceCountHelper.getFreeRefCountInfo(memAddr);
-          //debugLog(msg, true);
-          throw new IllegalStateException(msg);
-        }
-        int curCount = rawBits&REF_COUNT_MASK;
-        if ((curCount) == 0) {
-          //debugLog("too many frees @" + Long.toHexString(memAddr), true);
-          throw new IllegalStateException("Memory has already been freed." + " history=" + ReferenceCountHelper.getFreeRefCountInfo(memAddr) /*+ System.identityHashCode(this)*/);
-        }
-        if (curCount == 1) {
-          newCount = 0; // clear the use count, bits, and the delta size since it will be freed.
-          returnToAllocator = true;
-        } else {
-          newCount = rawBits-1;
-        }
-      } while (!UnsafeMemoryChunk.writeAbsoluteIntVolatile(memAddr+REF_COUNT_OFFSET, rawBits, newCount));
-      //debugLog("free deced ref count " + (newCount&USE_COUNT_MASK) + " @" + Long.toHexString(memAddr), true);
-      if (returnToAllocator ) {
-       if (ReferenceCountHelper.trackReferenceCounts()) {
-          if (ReferenceCountHelper.trackFreedReferenceCounts()) {
-            ReferenceCountHelper.refCountChanged(memAddr, true, newCount&REF_COUNT_MASK);
-          }
-          ReferenceCountHelper.freeRefCountInfo(memAddr);
-        }
-        if (freeListManager == null) {
-          freeListManager = SimpleMemoryAllocatorImpl.getAllocator().getFreeListManager();
-        }
-        freeListManager.free(memAddr);
-      } else {
-        if (ReferenceCountHelper.trackReferenceCounts()) {
-          ReferenceCountHelper.refCountChanged(memAddr, true, newCount&REF_COUNT_MASK);
-        }
-      }
-    }
-    
-    @Override
-    public String toString() {
-      return toStringForOffHeapByteSource();
-      // This old impl is not safe because it calls getDeserializedForReading and we have code that call toString that does not inc the refcount.
-      // Also if this Chunk is compressed we don't know how to decompress it.
-      //return super.toString() + ":<dataSize=" + getDataSize() + " refCount=" + getRefCount() + " addr=" + getMemoryAddress() + " storedObject=" + getDeserializedForReading() + ">";
-    }
-    
-    protected String toStringForOffHeapByteSource() {
-      return super.toString() + ":<dataSize=" + getDataSize() + " refCount=" + getRefCount() + " addr=" + Long.toHexString(getMemoryAddress()) + ">";
-    }
-    
-    @Override
-    public State getState() {
-      if (getRefCount() > 0) {
-        return State.ALLOCATED;
-      } else {
-        return State.DEALLOCATED;
-      }
-    }
-    @Override
-    public MemoryBlock getNextBlock() {
-      throw new UnsupportedOperationException();
-    }
-    @Override
-    public int getBlockSize() {
-      return getSize();
-    }
-    @Override
-    public int getSlabId() {
-      throw new UnsupportedOperationException();
-    }
-    @Override
-    public int getFreeListId() {
-      return -1;
-    }
-    @Override
-    public String getDataType() {
-      return null;
-    }
-    @Override
-    public Object getDataValue() {
-      return null;
-    }
-    public ObjectChunk slice(int position, int limit) {
-      return new ObjectChunkSlice(this, position, limit);
-    }
-  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSlice.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSlice.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSlice.java
deleted file mode 100644
index 3d6bf57..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSlice.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * Represents a slice of an ObjectChunk.
- * A slice is a subsequence of the bytes stored in an ObjectChunk.
- */
-public class ObjectChunkSlice extends ObjectChunk {
-  private final int offset;
-  private final int capacity;
-  public ObjectChunkSlice(ObjectChunk objectChunk, int position, int limit) {
-    super(objectChunk);
-    this.offset = objectChunk.getBaseDataOffset() + position;
-    this.capacity = limit - position;
-  }
-  @Override
-  public int getDataSize() {
-    return this.capacity;
-  }
-  
-  @Override
-  protected long getBaseDataAddress() {
-    return super.getBaseDataAddress() + this.offset;
-  }
-  @Override
-  protected int getBaseDataOffset() {
-    return this.offset;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapForm.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapForm.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapForm.java
deleted file mode 100644
index 5020c7a..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapForm.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * Used to keep the heapForm around while an operation is still in progress.
- * This allows the operation to access the serialized heap form instead of copying
- * it from offheap. See bug 48135.
- */
-public class ObjectChunkWithHeapForm extends ObjectChunk {
-  private final byte[] heapForm;
-  
-  public ObjectChunkWithHeapForm(ObjectChunk chunk, byte[] heapForm) {
-    super(chunk);
-    this.heapForm = heapForm;
-  }
-
-  @Override
-  protected byte[] getRawBytes() {
-    return this.heapForm;
-  }
-  
-  public ObjectChunk getChunkWithoutHeapForm() {
-    return new ObjectChunk(this);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapCachedDeserializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapCachedDeserializable.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapCachedDeserializable.java
deleted file mode 100644
index bd380e2..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapCachedDeserializable.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.internal.DSCODE;
-import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
-import com.gemstone.gemfire.internal.cache.EntryBits;
-import com.gemstone.gemfire.internal.cache.RegionEntry;
-import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
-
-/**
- * This abstract class is intended to be used by {@link MemoryChunk} implementations that also want
- * to be a CachedDeserializable.
- * 
- * @author darrel
- * @since 9.0
- */
-public abstract class OffHeapCachedDeserializable extends AbstractStoredObject implements MemoryChunkWithRefCount {
-  public abstract void setSerializedValue(byte[] value);
-  @Override
-  public abstract byte[] getSerializedValue();
-  @Override
-  public abstract int getSizeInBytes();
-  @Override
-  public abstract int getValueSizeInBytes();
-  @Override
-  public abstract Object getDeserializedValue(Region r, RegionEntry re);
-
-  @Override
-  public void fillSerializedValue(BytesAndBitsForCompactor wrapper, byte userBits) {
-    if (isSerialized()) {
-      userBits = EntryBits.setSerialized(userBits, true);
-    }
-    wrapper.setChunkData((ObjectChunk) this, userBits);
-  }
-  
-  String getShortClassName() {
-    String cname = getClass().getName();
-    return cname.substring(getClass().getPackage().getName().length()+1);
-  }
-
-  @Override
-  public String toString() {
-    return getShortClassName()+"@"+this.hashCode();
-  }
-  public boolean checkDataEquals(@Unretained OffHeapCachedDeserializable other) {
-    if (this == other) {
-      return true;
-    }
-    if (isSerialized() != other.isSerialized()) {
-      return false;
-    }
-    int mySize = getValueSizeInBytes();
-    if (mySize != other.getValueSizeInBytes()) {
-      return false;
-    }
-    // We want to be able to do this operation without copying any of the data into the heap.
-    // Hopefully the jvm is smart enough to use our stack for this short lived array.
-    final byte[] dataCache1 = new byte[1024];
-    final byte[] dataCache2 = new byte[dataCache1.length];
-    // TODO OFFHEAP: no need to copy to heap. Just get the address of each and compare each byte.
-    int i;
-    // inc it twice since we are reading two different off-heap objects
-    SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
-    SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
-    for (i=0; i < mySize-(dataCache1.length-1); i+=dataCache1.length) {
-      this.readBytes(i, dataCache1);
-      other.readBytes(i, dataCache2);
-      for (int j=0; j < dataCache1.length; j++) {
-        if (dataCache1[j] != dataCache2[j]) {
-          return false;
-        }
-      }
-    }
-    int bytesToRead = mySize-i;
-    if (bytesToRead > 0) {
-      // need to do one more read which will be less than dataCache.length
-      this.readBytes(i, dataCache1, 0, bytesToRead);
-      other.readBytes(i, dataCache2, 0, bytesToRead);
-      for (int j=0; j < bytesToRead; j++) {
-        if (dataCache1[j] != dataCache2[j]) {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-  
-  public boolean isSerializedPdxInstance() {
-    byte dsCode = this.readByte(0);
-    return dsCode == DSCODE.PDX || dsCode == DSCODE.PDX_ENUM || dsCode == DSCODE.PDX_INLINE_ENUM;
-  }
-  
-  public boolean checkDataEquals(byte[] serializedObj) {
-    // caller was responsible for checking isSerialized
-    int mySize = getValueSizeInBytes();
-    if (mySize != serializedObj.length) {
-      return false;
-    }
-    // We want to be able to do this operation without copying any of the data into the heap.
-    // Hopefully the jvm is smart enough to use our stack for this short lived array.
-    // TODO OFFHEAP: compare as ByteBuffers?
-    final byte[] dataCache = new byte[1024];
-    int idx=0;
-    int i;
-    SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
-    for (i=0; i < mySize-(dataCache.length-1); i+=dataCache.length) {
-      this.readBytes(i, dataCache);
-      for (int j=0; j < dataCache.length; j++) {
-        if (dataCache[j] != serializedObj[idx++]) {
-          return false;
-        }
-      }
-    }
-    int bytesToRead = mySize-i;
-    if (bytesToRead > 0) {
-      // need to do one more read which will be less than dataCache.length
-      this.readBytes(i, dataCache, 0, bytesToRead);
-      for (int j=0; j < bytesToRead; j++) {
-        if (dataCache[j] != serializedObj[idx++]) {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapHelper.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapHelper.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapHelper.java
index 4845931..8989293 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapHelper.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapHelper.java
@@ -60,7 +60,7 @@ public class OffHeapHelper {
         return ohv.getDeserializedForReading();
       }
       } finally {
-        ohv.release();
+        release(ohv);
       }
     } else {
       return v;
@@ -93,8 +93,8 @@ public class OffHeapHelper {
    * @return true if release was done
    */
   public static boolean release(@Released Object o) {
-    if (o instanceof MemoryChunkWithRefCount) {
-      ((MemoryChunkWithRefCount) o).release();
+    if (o instanceof StoredObject) {
+      ((StoredObject) o).release();
       return true;
     } else {
       return false;
@@ -105,9 +105,14 @@ public class OffHeapHelper {
    * @return true if release was done
    */
   public static boolean releaseWithNoTracking(@Released Object o) {
-    if (o instanceof MemoryChunkWithRefCount) {
+    if (o instanceof StoredObject) {
+      StoredObject so = (StoredObject) o;
+      if (!so.hasRefCount()) {
+        so.release();
+        return true;
+      }
       ReferenceCountHelper.skipRefCountTracking();
-      ((MemoryChunkWithRefCount) o).release();
+      so.release();
       ReferenceCountHelper.unskipRefCountTracking();
       return true;
     } else {
@@ -120,9 +125,14 @@ public class OffHeapHelper {
    * @return true if release was done
    */
   public static boolean releaseAndTrackOwner(@Released final Object o, final Object owner) {
-    if (o instanceof MemoryChunkWithRefCount) {
+    if (o instanceof StoredObject) {
+      StoredObject so = (StoredObject) o;
+      if (!so.hasRefCount()) {
+        so.release();
+        return true;
+      }
       ReferenceCountHelper.setReferenceCountOwner(owner);
-      ((MemoryChunkWithRefCount) o).release();
+      so.release();
       ReferenceCountHelper.setReferenceCountOwner(null);
       return true;
     } else {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelper.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelper.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelper.java
index b62d97a..a502418 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelper.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelper.java
@@ -63,8 +63,7 @@ public class OffHeapRegionEntryHelper {
   };
   
   private static long objectToAddress(@Unretained Object v) {
-    if (v instanceof ObjectChunk) return ((ObjectChunk) v).getMemoryAddress();
-    if (v instanceof DataAsAddress) return ((DataAsAddress) v).getEncodedAddress();
+    if (v instanceof StoredObject) return ((StoredObject) v).getAddress();
     if (v == null) return NULL_ADDRESS;
     if (v == Token.TOMBSTONE) return TOMBSTONE_ADDRESS;
     if (v == Token.INVALID) return INVALID_ADDRESS;
@@ -90,7 +89,7 @@ public class OffHeapRegionEntryHelper {
   @Unretained @Retained
   public static Object addressToObject(@Released @Retained long ohAddress, boolean decompress, RegionEntryContext context) {
     if (isOffHeap(ohAddress)) {
-      @Unretained ObjectChunk chunk =  new ObjectChunk(ohAddress);
+      @Unretained OffHeapStoredObject chunk =  new OffHeapStoredObject(ohAddress);
       @Unretained Object result = chunk;
       if (decompress && chunk.isCompressed()) {
         try {
@@ -113,7 +112,7 @@ public class OffHeapRegionEntryHelper {
       }
       return result;
     } else if ((ohAddress & ENCODED_BIT) != 0) {
-      DataAsAddress daa = new DataAsAddress(ohAddress);
+      TinyStoredObject daa = new TinyStoredObject(ohAddress);
       Object result = daa;
       if (decompress && daa.isCompressed()) {
         byte[] decompressedBytes = daa.getDecompressedBytes(context);
@@ -131,8 +130,8 @@ public class OffHeapRegionEntryHelper {
     }
   }
   
-  public static int getSerializedLengthFromDataAsAddress(DataAsAddress dataAsAddress) {
-    final long ohAddress = dataAsAddress.getEncodedAddress();
+  public static int getSerializedLengthFromDataAsAddress(TinyStoredObject dataAsAddress) {
+    final long ohAddress = dataAsAddress.getAddress();
     
      if ((ohAddress & ENCODED_BIT) != 0) {     
       boolean isLong = (ohAddress & LONG_BIT) != 0;     
@@ -160,7 +159,7 @@ public class OffHeapRegionEntryHelper {
 
   private static void releaseAddress(@Released long ohAddress) {
     if (isOffHeap(ohAddress)) {
-      ObjectChunk.release(ohAddress);
+      OffHeapStoredObject.release(ohAddress);
     }
   }
   
@@ -184,7 +183,7 @@ public class OffHeapRegionEntryHelper {
     setValue(re, Token.REMOVED_PHASE2);
   }
 
-  public static void releaseEntry(@Unretained OffHeapRegionEntry re, @Released MemoryChunkWithRefCount expectedValue) {
+  public static void releaseEntry(@Unretained OffHeapRegionEntry re, @Released StoredObject expectedValue) {
     long oldAddress = objectToAddress(expectedValue);
     final long newAddress = objectToAddress(Token.REMOVED_PHASE2);
     if (re.setAddress(oldAddress, newAddress) || re.getAddress() != newAddress) {
@@ -273,6 +272,15 @@ public class OffHeapRegionEntryHelper {
       }
   }
 
+  static int decodeAddressToDataSize(long addr) {
+    assert (addr & ENCODED_BIT) != 0;
+    boolean isLong = (addr & LONG_BIT) != 0;
+    if (isLong) {
+      return 9;
+    }
+    return (int) ((addr & SIZE_MASK) >> SIZE_SHIFT);
+  }
+  
   static byte[] decodeAddressToBytes(long addr, boolean decompress, boolean compressedOk) {
     assert (addr & ENCODED_BIT) != 0;
     boolean isCompressed = (addr & COMPRESSED_BIT) != 0;
@@ -354,11 +362,11 @@ public class OffHeapRegionEntryHelper {
     int retryCount = 0;
     @Retained long addr = re.getAddress();
     while (isOffHeap(addr)) {
-      if (ObjectChunk.retain(addr)) {
+      if (OffHeapStoredObject.retain(addr)) {
         @Unretained long addr2 = re.getAddress();
         if (addr != addr2) {
           retryCount = 0;
-          ObjectChunk.release(addr);
+          OffHeapStoredObject.release(addr);
           // spin around and try again.
           addr = addr2;
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObject.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObject.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObject.java
new file mode 100644
index 0000000..68c9bdd
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObject.java
@@ -0,0 +1,718 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.internal.DSCODE;
+import com.gemstone.gemfire.internal.HeapDataOutputStream;
+import com.gemstone.gemfire.internal.InternalDataSerializer;
+import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
+import com.gemstone.gemfire.internal.cache.EntryBits;
+import com.gemstone.gemfire.internal.cache.EntryEventImpl;
+import com.gemstone.gemfire.internal.cache.RegionEntry;
+import com.gemstone.gemfire.internal.cache.RegionEntryContext;
+import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
+
+/**
+   * A class that stores a Java object in off-heap memory.
+   * See {@link AddressableMemoryManager} for how off-heap memory
+   * can be allocated, accessed, modified, and freed.
+   * Currently the object stored in this class
+   * is always an entry value of a Region.
+   * Note: this class has a natural ordering that is inconsistent with equals.
+   * Instances of this class should have a short lifetime. We do not store references
+   * to it in the cache. Instead the memoryAddress is stored in a primitive field in
+   * the cache and if used it will then, if needed, create an instance of this class.
+   */
+  public class OffHeapStoredObject extends AbstractStoredObject implements Comparable<OffHeapStoredObject>, MemoryBlock {
+    /**
+     * The memory address of the first byte of addressable memory that belongs to this object
+     */
+    private final long memoryAddress;
+    
+    /**
+     * The useCount, chunkSize, dataSizeDelta, isSerialized, and isCompressed
+     * are all stored in addressable memory in a HEADER. This saves heap memory
+     * by using off heap.
+     */
+    public final static int HEADER_SIZE = 4 + 4;
+    /**
+     * We need to smallest chunk to at least have enough room for a hdr
+     * and for an off heap ref (which is a long).
+     */
+    public final static int MIN_CHUNK_SIZE = HEADER_SIZE + 8;
+    /**
+     * int field.
+     * The number of bytes in this chunk.
+     */
+    private final static int CHUNK_SIZE_OFFSET = 0;
+    /**
+     * Volatile int field
+     * The upper two bits are used for the isSerialized
+     * and isCompressed flags.
+     * The next three bits are unused.
+     * The lower 3 bits of the most significant byte contains a magic number to help us detect
+     * if we are changing the ref count of an object that has been released.
+     * The next byte contains the dataSizeDelta.
+     * The number of bytes of logical data in this chunk.
+     * Since the number of bytes of logical data is always <= chunkSize
+     * and since chunkSize never changes, we have dataSize be
+     * a delta whose max value would be HUGE_MULTIPLE-1.
+     * The lower two bytes contains the use count.
+     */
+    final static int REF_COUNT_OFFSET = 4;
+    /**
+     * The upper two bits are used for the isSerialized
+     * and isCompressed flags.
+     */
+    final static int IS_SERIALIZED_BIT =    0x80000000;
+    final static int IS_COMPRESSED_BIT =    0x40000000;
+    // UNUSED 0x38000000
+    final static int MAGIC_MASK = 0x07000000;
+    final static int MAGIC_NUMBER = 0x05000000;
+    final static int DATA_SIZE_DELTA_MASK = 0x00ff0000;
+    final static int DATA_SIZE_SHIFT = 16;
+    final static int REF_COUNT_MASK =       0x0000ffff;
+    final static int MAX_REF_COUNT = 0xFFFF;
+    final static long FILL_PATTERN = 0x3c3c3c3c3c3c3c3cL;
+    final static byte FILL_BYTE = 0x3c;
+    
+    protected OffHeapStoredObject(long memoryAddress, int chunkSize) {
+      SimpleMemoryAllocatorImpl.validateAddressAndSize(memoryAddress, chunkSize);
+      this.memoryAddress = memoryAddress;
+      setSize(chunkSize);
+      AddressableMemoryManager.writeIntVolatile(getAddress()+REF_COUNT_OFFSET, MAGIC_NUMBER);
+    }
+    public void readyForFree() {
+      AddressableMemoryManager.writeIntVolatile(getAddress()+REF_COUNT_OFFSET, 0);
+    }
+    public void readyForAllocation() {
+      if (!AddressableMemoryManager.writeIntVolatile(getAddress()+REF_COUNT_OFFSET, 0, MAGIC_NUMBER)) {
+        throw new IllegalStateException("Expected 0 but found " + Integer.toHexString(AddressableMemoryManager.readIntVolatile(getAddress()+REF_COUNT_OFFSET)));
+      }
+    }
+    /**
+     * Should only be used by FakeChunk subclass
+     */
+    protected OffHeapStoredObject() {
+      this.memoryAddress = 0L;
+    }
+    
+    /**
+     * Used to create a Chunk given an existing, already allocated,
+     * memoryAddress. The off heap header has already been initialized.
+     */
+    protected OffHeapStoredObject(long memoryAddress) {
+      SimpleMemoryAllocatorImpl.validateAddress(memoryAddress);
+      this.memoryAddress = memoryAddress;
+    }
+    
+    protected OffHeapStoredObject(OffHeapStoredObject chunk) {
+      this.memoryAddress = chunk.memoryAddress;
+    }
+    
+    @Override
+    public void fillSerializedValue(BytesAndBitsForCompactor wrapper, byte userBits) {
+      if (isSerialized()) {
+        userBits = EntryBits.setSerialized(userBits, true);
+      }
+      wrapper.setOffHeapData(this, userBits);
+    }
+    
+    String getShortClassName() {
+      String cname = getClass().getName();
+      return cname.substring(getClass().getPackage().getName().length()+1);
+    }
+
+    @Override
+    public boolean checkDataEquals(@Unretained StoredObject so) {
+      if (this == so) {
+        return true;
+      }
+      if (isSerialized() != so.isSerialized()) {
+        return false;
+      }
+      int mySize = getValueSizeInBytes();
+      if (mySize != so.getValueSizeInBytes()) {
+        return false;
+      }
+      if (!(so instanceof OffHeapStoredObject)) {
+        return false;
+      }
+      OffHeapStoredObject other = (OffHeapStoredObject) so;
+      if (getAddress() == other.getAddress()) {
+        return true;
+      }
+      // We want to be able to do this operation without copying any of the data into the heap.
+      // Hopefully the jvm is smart enough to use our stack for this short lived array.
+      final byte[] dataCache1 = new byte[1024];
+      final byte[] dataCache2 = new byte[dataCache1.length];
+      // TODO OFFHEAP: no need to copy to heap. Just get the address of each and compare each byte. No need to call incReads when reading from address.
+      int i;
+      // inc it twice since we are reading two different objects
+      SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
+      SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
+      for (i=0; i < mySize-(dataCache1.length-1); i+=dataCache1.length) {
+        this.readDataBytes(i, dataCache1);
+        other.readDataBytes(i, dataCache2);
+        for (int j=0; j < dataCache1.length; j++) {
+          if (dataCache1[j] != dataCache2[j]) {
+            return false;
+          }
+        }
+      }
+      int bytesToRead = mySize-i;
+      if (bytesToRead > 0) {
+        // need to do one more read which will be less than dataCache.length
+        this.readDataBytes(i, dataCache1, 0, bytesToRead);
+        other.readDataBytes(i, dataCache2, 0, bytesToRead);
+        for (int j=0; j < bytesToRead; j++) {
+          if (dataCache1[j] != dataCache2[j]) {
+            return false;
+          }
+        }
+      }
+      return true;
+    }
+    
+    @Override
+    public boolean checkDataEquals(byte[] serializedObj) {
+      // caller was responsible for checking isSerialized
+      int mySize = getValueSizeInBytes();
+      if (mySize != serializedObj.length) {
+        return false;
+      }
+      // We want to be able to do this operation without copying any of the data into the heap.
+      // Hopefully the jvm is smart enough to use our stack for this short lived array.
+      // TODO OFFHEAP: no need to copy to heap. Just get the address of each and compare each byte. No need to call incReads when reading from address.
+      final byte[] dataCache = new byte[1024];
+      int idx=0;
+      int i;
+      SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
+      for (i=0; i < mySize-(dataCache.length-1); i+=dataCache.length) {
+        this.readDataBytes(i, dataCache);
+        for (int j=0; j < dataCache.length; j++) {
+          if (dataCache[j] != serializedObj[idx++]) {
+            return false;
+          }
+        }
+      }
+      int bytesToRead = mySize-i;
+      if (bytesToRead > 0) {
+        // need to do one more read which will be less than dataCache.length
+        this.readDataBytes(i, dataCache, 0, bytesToRead);
+        for (int j=0; j < bytesToRead; j++) {
+          if (dataCache[j] != serializedObj[idx++]) {
+            return false;
+          }
+        }
+      }
+      return true;
+    }
+
+    
+    /**
+     * Throw an exception if this chunk is not allocated
+     */
+    public void checkIsAllocated() {
+      int originalBits = AddressableMemoryManager.readIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
+      if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
+        throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
+      }
+    }
+    
+    public void incSize(int inc) {
+      setSize(getSize()+inc);
+    }
+    
+    protected void beforeReturningToAllocator() {
+      
+    }
+
+    @Override
+    public int getSize() {
+      return getSize(this.memoryAddress);
+    }
+
+    public void setSize(int size) {
+      setSize(this.memoryAddress, size);
+    }
+
+    @Override
+    public long getAddress() {
+      return this.memoryAddress;
+    }
+    
+    @Override
+    public int getDataSize() {
+      return getDataSize(this.memoryAddress);
+    }
+    
+    protected static int getDataSize(long memoryAdress) {
+      int dataSizeDelta = AddressableMemoryManager.readInt(memoryAdress+REF_COUNT_OFFSET);
+      dataSizeDelta &= DATA_SIZE_DELTA_MASK;
+      dataSizeDelta >>= DATA_SIZE_SHIFT;
+      return getSize(memoryAdress) - dataSizeDelta;
+    }
+    
+    protected long getBaseDataAddress() {
+      return this.memoryAddress+HEADER_SIZE;
+    }
+    protected int getBaseDataOffset() {
+      return 0;
+    }
+    
+    @Override
+    @Unretained
+    public ByteBuffer createDirectByteBuffer() {
+      return AddressableMemoryManager.createDirectByteBuffer(getBaseDataAddress(), getDataSize());
+    }
+    @Override
+    public void sendTo(DataOutput out) throws IOException {
+      if (!this.isCompressed() && out instanceof HeapDataOutputStream) {
+        ByteBuffer bb = createDirectByteBuffer();
+        if (bb != null) {
+          HeapDataOutputStream hdos = (HeapDataOutputStream) out;
+          if (this.isSerialized()) {
+            hdos.write(bb);
+          } else {
+            hdos.writeByte(DSCODE.BYTE_ARRAY);
+            InternalDataSerializer.writeArrayLength(bb.remaining(), hdos);
+            hdos.write(bb);
+          }
+          return;
+        }
+      }
+      super.sendTo(out);
+    }
+    
+    @Override
+    public void sendAsByteArray(DataOutput out) throws IOException {
+      if (!isCompressed() && out instanceof HeapDataOutputStream) {
+        ByteBuffer bb = createDirectByteBuffer();
+        if (bb != null) {
+          HeapDataOutputStream hdos = (HeapDataOutputStream) out;
+          InternalDataSerializer.writeArrayLength(bb.remaining(), hdos);
+          hdos.write(bb);
+          return;
+        }
+      }
+      super.sendAsByteArray(out);
+    }
+       
+    /**
+     * Returns an address that can be used with AddressableMemoryManager to access this object's data.
+     * @param offset the offset from this chunk's first byte of the byte the returned address should point to. Must be >= 0.
+     * @param size the number of bytes that will be read using the returned address. Assertion will use this to verify that all the memory accessed belongs to this chunk. Must be > 0.
+     * @return a memory address that can be used to access this object's data
+     */
+    @Override
+    public long getAddressForReadingData(int offset, int size) {
+      assert offset >= 0 && offset + size <= getDataSize(): "Offset=" + offset + ",size=" + size + ",dataSize=" + getDataSize() + ", chunkSize=" + getSize() + ", but offset + size must be <= " + getDataSize();
+      assert size > 0;
+      long result = getBaseDataAddress() + offset;
+      // validateAddressAndSizeWithinSlab(result, size);
+      return result;
+    }
+    
+    @Override
+    public byte readDataByte(int offset) {
+      assert offset < getDataSize();
+      return AddressableMemoryManager.readByte(getBaseDataAddress() + offset);
+    }
+
+    @Override
+    public void writeDataByte(int offset, byte value) {
+      assert offset < getDataSize();
+      AddressableMemoryManager.writeByte(getBaseDataAddress() + offset, value);
+    }
+
+    @Override
+    public void readDataBytes(int offset, byte[] bytes) {
+      readDataBytes(offset, bytes, 0, bytes.length);
+    }
+
+    @Override
+    public void writeDataBytes(int offset, byte[] bytes) {
+      writeDataBytes(offset, bytes, 0, bytes.length);
+    }
+
+    @Override
+    public void readDataBytes(int offset, byte[] bytes, int bytesOffset, int size) {
+      assert offset+size <= getDataSize();
+      AddressableMemoryManager.readBytes(getBaseDataAddress() + offset, bytes, bytesOffset, size);
+    }
+
+    @Override
+    public void writeDataBytes(int offset, byte[] bytes, int bytesOffset, int size) {
+      assert offset+size <= getDataSize();
+      AddressableMemoryManager.writeBytes(getBaseDataAddress() + offset, bytes, bytesOffset, size);
+    }
+    
+    @Override
+    public void release() {
+      release(this.memoryAddress);
+     }
+
+    @Override
+    public int compareTo(OffHeapStoredObject o) {
+      int result = Integer.signum(getSize() - o.getSize());
+      if (result == 0) {
+        // For the same sized chunks we really don't care about their order
+        // but we need compareTo to only return 0 if the two chunks are identical
+        result = Long.signum(getAddress() - o.getAddress());
+      }
+      return result;
+    }
+    
+    @Override
+    public boolean equals(Object o) {
+      if (o instanceof OffHeapStoredObject) {
+        return getAddress() == ((OffHeapStoredObject) o).getAddress();
+      }
+      return false;
+    }
+    
+    @Override
+    public int hashCode() {
+      long value = this.getAddress();
+      return (int)(value ^ (value >>> 32));
+    }
+
+    public void setSerializedValue(byte[] value) {
+      writeDataBytes(0, value);
+    }
+    
+    public byte[] getDecompressedBytes(RegionEntryContext context) {
+      byte[] result = getCompressedBytes();
+      long time = context.getCachePerfStats().startDecompression();
+      result = context.getCompressor().decompress(result);
+      context.getCachePerfStats().endDecompression(time);      
+      return result;
+    }
+    
+    /**
+     * Returns the raw possibly compressed bytes of this chunk
+     */
+    public byte[] getCompressedBytes() {
+      byte[] result = new byte[getDataSize()];
+      readDataBytes(0, result);
+      //debugLog("reading", true);
+      SimpleMemoryAllocatorImpl.getAllocator().getStats().incReads();
+      return result;
+    }
+    protected byte[] getRawBytes() {
+      byte[] result = getCompressedBytes();
+      // TODO OFFHEAP: change the following to assert !isCompressed();
+      if (isCompressed()) {
+        throw new UnsupportedOperationException();
+      }
+      return result;
+    }
+
+    @Override
+    public byte[] getSerializedValue() {
+      byte [] result = getRawBytes();
+      if (!isSerialized()) {
+        // The object is a byte[]. So we need to make it look like a serialized byte[] in our result
+        result = EntryEventImpl.serialize(result);
+      }
+      return result;
+    }
+    
+    @Override
+    public Object getDeserializedValue(Region r, RegionEntry re) {
+      if (isSerialized()) {
+        // TODO OFFHEAP: debug deserializeChunk
+        return EntryEventImpl.deserialize(getRawBytes());
+        //assert !isCompressed();
+        //return EntryEventImpl.deserializeChunk(this);
+      } else {
+        return getRawBytes();
+      }
+    }
+    
+    /**
+     * We want this to include memory overhead so use getSize() instead of getDataSize().
+     */
+    @Override
+    public int getSizeInBytes() {
+      // Calling getSize includes the off heap header size.
+      // We do not add anything to this since the size of the reference belongs to the region entry size
+      // not the size of this object.
+      return getSize();
+    }
+
+    @Override
+    public int getValueSizeInBytes() {
+      return getDataSize();
+    }
+
+    @Override
+    public boolean isSerialized() {
+      return (AddressableMemoryManager.readInt(this.memoryAddress+REF_COUNT_OFFSET) & IS_SERIALIZED_BIT) != 0;
+    }
+
+    @Override
+    public boolean isCompressed() {
+      return (AddressableMemoryManager.readInt(this.memoryAddress+REF_COUNT_OFFSET) & IS_COMPRESSED_BIT) != 0;
+    }
+
+    @Override
+    public boolean retain() {
+      return retain(this.memoryAddress);
+    }
+
+    @Override
+    public int getRefCount() {
+      return getRefCount(this.memoryAddress);
+    }
+
+    public static int getSize(long memAddr) {
+      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
+      return AddressableMemoryManager.readInt(memAddr+CHUNK_SIZE_OFFSET);
+    }
+    public static void setSize(long memAddr, int size) {
+      SimpleMemoryAllocatorImpl.validateAddressAndSize(memAddr, size);
+      AddressableMemoryManager.writeInt(memAddr+CHUNK_SIZE_OFFSET, size);
+    }
+    public static long getNext(long memAddr) {
+      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
+      return AddressableMemoryManager.readLong(memAddr+HEADER_SIZE);
+    }
+    public static void setNext(long memAddr, long next) {
+      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
+      AddressableMemoryManager.writeLong(memAddr+HEADER_SIZE, next);
+    }
+    
+    /**
+     * Fills the chunk with a repeated byte fill pattern.
+     * @param baseAddress the starting address for a {@link OffHeapStoredObject}.
+     */
+    public static void fill(long baseAddress) {
+      long startAddress = baseAddress + MIN_CHUNK_SIZE;
+      int size = getSize(baseAddress) - MIN_CHUNK_SIZE;
+      
+      AddressableMemoryManager.fill(startAddress, size, FILL_BYTE);
+    }
+    
+    /**
+     * Validates that the fill pattern for this chunk has not been disturbed.  This method
+     * assumes the TINY_MULTIPLE is 8 bytes.
+     * @throws IllegalStateException when the pattern has been violated.
+     */
+    public void validateFill() {
+      assert FreeListManager.TINY_MULTIPLE == 8;
+      
+      long startAddress = getAddress() + MIN_CHUNK_SIZE;
+      int size = getSize() - MIN_CHUNK_SIZE;
+      
+      for(int i = 0;i < size;i += FreeListManager.TINY_MULTIPLE) {
+        if(AddressableMemoryManager.readLong(startAddress + i) != FILL_PATTERN) {
+          throw new IllegalStateException("Fill pattern violated for chunk " + getAddress() + " with size " + getSize());
+        }        
+      }
+    }
+
+    public void setSerialized(boolean isSerialized) {
+      if (isSerialized) {
+        int bits;
+        int originalBits;
+        do {
+          originalBits = AddressableMemoryManager.readIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
+          if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
+            throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
+          }
+          bits = originalBits | IS_SERIALIZED_BIT;
+        } while (!AddressableMemoryManager.writeIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, originalBits, bits));
+      }
+    }
+    public void setCompressed(boolean isCompressed) {
+      if (isCompressed) {
+        int bits;
+        int originalBits;
+        do {
+          originalBits = AddressableMemoryManager.readIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
+          if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
+            throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
+          }
+          bits = originalBits | IS_COMPRESSED_BIT;
+        } while (!AddressableMemoryManager.writeIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, originalBits, bits));
+      }
+    }
+    public void setDataSize(int dataSize) { // KIRK
+      assert dataSize <= getSize();
+      int delta = getSize() - dataSize;
+      assert delta <= (DATA_SIZE_DELTA_MASK >> DATA_SIZE_SHIFT);
+      delta <<= DATA_SIZE_SHIFT;
+      int bits;
+      int originalBits;
+      do {
+        originalBits = AddressableMemoryManager.readIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
+        if ((originalBits&MAGIC_MASK) != MAGIC_NUMBER) {
+          throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(originalBits));
+        }
+        bits = originalBits;
+        bits &= ~DATA_SIZE_DELTA_MASK; // clear the old dataSizeDelta bits
+        bits |= delta; // set the dataSizeDelta bits to the new delta value
+      } while (!AddressableMemoryManager.writeIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, originalBits, bits));
+    }
+    
+    public void initializeUseCount() {
+      int rawBits;
+      do {
+        rawBits = AddressableMemoryManager.readIntVolatile(this.memoryAddress+REF_COUNT_OFFSET);
+        if ((rawBits&MAGIC_MASK) != MAGIC_NUMBER) {
+          throw new IllegalStateException("It looks like this off heap memory was already freed. rawBits=" + Integer.toHexString(rawBits));
+        }
+        int uc = rawBits & REF_COUNT_MASK;
+        if (uc != 0) {
+          throw new IllegalStateException("Expected use count to be zero but it was: " + uc + " rawBits=0x" + Integer.toHexString(rawBits));
+        }
+      } while (!AddressableMemoryManager.writeIntVolatile(this.memoryAddress+REF_COUNT_OFFSET, rawBits, rawBits+1));
+    }
+
+    public static int getRefCount(long memAddr) {
+      return AddressableMemoryManager.readInt(memAddr+REF_COUNT_OFFSET) & REF_COUNT_MASK;
+    }
+
+    public static boolean retain(long memAddr) {
+      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
+      int uc;
+      int rawBits;
+      int retryCount = 0;
+      do {
+        rawBits = AddressableMemoryManager.readIntVolatile(memAddr+REF_COUNT_OFFSET);
+        if ((rawBits&MAGIC_MASK) != MAGIC_NUMBER) {
+          // same as uc == 0
+          // TODO MAGIC_NUMBER rethink its use and interaction with compactor fragments
+          return false;
+        }
+        uc = rawBits & REF_COUNT_MASK;
+        if (uc == MAX_REF_COUNT) {
+          throw new IllegalStateException("Maximum use count exceeded. rawBits=" + Integer.toHexString(rawBits));
+        } else if (uc == 0) {
+          return false;
+        }
+        retryCount++;
+        if (retryCount > 1000) {
+          throw new IllegalStateException("tried to write " + (rawBits+1) + " to @" + Long.toHexString(memAddr) + " 1,000 times.");
+        }
+      } while (!AddressableMemoryManager.writeIntVolatile(memAddr+REF_COUNT_OFFSET, rawBits, rawBits+1));
+      //debugLog("use inced ref count " + (uc+1) + " @" + Long.toHexString(memAddr), true);
+      if (ReferenceCountHelper.trackReferenceCounts()) {
+        ReferenceCountHelper.refCountChanged(memAddr, false, uc+1);
+      }
+
+      return true;
+    }
+    public static void release(final long memAddr) {
+      release(memAddr, null);
+    }
+    static void release(final long memAddr, FreeListManager freeListManager) {
+      SimpleMemoryAllocatorImpl.validateAddress(memAddr);
+      int newCount;
+      int rawBits;
+      boolean returnToAllocator;
+      do {
+        returnToAllocator = false;
+        rawBits = AddressableMemoryManager.readIntVolatile(memAddr+REF_COUNT_OFFSET);
+        if ((rawBits&MAGIC_MASK) != MAGIC_NUMBER) {
+          String msg = "It looks like off heap memory @" + Long.toHexString(memAddr) + " was already freed. rawBits=" + Integer.toHexString(rawBits) + " history=" + ReferenceCountHelper.getFreeRefCountInfo(memAddr);
+          //debugLog(msg, true);
+          throw new IllegalStateException(msg);
+        }
+        int curCount = rawBits&REF_COUNT_MASK;
+        if ((curCount) == 0) {
+          //debugLog("too many frees @" + Long.toHexString(memAddr), true);
+          throw new IllegalStateException("Memory has already been freed." + " history=" + ReferenceCountHelper.getFreeRefCountInfo(memAddr) /*+ System.identityHashCode(this)*/);
+        }
+        if (curCount == 1) {
+          newCount = 0; // clear the use count, bits, and the delta size since it will be freed.
+          returnToAllocator = true;
+        } else {
+          newCount = rawBits-1;
+        }
+      } while (!AddressableMemoryManager.writeIntVolatile(memAddr+REF_COUNT_OFFSET, rawBits, newCount));
+      //debugLog("free deced ref count " + (newCount&USE_COUNT_MASK) + " @" + Long.toHexString(memAddr), true);
+      if (returnToAllocator ) {
+       if (ReferenceCountHelper.trackReferenceCounts()) {
+          if (ReferenceCountHelper.trackFreedReferenceCounts()) {
+            ReferenceCountHelper.refCountChanged(memAddr, true, newCount&REF_COUNT_MASK);
+          }
+          ReferenceCountHelper.freeRefCountInfo(memAddr);
+        }
+        if (freeListManager == null) {
+          freeListManager = SimpleMemoryAllocatorImpl.getAllocator().getFreeListManager();
+        }
+        freeListManager.free(memAddr);
+      } else {
+        if (ReferenceCountHelper.trackReferenceCounts()) {
+          ReferenceCountHelper.refCountChanged(memAddr, true, newCount&REF_COUNT_MASK);
+        }
+      }
+    }
+    
+    @Override
+    public String toString() {
+      return super.toString() + ":<dataSize=" + getDataSize() + " refCount=" + getRefCount() + " addr=" + Long.toHexString(getAddress()) + ">";
+    }
+    
+    @Override
+    public State getState() {
+      if (getRefCount() > 0) {
+        return State.ALLOCATED;
+      } else {
+        return State.DEALLOCATED;
+      }
+    }
+    @Override
+    public MemoryBlock getNextBlock() {
+      throw new UnsupportedOperationException();
+    }
+    @Override
+    public int getBlockSize() {
+      return getSize();
+    }
+    @Override
+    public int getSlabId() {
+      throw new UnsupportedOperationException();
+    }
+    @Override
+    public int getFreeListId() {
+      return -1;
+    }
+    @Override
+    public String getDataType() {
+      return null;
+    }
+    @Override
+    public Object getDataValue() {
+      return null;
+    }
+    public StoredObject slice(int position, int limit) {
+      return new OffHeapStoredObjectSlice(this, position, limit);
+    }
+    @Override
+    public boolean hasRefCount() {
+      return true;
+    }
+  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
new file mode 100644
index 0000000..bde30e2
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStack.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+import com.gemstone.gemfire.LogWriter;
+
+/**
+ * A "stack" of addresses of OffHeapStoredObject instances. The stored objects are not kept
+ * in java object form but instead each one is just an off-heap address.
+ * This class is used for each "tiny" free-list of the FreeListManager.
+ * This class is thread safe.
+ */
+public class OffHeapStoredObjectAddressStack {
+  // Ok to read without sync but must be synced on write
+  private volatile long topAddr;
+  
+  public OffHeapStoredObjectAddressStack(long addr) {
+    if (addr != 0L) SimpleMemoryAllocatorImpl.validateAddress(addr);
+    this.topAddr = addr;
+  }
+  public OffHeapStoredObjectAddressStack() {
+    this.topAddr = 0L;
+  }
+  public boolean isEmpty() {
+    return this.topAddr == 0L;
+  }
+  public void offer(long e) {
+    assert e != 0;
+    SimpleMemoryAllocatorImpl.validateAddress(e);
+    synchronized (this) {
+      OffHeapStoredObject.setNext(e, this.topAddr);
+      this.topAddr = e;
+    }
+  }
+  public long poll() {
+    long result;
+    synchronized (this) {
+      result = this.topAddr;
+      if (result != 0L) {
+        this.topAddr = OffHeapStoredObject.getNext(result);
+      }
+    }
+    return result;
+  }
+  /**
+   * Returns the address of the "top" item in this stack.
+   */
+  public long getTopAddress() {
+    return this.topAddr;
+  }
+  /**
+   * Removes all the addresses from this stack
+   * and returns the top address.
+   * The caller owns all the addresses after this call.
+   */
+  public long clear() {
+    long result;
+    synchronized (this) {
+      result = this.topAddr;
+      if (result != 0L) {
+        this.topAddr = 0L;
+      }
+    }
+    return result;
+  }
+  public void logSizes(LogWriter lw, String msg) {
+    long headAddr = this.topAddr;
+    long addr;
+    boolean concurrentModDetected;
+    do {
+      concurrentModDetected = false;
+      addr = headAddr;
+      while (addr != 0L) {
+        int curSize = OffHeapStoredObject.getSize(addr);
+        addr = OffHeapStoredObject.getNext(addr);
+        testHookDoConcurrentModification();
+        long curHead = this.topAddr;
+        if (curHead != headAddr) {
+          headAddr = curHead;
+          concurrentModDetected = true;
+          // Someone added or removed from the stack.
+          // So we break out of the inner loop and start
+          // again at the new head.
+          break;
+        }
+        // TODO construct a single log msg
+        // that gets reset when concurrentModDetected.
+        lw.info(msg + curSize);
+      }
+    } while (concurrentModDetected);
+  }
+  public long computeTotalSize() {
+    long result;
+    long headAddr = this.topAddr;
+    long addr;
+    boolean concurrentModDetected;
+    do {
+      concurrentModDetected = false;
+      result = 0;
+      addr = headAddr;
+      while (addr != 0L) {
+        result += OffHeapStoredObject.getSize(addr);
+        addr = OffHeapStoredObject.getNext(addr);
+        testHookDoConcurrentModification();
+        long curHead = this.topAddr;
+        if (curHead != headAddr) {
+          headAddr = curHead;
+          concurrentModDetected = true;
+          // Someone added or removed from the stack.
+          // So we break out of the inner loop and start
+          // again at the new head.
+          break;
+        }
+      }
+    } while (concurrentModDetected);
+    return result;
+  }
+  
+  /**
+   * This method allows tests to override it
+   * and do a concurrent modification to the stack.
+   * For production code it will be a noop.
+   */
+  protected void testHookDoConcurrentModification() {
+    // nothing needed in production code
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSlice.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSlice.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSlice.java
new file mode 100644
index 0000000..4e4d3e4
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSlice.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+/**
+ * Represents a slice of an OffHeapStoredObject.
+ * A slice is a subsequence of the bytes stored in an OffHeapStoredObject.
+ */
+public class OffHeapStoredObjectSlice extends OffHeapStoredObject {
+  private final int offset;
+  private final int capacity;
+  public OffHeapStoredObjectSlice(OffHeapStoredObject objectChunk, int position, int limit) {
+    super(objectChunk);
+    this.offset = objectChunk.getBaseDataOffset() + position;
+    this.capacity = limit - position;
+  }
+  @Override
+  public int getDataSize() {
+    return this.capacity;
+  }
+  
+  @Override
+  protected long getBaseDataAddress() {
+    return super.getBaseDataAddress() + this.offset;
+  }
+  @Override
+  protected int getBaseDataOffset() {
+    return this.offset;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapForm.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapForm.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapForm.java
new file mode 100644
index 0000000..aea2319
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapForm.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+/**
+ * Used to keep the heapForm around while an operation is still in progress.
+ * This allows the operation to access the serialized heap form instead of copying
+ * it from offheap. See bug 48135.
+ */
+public class OffHeapStoredObjectWithHeapForm extends OffHeapStoredObject {
+  private final byte[] heapForm;
+  
+  public OffHeapStoredObjectWithHeapForm(OffHeapStoredObject chunk, byte[] heapForm) {
+    super(chunk);
+    this.heapForm = heapForm;
+  }
+
+  @Override
+  protected byte[] getRawBytes() {
+    return this.heapForm;
+  }
+  
+  @Override
+  public StoredObject getStoredObjectWithoutHeapForm() {
+    return new OffHeapStoredObject(this);
+  }
+}
\ No newline at end of file


[03/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyMemoryBlockJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyMemoryBlockJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyMemoryBlockJUnitTest.java
index 1626a15..d444865 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyMemoryBlockJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyMemoryBlockJUnitTest.java
@@ -43,14 +43,14 @@ public class TinyMemoryBlockJUnitTest {
   private OutOfOffHeapMemoryListener ooohml;
   private OffHeapMemoryStats stats;
 
-  private AddressableMemoryChunk[] slabs = {
-      new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE),
-      new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE),
-      new UnsafeMemoryChunk((int)OffHeapStorage.MIN_SLAB_SIZE)
+  private Slab[] slabs = {
+      new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE),
+      new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE),
+      new SlabImpl((int)OffHeapStorage.MIN_SLAB_SIZE)
   };
 
   private static class TestableFreeListManager extends FreeListManager {
-    TestableFreeListManager(SimpleMemoryAllocatorImpl ma, final AddressableMemoryChunk[] slabs) {
+    TestableFreeListManager(SimpleMemoryAllocatorImpl ma, final Slab[] slabs) {
       super (ma, slabs);
     }
   }
@@ -85,17 +85,17 @@ public class TinyMemoryBlockJUnitTest {
     return Long.valueOf(Long.MAX_VALUE);
   }
 
-  private MemoryChunkWithRefCount createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
-    MemoryChunkWithRefCount chunk = (MemoryChunkWithRefCount) ma.allocateAndInitialize(v, isSerialized, isCompressed);
+  private StoredObject createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
+    StoredObject chunk = (StoredObject) ma.allocateAndInitialize(v, isSerialized, isCompressed);
     return chunk;
   }
 
-  private MemoryChunkWithRefCount createValueAsSerializedStoredObject(Object value, boolean isCompressed) {
+  private StoredObject createValueAsSerializedStoredObject(Object value, boolean isCompressed) {
     byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
 
     boolean isSerialized = true;
 
-    MemoryChunkWithRefCount createdObject = createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
+    StoredObject createdObject = createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
     return createdObject;
   }
 
@@ -103,7 +103,7 @@ public class TinyMemoryBlockJUnitTest {
     return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong((Long) value).array();
   }
 
-  private MemoryChunkWithRefCount createValueAsUnserializedStoredObject(Object value, boolean isCompressed) {
+  private StoredObject createValueAsUnserializedStoredObject(Object value, boolean isCompressed) {
     byte[] valueInByteArray;
     if (value instanceof Long) {
       valueInByteArray = convertValueToByteArray(value);
@@ -113,7 +113,7 @@ public class TinyMemoryBlockJUnitTest {
 
     boolean isSerialized = false;
 
-    MemoryChunkWithRefCount createdObject = createChunk(valueInByteArray, isSerialized, isCompressed);
+    StoredObject createdObject = createChunk(valueInByteArray, isSerialized, isCompressed);
     return createdObject;
   }
 
@@ -132,12 +132,12 @@ public class TinyMemoryBlockJUnitTest {
   @Test
   public void getMemoryAddressReturnsAddressBlockWasContructedFrom() {
     MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(slabs[0].getMemoryAddress(), 0);
-    softly.assertThat(mb.getMemoryAddress()).isEqualTo(slabs[0].getMemoryAddress());
+    softly.assertThat(mb.getAddress()).isEqualTo(slabs[0].getMemoryAddress());
   }
 
   @Test
   public void getBlockSizeReturnsReturnsSizeOfUnderlyingChunk() {
-    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[0].getMemoryAddress(), slabs[0].getSize()).getMemoryAddress(), 0);
+    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[0].getMemoryAddress(), slabs[0].getSize()).getAddress(), 0);
     softly.assertThat(mb.getBlockSize()).isEqualTo(slabs[0].getSize());
   }
 
@@ -145,7 +145,7 @@ public class TinyMemoryBlockJUnitTest {
   public void getNextBlockThrowsUnsupportedOperationException() {
     expectedException.expect(UnsupportedOperationException.class);
 
-    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[0].getMemoryAddress(), slabs[0].getSize()).getMemoryAddress(), 0);
+    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[0].getMemoryAddress(), slabs[0].getSize()).getAddress(), 0);
     mb.getNextBlock();
     fail("getNextBlock failed to throw UnsupportedOperationException");
   }
@@ -154,23 +154,23 @@ public class TinyMemoryBlockJUnitTest {
   public void getSlabIdThrowsUnsupportedOperationException() {
     expectedException.expect(UnsupportedOperationException.class);
 
-    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[0].getMemoryAddress(), slabs[0].getSize()).getMemoryAddress(), 0);
+    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[0].getMemoryAddress(), slabs[0].getSize()).getAddress(), 0);
     mb.getSlabId();
     fail("getSlabId failed to throw UnsupportedOperationException");
   }
 
   @Test
   public void getFreeListIdReturnsIdBlockWasConstructedWith() {
-    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[0].getMemoryAddress(), slabs[0].getSize()).getMemoryAddress(), 0);
-    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[1].getMemoryAddress(), slabs[1].getSize()).getMemoryAddress(), 1);
+    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[0].getMemoryAddress(), slabs[0].getSize()).getAddress(), 0);
+    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[1].getMemoryAddress(), slabs[1].getSize()).getAddress(), 1);
     softly.assertThat(mb0.getFreeListId()).isEqualTo(0);
     softly.assertThat(mb1.getFreeListId()).isEqualTo(1);
   }
 
   @Test
   public void getRefCountReturnsZero() {
-    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[0].getMemoryAddress(), slabs[0].getSize()).getMemoryAddress(), 0);
-    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(new ObjectChunk(slabs[1].getMemoryAddress(), slabs[1].getSize()).getMemoryAddress(), 1);
+    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[0].getMemoryAddress(), slabs[0].getSize()).getAddress(), 0);
+    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(new OffHeapStoredObject(slabs[1].getMemoryAddress(), slabs[1].getSize()).getAddress(), 1);
     softly.assertThat(mb0.getRefCount()).isEqualTo(0);
     softly.assertThat(mb1.getRefCount()).isEqualTo(0);
   }
@@ -180,8 +180,8 @@ public class TinyMemoryBlockJUnitTest {
     Object obj = getValue();
     boolean compressed = false;
 
-    MemoryChunkWithRefCount storedObject0 = createValueAsSerializedStoredObject(obj, compressed);
-    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getMemoryAddress(), 0);
+    StoredObject storedObject0 = createValueAsSerializedStoredObject(obj, compressed);
+    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getAddress(), 0);
     softly.assertThat(mb.getDataType()).isEqualTo("N/A");
   }
 
@@ -190,8 +190,8 @@ public class TinyMemoryBlockJUnitTest {
     Object obj = getValue();
     boolean compressed = false;
 
-    MemoryChunkWithRefCount storedObject0 = createValueAsSerializedStoredObject(obj, compressed);
-    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getMemoryAddress(), 0);
+    StoredObject storedObject0 = createValueAsSerializedStoredObject(obj, compressed);
+    MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getAddress(), 0);
     softly.assertThat(mb.getDataValue()).isNull();
   }
 
@@ -200,10 +200,10 @@ public class TinyMemoryBlockJUnitTest {
     Object obj = getValue();
     boolean compressed = false;
 
-    MemoryChunkWithRefCount storedObject0 = createValueAsSerializedStoredObject(obj, compressed);
-    MemoryChunkWithRefCount storedObject1 = createValueAsUnserializedStoredObject(obj, compressed);
-    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getMemoryAddress(), 0);
-    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject1).getMemoryAddress(), 0);
+    StoredObject storedObject0 = createValueAsSerializedStoredObject(obj, compressed);
+    StoredObject storedObject1 = createValueAsUnserializedStoredObject(obj, compressed);
+    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getAddress(), 0);
+    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject1).getAddress(), 0);
     softly.assertThat(mb0.isSerialized()).isFalse();
     softly.assertThat(mb1.isSerialized()).isFalse();
   }
@@ -212,10 +212,10 @@ public class TinyMemoryBlockJUnitTest {
   public void isCompressedReturnsFalse() {
     Object obj = getValue();
     boolean compressed = false;
-    MemoryChunkWithRefCount storedObject0 = createValueAsUnserializedStoredObject(obj, compressed);
-    MemoryChunkWithRefCount storedObject1 = createValueAsUnserializedStoredObject(obj, compressed = true);
-    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getMemoryAddress(), 0);
-    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject1).getMemoryAddress(), 0);
+    StoredObject storedObject0 = createValueAsUnserializedStoredObject(obj, compressed);
+    StoredObject storedObject1 = createValueAsUnserializedStoredObject(obj, compressed = true);
+    MemoryBlock mb0 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject0).getAddress(), 0);
+    MemoryBlock mb1 = new TestableFreeListManager.TinyMemoryBlock(((MemoryBlock)storedObject1).getAddress(), 0);
     softly.assertThat(mb0.isCompressed()).isFalse();
     softly.assertThat(mb1.isCompressed()).isFalse();
   }
@@ -238,7 +238,7 @@ public class TinyMemoryBlockJUnitTest {
   @Test
   public void hashCodeReturnsHashOfUnderlyingMemory() {
     MemoryBlock mb = new TestableFreeListManager.TinyMemoryBlock(slabs[0].getMemoryAddress(), 0);
-    softly.assertThat(mb.hashCode()).isEqualTo(new ObjectChunk(slabs[0].getMemoryAddress(), slabs[0].getSize()).hashCode());
+    softly.assertThat(mb.hashCode()).isEqualTo(new OffHeapStoredObject(slabs[0].getMemoryAddress(), slabs[0].getSize()).hashCode());
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyStoredObjectJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyStoredObjectJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyStoredObjectJUnitTest.java
new file mode 100644
index 0000000..94559d6
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/TinyStoredObjectJUnitTest.java
@@ -0,0 +1,353 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gemstone.gemfire.internal.offheap;
+
+import com.gemstone.gemfire.compression.Compressor;
+import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
+import com.gemstone.gemfire.internal.cache.CachePerfStats;
+import com.gemstone.gemfire.internal.cache.EntryEventImpl;
+import com.gemstone.gemfire.internal.cache.RegionEntryContext;
+import com.gemstone.gemfire.internal.offheap.TinyStoredObject;
+
+import com.gemstone.gemfire.internal.offheap.OffHeapRegionEntryHelper;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.mockito.Mock;
+
+import java.nio.ByteBuffer;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.*;
+
+@Category(UnitTest.class)
+public class TinyStoredObjectJUnitTest extends AbstractStoredObjectTestBase {
+
+    @Override
+    public Object getValue() {
+        return Integer.valueOf(123456789);
+    }
+
+    @Override
+    public byte[] getValueAsByteArray() {
+        return convertValueToByteArray(getValue());
+    }
+
+    private byte[] convertValueToByteArray(Object value) {
+        return ByteBuffer.allocate(Integer.SIZE / Byte.SIZE).putInt((Integer) value).array();
+    }
+
+    @Override
+    public Object convertByteArrayToObject(byte[] valueInByteArray) {
+        return ByteBuffer.wrap(valueInByteArray).getInt();
+    }
+
+    @Override
+    public Object convertSerializedByteArrayToObject(byte[] valueInSerializedByteArray) {
+       return EntryEventImpl.deserialize(valueInSerializedByteArray);
+    }
+
+    @Override
+    public TinyStoredObject createValueAsUnserializedStoredObject(Object value) {
+        byte[] valueInByteArray;
+        if(value instanceof Integer) {
+            valueInByteArray = convertValueToByteArray(value);
+        } else {
+            valueInByteArray = (byte[]) value;
+        }
+        //encode a non-serialized entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInByteArray, false, false);
+        return new TinyStoredObject(encodedAddress);
+    }
+
+    @Override
+    public TinyStoredObject createValueAsSerializedStoredObject(Object value) {
+        byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
+        //encode a serialized entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInSerializedByteArray, true, false);
+        return new TinyStoredObject(encodedAddress);
+    }
+
+    public TinyStoredObject createValueAsCompressedStoredObject(Object value) {
+        byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
+        //encode a serialized, compressed entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInSerializedByteArray, true, true);
+        return new TinyStoredObject(encodedAddress);
+    }
+
+    public TinyStoredObject createValueAsUncompressedStoredObject(Object value) {
+        byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
+        //encode a serialized, uncompressed entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(valueInSerializedByteArray, true, false);
+        return new TinyStoredObject(encodedAddress);
+    }
+
+    @Test
+    public void shouldReturnCorrectEncodingAddress() {
+
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        assertNotNull(address1);
+        assertEquals("Encoding address should be:", 10001, address1.getAddress());
+
+        TinyStoredObject address2 = new TinyStoredObject(10002L);
+        assertNotNull(address2);
+        assertEquals("Returning always 10001 expected 10002", 10002, address2.getAddress());
+    }
+
+    @Test
+    public void twoAddressesShouldBeEqualIfEncodingAddressIsSame() {
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        TinyStoredObject address2 = new TinyStoredObject(10001L);
+
+        assertEquals("Two addresses are equal if encoding address is same", true, address1.equals(address2));
+    }
+
+    @Test
+    public void twoAddressesShouldNotBeEqualIfEncodingAddressIsNotSame() {
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        TinyStoredObject address2 = new TinyStoredObject(10002L);
+
+        assertEquals("Two addresses are not equal if encoding address is not same", false, address1.equals(address2));
+    }
+
+    @Test
+    public void twoAddressesAreNotEqualIfTheyAreNotTypeDataAsAddress() {
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        Long address2 = new Long(10002L);
+
+        assertEquals("Two addresses are not equal if encoding address is not same", false, address1.equals(address2));
+    }
+
+    @Test
+    public void addressHashCodeShouldBe() {
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        assertEquals("", 10001, address1.hashCode());
+    }
+
+    @Test
+    public void getSizeInBytesAlwaysReturnsZero() {
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        TinyStoredObject address2 = new TinyStoredObject(10002L);
+
+        assertEquals("getSizeInBytes", 0, address1.getSizeInBytes());
+        assertEquals("getSizeInBytes", 0, address2.getSizeInBytes());
+    }
+
+    @Test
+    public void getValueSizeInBytesAlwaysReturnsZero() {
+        TinyStoredObject address1 = new TinyStoredObject(10001L);
+        TinyStoredObject address2 = new TinyStoredObject(10002L);
+
+        assertEquals("getSizeInBytes", 0, address1.getValueSizeInBytes());
+        assertEquals("getSizeInBytes", 0, address2.getValueSizeInBytes());
+    }
+
+    @Test
+    public void isCompressedShouldReturnTrueIfCompressed() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsCompressedStoredObject(regionEntryValue);
+
+        assertEquals("Should return true as it is compressed", true, offheapAddress.isCompressed());
+    }
+
+    @Test
+    public void isCompressedShouldReturnFalseIfNotCompressed() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsUncompressedStoredObject(regionEntryValue);
+
+        assertEquals("Should return false as it is compressed", false, offheapAddress.isCompressed());
+    }
+
+    @Test
+    public void isSerializedShouldReturnTrueIfSeriazlied() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsSerializedStoredObject(regionEntryValue);
+
+        assertEquals("Should return true as it is serialized", true, offheapAddress.isSerialized());
+    }
+
+    @Test
+    public void isSerializedShouldReturnFalseIfNotSeriazlied() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsUnserializedStoredObject(regionEntryValue);
+
+        assertEquals("Should return false as it is serialized", false, offheapAddress.isSerialized());
+    }
+
+    @Test
+    public void getDecompressedBytesShouldReturnDecompressedBytesIfCompressed() {
+        Object regionEntryValue = getValue();
+        byte[] regionEntryValueAsBytes =  convertValueToByteArray(regionEntryValue);
+
+        //encode a non-serialized and compressed entry value to address - last argument is to let that it is compressed
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(regionEntryValueAsBytes, false, true);
+        TinyStoredObject offheapAddress = new TinyStoredObject(encodedAddress);
+
+        RegionEntryContext regionContext = mock(RegionEntryContext.class);
+        CachePerfStats cacheStats = mock(CachePerfStats.class);
+        Compressor compressor = mock(Compressor.class);
+
+        long startTime = 10000L;
+
+        //mock required things
+        when(regionContext.getCompressor()).thenReturn(compressor);
+        when(compressor.decompress(regionEntryValueAsBytes)).thenReturn(regionEntryValueAsBytes);
+        when(regionContext.getCachePerfStats()).thenReturn(cacheStats);
+        when(cacheStats.startDecompression()).thenReturn(startTime);
+
+        //invoke the thing
+        byte[] bytes = offheapAddress.getDecompressedBytes(regionContext);
+
+        //verify the thing happened
+        verify(cacheStats, atLeastOnce()).startDecompression();
+        verify(compressor, times(1)).decompress(regionEntryValueAsBytes);
+        verify(cacheStats, atLeastOnce()).endDecompression(startTime);
+
+        assertArrayEquals(regionEntryValueAsBytes, bytes);
+    }
+
+    @Test
+    public void getDecompressedBytesShouldNotTryToDecompressIfNotCompressed() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsUncompressedStoredObject(regionEntryValue);
+
+        //mock the thing
+        RegionEntryContext regionContext = mock(RegionEntryContext.class);
+        Compressor compressor = mock(Compressor.class);
+        when(regionContext.getCompressor()).thenReturn(compressor);
+
+        //invoke the thing
+        byte[] actualValueInBytes = offheapAddress.getDecompressedBytes(regionContext);
+
+        //createValueAsUncompressedStoredObject does uses a serialized value - so convert it to object
+        Object actualRegionValue = convertSerializedByteArrayToObject(actualValueInBytes);
+
+        //verify the thing happened
+        verify(regionContext, never()).getCompressor();
+        assertEquals(regionEntryValue, actualRegionValue);
+    }
+
+    @Test
+    public void getRawBytesShouldReturnAByteArray() {
+        byte[] regionEntryValueAsBytes = getValueAsByteArray();
+
+        TinyStoredObject offheapAddress = createValueAsUnserializedStoredObject(regionEntryValueAsBytes);
+        byte[] actual = offheapAddress.getRawBytes();
+
+        assertArrayEquals(regionEntryValueAsBytes, actual);
+    }
+
+    @Test
+    public void getSerializedValueShouldReturnASerializedByteArray() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsSerializedStoredObject(regionEntryValue);
+
+        byte[] actualSerializedValue = offheapAddress.getSerializedValue();
+
+        Object actualRegionEntryValue = convertSerializedByteArrayToObject(actualSerializedValue);
+
+        assertEquals(regionEntryValue, actualRegionEntryValue);
+    }
+
+    @Test
+    public void getDeserializedObjectShouldReturnADeserializedObject() {
+        Object regionEntryValue = getValue();
+
+        TinyStoredObject offheapAddress = createValueAsSerializedStoredObject(regionEntryValue);
+
+        Integer actualRegionEntryValue = (Integer) offheapAddress.getDeserializedValue(null, null);
+
+        assertEquals(regionEntryValue, actualRegionEntryValue);
+    }
+
+    @Test
+    public void getDeserializedObjectShouldReturnAByteArrayAsIsIfNotSerialized() {
+        byte[] regionEntryValueAsBytes = getValueAsByteArray();
+
+        TinyStoredObject offheapAddress = createValueAsUnserializedStoredObject(regionEntryValueAsBytes);
+
+        byte[] deserializeValue = (byte[]) offheapAddress.getDeserializedValue(null, null);
+
+        assertArrayEquals(regionEntryValueAsBytes, deserializeValue);
+    }
+
+    @Test
+    public void fillSerializedValueShouldFillWrapperWithSerializedValueIfValueIsSerialized() {
+        Object regionEntryValue = getValue();
+        byte[] serializedRegionEntryValue = EntryEventImpl.serialize(regionEntryValue);
+
+        //encode a serialized entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(serializedRegionEntryValue, true, false);
+
+        TinyStoredObject offheapAddress = new TinyStoredObject(encodedAddress);
+
+        //mock the things
+        BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
+
+        byte userBits = 1;
+        offheapAddress.fillSerializedValue(wrapper, userBits);
+
+        verify(wrapper, times(1)).setData(serializedRegionEntryValue, userBits, serializedRegionEntryValue.length, true);
+    }
+
+    @Test
+    public void fillSerializedValueShouldFillWrapperWithDeserializedValueIfValueIsNotSerialized() {
+        Object regionEntryValue = getValue();
+        byte[] regionEntryValueAsBytes =  convertValueToByteArray(regionEntryValue);
+
+        //encode a un serialized entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(regionEntryValueAsBytes, false, false);
+
+        TinyStoredObject offheapAddress = new TinyStoredObject(encodedAddress);
+
+        //mock the things
+        BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
+
+        byte userBits = 1;
+        offheapAddress.fillSerializedValue(wrapper, userBits);
+
+        verify(wrapper, times(1)).setData(regionEntryValueAsBytes, userBits, regionEntryValueAsBytes.length, true);
+    }
+
+    @Test
+    public void getStringFormShouldCatchExceptionAndReturnErrorMessageAsString() {
+        Object regionEntryValueAsBytes = getValue();
+
+        byte[] serializedValue = EntryEventImpl.serialize(regionEntryValueAsBytes);
+
+        //store -127 (DSCODE.ILLEGAL) - in order the deserialize to throw exception
+        serializedValue[0] = -127;
+
+        //encode a un serialized entry value to address
+        long encodedAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(serializedValue, true, false);
+
+        TinyStoredObject offheapAddress = new TinyStoredObject(encodedAddress);
+
+        String errorMessage = offheapAddress.getStringForm();
+
+        assertEquals(true, errorMessage.contains("Could not convert object to string because "));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunkJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunkJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunkJUnitTest.java
deleted file mode 100644
index d7168a7..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/UnsafeMemoryChunkJUnitTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class UnsafeMemoryChunkJUnitTest extends MemoryChunkJUnitTestBase {
-
-  @Override
-  protected MemoryChunk createChunk(int size) {
-    return new UnsafeMemoryChunk(size);
-  }
-
-  @Test
-  public void testGetAddress() {
-    MemoryChunk mc = createChunk(1024);
-    try {
-      AddressableMemoryChunk umc = (AddressableMemoryChunk) mc;
-      assertNotEquals(0, umc.getMemoryAddress());
-    } finally {
-      mc.release();
-    }
-  }
-  
-  @Test(expected=AssertionError.class)
-  public void readAbsoluteBytesFailsIfSizeLessThanZero() {
-    UnsafeMemoryChunk.readAbsoluteBytes(0L, null, 0, -1);
-  }
-  @Test
-  public void readAbsoluteBytesDoesNothingIfSizeIsZero() {
-    UnsafeMemoryChunk.readAbsoluteBytes(0L, new byte[0], 0, 0);
-  }
-  @Test(expected=AssertionError.class)
-  public void readAbsoluteBytesFailsIfSizeGreaterThanArrayLength() {
-    UnsafeMemoryChunk.readAbsoluteBytes(0L, new byte[0], 0, 1);
-  }
-  @Test(expected=AssertionError.class)
-  public void readAbsoluteBytesFailsIfByteOffsetNegative() {
-    UnsafeMemoryChunk.readAbsoluteBytes(0L, new byte[0], -1, 0);
-  }
-  @Test(expected=AssertionError.class)
-  public void readAbsoluteBytesFailsIfByteOffsetGreaterThanArrayLength() {
-    UnsafeMemoryChunk.readAbsoluteBytes(0L, new byte[0], 1, 0);
-  }
-  
-  @Test(expected=AssertionError.class)
-  public void writeAbsoluteBytesFailsIfSizeLessThanZero() {
-    UnsafeMemoryChunk.writeAbsoluteBytes(0L, null, 0, -1);
-  }
-  @Test
-  public void writeAbsoluteBytesDoesNothingIfSizeIsZero() {
-    UnsafeMemoryChunk.writeAbsoluteBytes(0L, new byte[0], 0, 0);
-  }
-  @Test(expected=AssertionError.class)
-  public void writeAbsoluteBytesFailsIfSizeGreaterThanArrayLength() {
-    UnsafeMemoryChunk.writeAbsoluteBytes(0L, new byte[0], 0, 1);
-  }
-  @Test(expected=AssertionError.class)
-  public void writeAbsoluteBytesFailsIfByteOffsetNegative() {
-    UnsafeMemoryChunk.writeAbsoluteBytes(0L, new byte[0], -1, 0);
-  }
-  @Test(expected=AssertionError.class)
-  public void writeAbsoluteBytesFailsIfByteOffsetGreaterThanArrayLength() {
-    UnsafeMemoryChunk.writeAbsoluteBytes(0L, new byte[0], 1, 0);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/management/OffHeapManagementDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/OffHeapManagementDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/OffHeapManagementDUnitTest.java
index 3d06e11..9ded958 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/OffHeapManagementDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/OffHeapManagementDUnitTest.java
@@ -36,7 +36,7 @@ import com.gemstone.gemfire.cache30.CacheTestCase;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.OffHeapStoredObject;
 import com.gemstone.gemfire.internal.offheap.OffHeapMemoryStats;
 import com.gemstone.gemfire.internal.offheap.OffHeapStorage;
 import com.gemstone.gemfire.management.internal.MBeanJMXAdapter;
@@ -240,7 +240,7 @@ public class OffHeapManagementDUnitTest extends CacheTestCase {
       
       // After allocating large chunk (equal to total memory) 
       // we should still have no fragmentation
-      int largeChunk = (int) TOTAL_MEMORY - ObjectChunk.OFF_HEAP_HEADER_SIZE;
+      int largeChunk = (int) TOTAL_MEMORY - OffHeapStoredObject.HEADER_SIZE;
       doPutOnVm(vm, KEY, new byte[largeChunk], OFF_HEAP_REGION_NAME, false);
       // No compaction has run, so fragmentation should be zero
       assertFragmentationStatOnVm(vm,0,ASSERT_OP.EQUAL);
@@ -255,7 +255,7 @@ public class OffHeapManagementDUnitTest extends CacheTestCase {
       assertFragmentationStatOnVm(vm,0,ASSERT_OP.EQUAL);
       
       // Allocate HALF_TOTAL_MEMORY twice and release one to create one fragment
-      int halfChunk = HALF_TOTAL_MEMORY - ObjectChunk.OFF_HEAP_HEADER_SIZE;
+      int halfChunk = HALF_TOTAL_MEMORY - OffHeapStoredObject.HEADER_SIZE;
       doPutOnVm(vm, KEY + "0", new byte[halfChunk], OFF_HEAP_REGION_NAME, false);
       doPutOnVm(vm, KEY + "1", new byte[halfChunk], OFF_HEAP_REGION_NAME, false);
       doDestroyOnVm(vm, KEY + "0", OFF_HEAP_REGION_NAME);
@@ -267,7 +267,7 @@ public class OffHeapManagementDUnitTest extends CacheTestCase {
       
       // Consume the available fragment as below
       // [16][262120][16][262120][16] = [524288] (HALF_TOTAL_MEMORY)
-      int smallChunk = ObjectChunk.MIN_CHUNK_SIZE - ObjectChunk.OFF_HEAP_HEADER_SIZE;
+      int smallChunk = OffHeapStoredObject.MIN_CHUNK_SIZE - OffHeapStoredObject.HEADER_SIZE;
       int mediumChunk = 262112; //(262120 - ObjectChunk.OFF_HEAP_HEADER_SIZE)
       doPutOnVm(vm, KEY + "S1", new byte[smallChunk], OFF_HEAP_REGION_NAME, false);
       doPutOnVm(vm, KEY + "M1", new byte[mediumChunk], OFF_HEAP_REGION_NAME, false);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteBufferByteSourceJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteBufferByteSourceJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteBufferByteSourceJUnitTest.java
index 0f918cb..8380f57 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteBufferByteSourceJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteBufferByteSourceJUnitTest.java
@@ -22,7 +22,7 @@ import java.nio.ByteBuffer;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.OffHeapStoredObject;
 import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.tcp.ByteBufferInputStream.ByteSource;
@@ -35,8 +35,8 @@ public class OffHeapByteBufferByteSourceJUnitTest extends OffHeapByteSourceJUnit
   @Override
   protected ByteSource createByteSource(byte[] bytes) {
     StoredObject so = SimpleMemoryAllocatorImpl.getAllocator().allocateAndInitialize(bytes, false, false);
-    if (so instanceof ObjectChunk) {
-      ObjectChunk c = (ObjectChunk) so;
+    if (so instanceof OffHeapStoredObject) {
+      OffHeapStoredObject c = (OffHeapStoredObject) so;
       ByteBuffer bb = c.createDirectByteBuffer();
       if (bb == null) {
         fail("could not create a direct ByteBuffer for an off-heap Chunk");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteSourceJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteSourceJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteSourceJUnitTest.java
index 6457425..2111f79 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteSourceJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/pdx/OffHeapByteSourceJUnitTest.java
@@ -20,12 +20,12 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
+import com.gemstone.gemfire.internal.offheap.OffHeapStoredObject;
 import com.gemstone.gemfire.internal.offheap.NullOffHeapMemoryStats;
 import com.gemstone.gemfire.internal.offheap.NullOutOfOffHeapMemoryListener;
 import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
+import com.gemstone.gemfire.internal.offheap.SlabImpl;
 import com.gemstone.gemfire.internal.tcp.ByteBufferInputStream.ByteSource;
 import com.gemstone.gemfire.internal.tcp.ByteBufferInputStream.ByteSourceFactory;
 import com.gemstone.gemfire.internal.tcp.ByteBufferInputStream.OffHeapByteSource;
@@ -36,7 +36,7 @@ public class OffHeapByteSourceJUnitTest extends ByteSourceJUnitTest {
 
   @Before
   public void setUp() throws Exception {
-    SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
+    SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
   }
 
   @After
@@ -52,9 +52,9 @@ public class OffHeapByteSourceJUnitTest extends ByteSourceJUnitTest {
   @Override
   protected ByteSource createByteSource(byte[] bytes) {
     StoredObject so = SimpleMemoryAllocatorImpl.getAllocator().allocateAndInitialize(bytes, false, false);
-    if (so instanceof ObjectChunk) {
+    if (so instanceof OffHeapStoredObject) {
       // bypass the factory to make sure that OffHeapByteSource is tested
-      return new OffHeapByteSource((ObjectChunk)so);
+      return new OffHeapByteSource(so);
     } else {
       // bytes are so small they can be encoded in a long (see DataAsAddress).
       // So for this test just wrap the original bytes.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
index dd48df4..bb9f350 100644
--- a/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
+++ b/geode-core/src/test/resources/com/gemstone/gemfire/codeAnalysis/sanctionedDataSerializables.txt
@@ -1030,7 +1030,7 @@ toData,17,2ab400022bb800042ab400032bb80004b1
 
 com/gemstone/gemfire/internal/cache/EntryEventImpl,2
 fromData,214,2a2bb8001dc0001eb5001f2bb8001d4d2bb8001d4e2abb0020592c2d01b70021b500222a2bb900230100b80024b500252a2bb900260100b500082ab400222bb8001db600272a2bb8001dc00028b500092bb9002901009900112a2bb8001dc0002ab50007a700322bb9002901009900212a2bb8002bb5002c2a2ab4002cb500052a2ab4002cb8002db50004a7000b2a2bb8001db500042bb9002901009900192a2bb8002bb5002e2a2ab4002eb8002db50006a7000b2a2bb8001db500062a2bb8002fb500302a2bb80031b5000a2a2bb80032b50016b1
-toData,326,2ab4001f2bb801612ab600902bb801612ab40022b6018a2bb801612b2ab40025b4018bb9018c02002b2ab4000811c03f7eb9018d02002ab6004d2bb801612ab400092bb801612ab40007c6000704a70004033d2b1cb9018e02001c99000e2ab400072bb80161a7006f2ab600434e2dc10086360415049900152dc1008499000e2dc00084b900bb010036042b1504b9018e0200150499003b2ab4002cc6000e2ab4002c2bb8018fa7002e2ab40005c6000e2ab400052bb8018fa7001c2dc000863a051905b900c701002bb80190a700082d2bb801612ab700454d2cc100863e1d9900142cc1008499000d2cc00084b900bb01003e2b1db9018e02001d9900292ab4002ec6000e2ab4002e2bb8018fa7001c2cc000863a041904b900c701002bb80190a700082c2bb801612ab40030c001912bb801922ab6005a2bb801612ab400162bb80193b1
+toData,312,2ab400202bb801632ab6008f2bb801632ab40023b6018c2bb801632b2ab40026b4018db9018e02002b2ab4000911c03f7eb9018f02002ab6004e2bb801632ab4000a2bb801632ab40008c6000704a70004033d2b1cb9019002001c99000e2ab400082bb80163a700682ab600444e2dc100853604150499000e2dc00085b900bb010036042b1504b901900200150499003b2ab4002dc6000e2ab4002d2bb80191a7002e2ab40006c6000e2ab400062bb80191a7001c2dc000853a051905b900c901002bb80192a700082d2bb801632ab700464d2cc100853e1d99000d2cc00085b900bb01003e2b1db9019002001d9900292ab4002fc6000e2ab4002f2bb80191a7001c2cc000853a041904b900c901002bb80192a700082c2bb801632ab40031c001932bb801942ab6005b2bb801632ab400172bb80195b1
 
 com/gemstone/gemfire/internal/cache/EntrySnapshot,2
 fromData,50,2a03b500052bb9004101003d1c9900112abb000759b70042b50004a7000e2abb000359b70043b500042ab400042bb60044b1



[18/45] incubator-geode git commit: GEODE-1005 When multiple locator started same time, they endup creating two DS

Posted by kl...@apache.org.
GEODE-1005 When multiple locator started same time, they endup creating two DS

Now we make sure in findCoordinater call that we give prefernce to member which
are in view.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/5fcf0370
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/5fcf0370
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/5fcf0370

Branch: refs/heads/feature/GEODE-1050
Commit: 5fcf03706cfd703012ddddbd728ea240966747c3
Parents: 8700acc
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Tue Mar 1 16:17:31 2016 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Thu Mar 10 09:47:23 2016 -0800

----------------------------------------------------------------------
 .../membership/gms/membership/GMSJoinLeave.java | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5fcf0370/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 3d8b2e5..85d76d6 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -933,7 +933,8 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
     }
 
     FindCoordinatorRequest request = new FindCoordinatorRequest(this.localAddress, state.alreadyTried, state.viewId);
-    Set<InternalDistributedMember> coordinators = new HashSet<InternalDistributedMember>();
+    Set<InternalDistributedMember> possibleCoordinators = new HashSet<InternalDistributedMember>();
+    Set<InternalDistributedMember> coordinatorsWithView = new HashSet<InternalDistributedMember>();
 
     long giveUpTime = System.currentTimeMillis() + ((long) services.getConfig().getLocatorWaitTime() * 1000L);
 
@@ -971,7 +972,11 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
                   state.registrants.addAll(response.getRegistrants());
                 }
               }
-              coordinators.add(response.getCoordinator());
+              if (viewId > -1) {
+                coordinatorsWithView.add(response.getCoordinator());
+              }
+              
+              possibleCoordinators.add(response.getCoordinator());
               if (!flagsSet) {
                 flagsSet = true;
                 inheritSettingsFromLocator(addr, response);
@@ -982,13 +987,16 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
         }
       }
     } while (!anyResponses && System.currentTimeMillis() < giveUpTime);
-
-    if (coordinators.isEmpty()) {
+    if (possibleCoordinators.isEmpty()) {
       return false;
     }
 
-    Iterator<InternalDistributedMember> it = coordinators.iterator();
-    if (coordinators.size() == 1) {
+    if (coordinatorsWithView.size() > 0) {
+      possibleCoordinators = coordinatorsWithView;// lets check current coordinators in view only
+    }
+    
+    Iterator<InternalDistributedMember> it = possibleCoordinators.iterator();
+    if (possibleCoordinators.size() == 1) {
       state.possibleCoordinator = it.next();
     } else {
       InternalDistributedMember oldest = it.next();


[27/45] incubator-geode git commit: GEODE-1039 CI Failure GMSHealthMonitorJUnitTest.testCheckIfAvailableWithSimulatedHeartBeatWithTcpCheck

Posted by kl...@apache.org.
GEODE-1039 CI Failure GMSHealthMonitorJUnitTest.testCheckIfAvailableWithSimulatedHeartBeatWithTcpCheck


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/87b4eba3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/87b4eba3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/87b4eba3

Branch: refs/heads/feature/GEODE-1050
Commit: 87b4eba3f92b55f2aec8eed39bdc974bc0906ca5
Parents: 9fdcca1
Author: Jianxia Chen <jc...@pivotal.io>
Authored: Fri Mar 11 09:42:22 2016 -0800
Committer: Jianxia Chen <jc...@pivotal.io>
Committed: Fri Mar 11 09:42:22 2016 -0800

----------------------------------------------------------------------
 .../membership/gms/fd/GMSHealthMonitor.java     |  2 +-
 .../gms/fd/GMSHealthMonitorJUnitTest.java       | 20 ++++++++------------
 2 files changed, 9 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87b4eba3/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
index 536e26e..82eb0b0 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitor.java
@@ -1278,7 +1278,7 @@ public class GMSHealthMonitor implements HealthMonitor, MessageHandler {
   
       if (!pinged && !isStopping) {
         TimeStamp ts = memberTimeStamps.get(mbr);
-        if (ts == null || ts.getTime() <= startTime) {
+        if (ts == null || ts.getTime() < startTime) {
           logger.info("Final check failed - requesting removal of suspect member " + mbr);
           if (initiateRemoval) {
             services.getJoinLeave().remove(mbr, reason);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/87b4eba3/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
index a96b546..9324783 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
@@ -175,7 +175,7 @@ public class GMSHealthMonitorJUnitTest {
 
     // allow the monitor to give up on the initial "next neighbor" and
     // move on to the one after it
-    long giveup = System.currentTimeMillis() + memberTimeout + 500;
+    long giveup = System.currentTimeMillis() + memberTimeout + 1500;
     InternalDistributedMember expected = mockMembers.get(5);
     InternalDistributedMember neighbor = gmsHealthMonitor.getNextNeighbor();
     while (System.currentTimeMillis() < giveup && neighbor != expected) {
@@ -230,7 +230,7 @@ public class GMSHealthMonitorJUnitTest {
   }
 
   private NetView installAView() {
-    System.out.println("testSuspectMembersCalledThroughMemberCheckThread starting");
+    System.out.println("installAView starting");
     NetView v = new NetView(mockMembers.get(0), 2, mockMembers);
 
     // 3rd is current member
@@ -445,6 +445,7 @@ public class GMSHealthMonitorJUnitTest {
   
   @Test
   public void testCheckIfAvailableWithSimulatedHeartBeatWithTcpCheck() {
+    System.out.println("testCheckIfAvailableWithSimulatedHeartBeatWithTcpCheck");
     useGMSHealthMonitorTestClass = true;
     
     try {
@@ -453,15 +454,6 @@ public class GMSHealthMonitorJUnitTest {
       setFailureDetectionPorts(v);
       
       InternalDistributedMember memberToCheck = mockMembers.get(1);
-      HeartbeatMessage fakeHeartbeat = new HeartbeatMessage();
-      fakeHeartbeat.setSender(memberToCheck);
-      when(messenger.send(any(HeartbeatRequestMessage.class))).then(new Answer() {
-        @Override
-        public Object answer(InvocationOnMock invocation) throws Throwable {
-          gmsHealthMonitor.processMessage(fakeHeartbeat);
-          return null;
-        }
-      });
       
       boolean retVal = gmsHealthMonitor.checkIfAvailable(memberToCheck, "Not responding", true);
       assertTrue("CheckIfAvailable should have return true", retVal);
@@ -677,8 +669,12 @@ public class GMSHealthMonitorJUnitTest {
   public class GMSHealthMonitorTest extends GMSHealthMonitor {
     @Override
     boolean doTCPCheckMember(InternalDistributedMember suspectMember, int port) {
-      if(useGMSHealthMonitorTestClass)
+      if(useGMSHealthMonitorTestClass) {       
+        HeartbeatMessage fakeHeartbeat = new HeartbeatMessage();
+        fakeHeartbeat.setSender(suspectMember);
+        gmsHealthMonitor.processMessage(fakeHeartbeat);                
         return false;
+      }
       return super.doTCPCheckMember(suspectMember, port);
     }
   }


[16/45] incubator-geode git commit: GEODE-589: CI Failure: ClientMembershipDUnitTest.testGetConnectedClients

Posted by kl...@apache.org.
GEODE-589: CI Failure: ClientMembershipDUnitTest.testGetConnectedClients

Gester will be reverting his change that caused this failure but I've
reworked the test to have it not be dependent on getSystem() or the
string representation of DistributedMember objects.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/aaa586a4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/aaa586a4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/aaa586a4

Branch: refs/heads/feature/GEODE-1050
Commit: aaa586a495326d4729632669c48efdc9f4c36af5
Parents: c394bf0
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Thu Mar 10 09:06:28 2016 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Thu Mar 10 09:06:28 2016 -0800

----------------------------------------------------------------------
 .../cache30/ClientMembershipDUnitTest.java      | 63 +++++++++------
 .../gemfire/cache30/ClientServerTestCase.java   | 12 +--
 ...ersalMembershipListenerAdapterDUnitTest.java | 85 +++++++++-----------
 .../test/dunit/DistributedTestUtils.java        |  1 +
 4 files changed, 84 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aaa586a4/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index 23386a7..a8ea590 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@ -58,6 +58,7 @@ import com.gemstone.gemfire.test.dunit.Assert;
 import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.IgnoredException;
 import com.gemstone.gemfire.test.dunit.NetworkUtils;
+import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
@@ -77,6 +78,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
   protected static final int JOINED = 0;
   protected static final int LEFT = 1;
   protected static final int CRASHED = 2;
+  
+  private static Properties properties;
     
   public ClientMembershipDUnitTest(String name) {
     super(name);
@@ -798,7 +801,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
 
     DistributedMember serverMember = (DistributedMember) vm0.invoke(() -> ClientMembershipDUnitTest.getDistributedMember());
 
-    String serverMemberId = (String) vm0.invoke(() -> ClientMembershipDUnitTest.getMemberId());
+    String serverMemberId = serverMember.toString();
 
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] ports[0]=" + ports[0]);
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInClient] serverMember=" + serverMember);
@@ -1013,9 +1016,9 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     
     ports[0] = startBridgeServer(0);
     assertTrue(ports[0] != 0);
-    String serverMemberId = getMemberId();
-    DistributedMember serverMember = getDistributedMember();
-
+    DistributedMember serverMember = getMemberId();
+    String serverMemberId = serverMember.toString();
+    
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] ports[0]=" + ports[0]);
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] serverMemberId=" + serverMemberId);
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] serverMember=" + serverMember);
@@ -1057,9 +1060,9 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     resetArraysForTesting(fired, member, memberId, isClient);
     
     final Host host = Host.getHost(0);
-    SerializableRunnable createConnectionPool =
-    new CacheSerializableRunnable("Create connectionPool") {
-      public void run2() throws CacheException {
+    SerializableCallable createConnectionPool =
+    new SerializableCallable("Create connectionPool") {
+      public Object call() {
         com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testClientMembershipEventsInServer] create bridge client");
         Properties config = new Properties();
         config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
@@ -1070,13 +1073,13 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
         ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, 2, null);
         createRegion(name, factory.create());
         assertNotNull(getRootRegion().getSubregion(name));
+        return getMemberId();
       }
     };
 
     // create bridge client in vm0...
-    vm0.invoke(createConnectionPool);
-    String clientMemberId = (String) vm0.invoke(() -> ClientMembershipDUnitTest.getMemberId());
-    DistributedMember clientMember = (DistributedMember) vm0.invoke(() -> ClientMembershipDUnitTest.getDistributedMember());
+    DistributedMember clientMember = (DistributedMember)vm0.invoke(createConnectionPool);
+    String clientMemberId = clientMember.toString();
                                                 
     synchronized(listener) {
       if (!fired[JOINED] && !fired[LEFT] && !fired[CRASHED]) {
@@ -1138,8 +1141,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     resetArraysForTesting(fired, member, memberId, isClient);
 
     // reconnect bridge client to test for crashed event
-    vm0.invoke(createConnectionPool);
-    clientMemberId = (String) vm0.invoke(() -> ClientMembershipDUnitTest.getMemberId());
+    clientMemberId = vm0.invoke(createConnectionPool).toString();
                                                 
     synchronized(listener) {
       if (!fired[JOINED] && !fired[LEFT] && !fired[CRASHED]) {
@@ -1318,29 +1320,30 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     
     ports[0] = startBridgeServer(0);
     assertTrue(ports[0] != 0);
-    String serverMemberId = getMemberId();
+    String serverMemberId = getSystem().getDistributedMember().toString();
 
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] ports[0]=" + ports[0]);
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] serverMemberId=" + serverMemberId);
 
     final Host host = Host.getHost(0);
-    SerializableRunnable createPool =
-    new CacheSerializableRunnable("Create connection pool") {
-      public void run2() throws CacheException {
+    SerializableCallable createPool =
+    new SerializableCallable("Create connection pool") {
+      public Object call() {
         com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] create bridge client");
-        Properties config = new Properties();
-        config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
-        config.setProperty(DistributionConfig.LOCATORS_NAME, "");
+        properties = new Properties();
+        properties.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+        properties.setProperty(DistributionConfig.LOCATORS_NAME, "");
         // 11/30/2015 this test is periodically failing during distributedTest runs
         // so we are setting the log-level to fine to figure out what's going on
-        config.setProperty(DistributionConfig.LOG_LEVEL_NAME, "fine");
-        getSystem(config);
+        properties.setProperty(DistributionConfig.LOG_LEVEL_NAME, "fine");
+        getSystem(properties);
         AttributesFactory factory = new AttributesFactory();
         factory.setScope(Scope.LOCAL);
         Pool p = ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, true, -1, -1, null);
         createRegion(name, factory.create());
         assertNotNull(getRootRegion().getSubregion(name));
         assertTrue(p.getServers().size() > 0);
+        return getMemberId();
       }
     };
 
@@ -1350,8 +1353,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     for (int i = 0; i < host.getVMCount(); i++) { 
       final VM vm = Host.getHost(0).getVM(i);
       System.out.println("creating pool in vm_"+i);
-      vm.invoke(createPool);
-      clientMemberIdArray[i] =  String.valueOf(vm.invoke(() -> ClientMembershipDUnitTest.getMemberId()));
+      clientMemberIdArray[i] = vm.invoke(createPool).toString();
     }
     Collection clientMemberIds = Arrays.asList(clientMemberIdArray);
                                                 
@@ -1378,12 +1380,13 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     Map connectedClients = InternalClientMembership.getConnectedClients(false);
     assertNotNull(connectedClients);
     assertEquals(clientMemberIds.size(), connectedClients.size());
+    System.out.println("connectedClients: " + connectedClients + "; clientMemberIds: " + clientMemberIds);
     for (Iterator iter = connectedClients.keySet().iterator(); iter.hasNext();) {
       String connectedClient = (String)iter.next();
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] checking for client " + connectedClient);
+      System.out.println("[testGetConnectedClients] checking for client " + connectedClient);
       assertTrue(clientMemberIds.contains(connectedClient));
       Object[] result = (Object[])connectedClients.get(connectedClient);
-      com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testGetConnectedClients] result: " + 
+      System.out.println("[testGetConnectedClients] result: " + 
                           (result==null? "none"
                               : String.valueOf(result[0])+"; connections="+result[1]));
     }
@@ -1496,6 +1499,14 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     return testGetConnectedServers_port;
   }
 
+  
+  public Properties getDistributedSystemProperties() {
+    if (properties == null) {
+      properties = new Properties();
+    }
+    return properties;
+  }
+
   /**
    * Tests getConnectedClients(boolean onlyClientsNotifiedByThisServer) where
    * onlyClientsNotifiedByThisServer is true.
@@ -1556,7 +1567,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     region.registerInterest("KEY-1");
     region.get("KEY-1");
 
-    final String clientMemberId = getMemberId();
+    final String clientMemberId = getMemberId().toString();
     
     pauseForClientToJoin();
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aaa586a4/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
index 5c2f8a2..d9d8858 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientServerTestCase.java
@@ -34,6 +34,7 @@ import com.gemstone.gemfire.cache.server.CacheServer;
 import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.distributed.DistributedSystem;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.distributed.internal.LonerDistributionManager;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
 import com.gemstone.gemfire.test.dunit.DistributedTestUtils;
 import com.gemstone.gemfire.test.dunit.VM;
@@ -287,27 +288,26 @@ public class ClientServerTestCase extends CacheTestCase {
     return dm.getDistributionManagerId();
   }*/
 
-  protected static String getMemberId() {
-    final InternalDistributedSystem system = InternalDistributedSystem.getAnyInstance();
+  protected static DistributedMember getMemberId() {
     WaitCriterion w = new WaitCriterion() {
 
       public String description() {
-        return "bridge never finished connecting: " + system.getMemberId();
+        return "client never finished connecting: " + system.getMemberId();
       }
 
       public boolean done() {
 //        getLogWriter().warning("checking member id " + system.getMemberId() +
 //            " for member " + system.getDistributedMember() + " hash " +
 //            System.identityHashCode(system.getDistributedMember()));
-        return !system.getMemberId().contains("):0:");
+        return system.getDistributedMember().getPort() > 0;
       }
       
     };
-    int waitMillis = 10000;
+    int waitMillis = 20000;
     int interval = 100;
     boolean throwException = true;
     Wait.waitForCriterion(w, waitMillis, interval, throwException);
-    return system.getMemberId();
+    return system.getDistributedMember();
   }
 
   protected static DistributedMember getDistributedMember() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aaa586a4/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
index 394a155..d84415a 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
@@ -26,14 +26,12 @@ import java.util.Set;
 import com.gemstone.gemfire.InternalGemFireException;
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.cache.AttributesFactory;
-import com.gemstone.gemfire.cache.CacheException;
 import com.gemstone.gemfire.cache.Region;
 import com.gemstone.gemfire.cache.Scope;
 import com.gemstone.gemfire.cache.client.PoolManager;
 import com.gemstone.gemfire.cache.client.ServerConnectivityException;
 import com.gemstone.gemfire.cache.client.internal.PoolImpl;
 import com.gemstone.gemfire.cache30.ClientServerTestCase;
-import com.gemstone.gemfire.cache30.CacheSerializableRunnable;
 import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.distributed.DurableClientAttributes;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
@@ -49,9 +47,10 @@ import com.gemstone.gemfire.management.membership.ClientMembershipListener;
 import com.gemstone.gemfire.management.membership.MembershipEvent;
 import com.gemstone.gemfire.management.membership.MembershipListener;
 import com.gemstone.gemfire.management.membership.UniversalMembershipListenerAdapter;
+import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.IgnoredException;
 import com.gemstone.gemfire.test.dunit.NetworkUtils;
-import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
@@ -388,8 +387,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     
     ports[0] = startBridgeServer(0);
     assertTrue(ports[0] != 0);
-    final String serverMemberId = getMemberId();
-    final DistributedMember serverMember = getDistributedMember();
+    final DistributedMember serverMember = getMemberId();
+    final String serverMemberId = serverMember.toString();
     final Properties serverProperties = getSystem().getProperties();
 
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testLonerClientEventsInServer] ports[0]=" + ports[0]);
@@ -409,10 +408,10 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     adapter.registerMembershipListener(service);
 
 
-    SerializableRunnable createBridgeClient =
-    new CacheSerializableRunnable("Create bridge client") {
+    SerializableCallable createBridgeClient =
+    new SerializableCallable("Create bridge client") {
       @Override
-      public void run2() throws CacheException {
+      public Object call() {
         com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testLonerClientEventsInServer] create bridge client");
         Properties config = new Properties();
         config.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
@@ -423,14 +422,14 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
         ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, false, -1, -1, null);
         createRegion(name, factory.create());
         assertNotNull(getRootRegion().getSubregion(name));
+        return getMemberId();
       }
     };
     
 
     // create bridge client in vm0...
-    vm0.invoke(createBridgeClient);
-    String clientMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    DistributedMember clientMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
+    DistributedMember clientMember = (DistributedMember)vm0.invoke(createBridgeClient);
+    String clientMemberId = clientMember.toString();
                                                 
     // should trigger both adapter and bridge listener but not system listener
     synchronized(adapter) {
@@ -562,9 +561,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
     
     // reconnect bridge client to test for crashed event
-    vm0.invoke(createBridgeClient);
-    clientMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    clientMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
+    clientMember = (DistributedMember)vm0.invoke(createBridgeClient);
+    clientMemberId = clientMember.toString();
                                                 
     synchronized(adapter) {
       if (!firedAdapter[JOINED]) {
@@ -840,8 +838,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     
     ports[0] = startBridgeServer(0);
     assertTrue(ports[0] != 0);
-    final String serverMemberId = getMemberId();
-    final DistributedMember serverMember = getDistributedMember();
+    final DistributedMember serverMember = getMemberId();
+    final String serverMemberId = serverMember.toString();
     final Properties serverProperties = getSystem().getProperties();
 
     //Below removed properties are already got copied as cluster SSL properties 
@@ -867,10 +865,10 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     adapter.registerMembershipListener(service);
     
     
-    SerializableRunnable createBridgeClient =
-    new CacheSerializableRunnable("Create bridge client") {
+    SerializableCallable createBridgeClient =
+    new SerializableCallable("Create bridge client") {
       @Override
-      public void run2() throws CacheException {
+      public Object call() {
         com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[doTestSystemClientEventsInServer] create system bridge client");
         assertTrue(getSystem(serverProperties).isConnected());
         assertFalse(getCache().isClosed());
@@ -879,13 +877,13 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
         ClientServerTestCase.configureConnectionPool(factory, NetworkUtils.getServerHostName(host), ports, false, -1, -1, null);
         createRegion(name, factory.create());
         assertNotNull(getRootRegion().getSubregion(name));
+        return getMemberId();
       }
     };
 
     // create bridge client in vm0...
-    vm0.invoke(createBridgeClient);
-    String clientMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    DistributedMember clientMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
+    DistributedMember clientMember = (DistributedMember)vm0.invoke(createBridgeClient);
+    String clientMemberId = clientMember.toString();
                                                 
     // should trigger both adapter and bridge listener but not system listener
     synchronized(adapter) {
@@ -1029,9 +1027,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
     
     // reconnect bridge client
-    vm0.invoke(createBridgeClient);
-    clientMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    clientMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
+    clientMember = (DistributedMember)vm0.invoke(createBridgeClient);
+    clientMemberId = clientMember.toString();
                                                 
     synchronized(adapter) {
       if (!firedAdapter[JOINED]) {
@@ -1174,9 +1171,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
     
     // reconnect bridge client
-    vm0.invoke(createBridgeClient);
-    clientMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    clientMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
+    clientMember = (DistributedMember)vm0.invoke(createBridgeClient);
+    clientMemberId = clientMember.toString();
                                                 
     synchronized(adapter) {
       if (!firedAdapter[JOINED]) {
@@ -1535,8 +1531,8 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     
     ports[0] = startBridgeServer(0);
     assertTrue(ports[0] != 0);
-    final String serverMemberId = getMemberId();
-    final DistributedMember serverMember = getDistributedMember();
+    final DistributedMember serverMember = getMemberId();
+    final String serverMemberId = serverMember.toString();
     final Properties serverProperties = getSystem().getProperties();
 
     serverProperties.remove(DistributionConfig.SSL_ENABLED_NAME);
@@ -1558,10 +1554,10 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     adapter.registerMembershipListener(service);
 
     // create BridgeServer in vm0...
-    SerializableRunnable createPeerCache =
-    new CacheSerializableRunnable("Create Peer Cache") {
+    SerializableCallable createPeerCache =
+    new SerializableCallable("Create Peer Cache") {
       @Override
-      public void run2() throws CacheException {
+      public Object call() {
         com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInPeerSystem] Create Peer cache");
         getSystem(serverProperties);
         AttributesFactory factory = new AttributesFactory();
@@ -1569,13 +1565,12 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
         Region region = createRegion(name, factory.create());
         assertNotNull(region);
         assertNotNull(getRootRegion().getSubregion(name));
+        return system.getDistributedMember();
       }
     };
     
-    vm0.invoke(createPeerCache);
-    
-    String peerMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    DistributedMember peerMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
+    DistributedMember peerMember = (DistributedMember)vm0.invoke(createPeerCache);
+    String peerMemberId = peerMember.toString();
 
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInPeerSystem] peerMemberId=" + peerMemberId);
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInPeerSystem] peerMember=" + peerMember);
@@ -1836,10 +1831,10 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
 //    DistributedMember clientMember = getDistributedMember();
                                                 
     // create BridgeServer in vm0...
-    SerializableRunnable createBridgeServer =
-    new CacheSerializableRunnable("Create BridgeServer") {
+    SerializableCallable createBridgeServer =
+    new SerializableCallable("Create BridgeServer") {
       @Override
-      public void run2() throws CacheException {
+      public Object call() {
         com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInLonerClient] Create BridgeServer");
         getSystem();
         AttributesFactory factory = new AttributesFactory();
@@ -1854,16 +1849,16 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
           com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().error(e);
           fail(e.getMessage());
         }
+        return system.getDistributedMember();
       }
     };
     
-    vm0.invoke(createBridgeServer);
+    DistributedMember serverMember = (DistributedMember)vm0.invoke(createBridgeServer);
+    String serverMemberId = serverMember.toString();
     
     // gather details for later creation of pool...
     assertEquals(ports[0],
                  (int) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getTestServerEventsInLonerClient_port()));
-    String serverMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
-    DistributedMember serverMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
 
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInLonerClient] ports[0]=" + ports[0]);
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInLonerClient] serverMemberId=" + serverMemberId);
@@ -2025,12 +2020,12 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
     resetArraysForTesting(firedAdapter, memberAdapter, memberIdAdapter, isClientAdapter);
     
     // reconnect bridge client to test for crashed event
-    vm0.invoke(createBridgeServer);
+    serverMember = (DistributedMember)vm0.invoke(createBridgeServer);
+    serverMemberId = serverMember.toString();
     
     // gather details for later creation of pool...
     assertEquals(ports[0],
         (int) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getTestServerEventsInLonerClient_port()));
-    serverMemberId = (String) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getMemberId());
     serverMember = (DistributedMember) vm0.invoke(() -> UniversalMembershipListenerAdapterDUnitTest.getDistributedMember());
 
     com.gemstone.gemfire.test.dunit.LogWriterUtils.getLogWriter().info("[testServerEventsInLonerClient] ports[0]=" + ports[0]);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/aaa586a4/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestUtils.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestUtils.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestUtils.java
index a040a32..c1850de 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestUtils.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestUtils.java
@@ -135,6 +135,7 @@ public class DistributedTestUtils {
       Object value = entry.getValue();
       dsProperties.put(key, value);
     }
+    System.out.println("distributed system properties: " + dsProperties);
     return dsProperties;
   }
   


[20/45] incubator-geode git commit: GEODE-1064 Now we pass correct sever in getCredentail call

Posted by kl...@apache.org.
GEODE-1064 Now we pass correct sever in getCredentail call


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/41f4f14a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/41f4f14a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/41f4f14a

Branch: refs/heads/feature/GEODE-1050
Commit: 41f4f14ae683021f5e3ba77a1cb7c4673928a9f4
Parents: b91a22b
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Wed Mar 9 12:20:31 2016 -0800
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Thu Mar 10 09:47:24 2016 -0800

----------------------------------------------------------------------
 .../gemstone/gemfire/internal/cache/tier/sockets/HandShake.java   | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/41f4f14a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
old mode 100755
new mode 100644
index 100549a..2ea6ca0
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java
@@ -1837,8 +1837,7 @@ public class HandShake implements ClientHandShake
   public void sendCredentialsForWan(OutputStream out, InputStream in) {
 
     try {
-      Properties wanCredentials = getCredentials(this.system
-          .getDistributedMember());
+      Properties wanCredentials = getCredentials(this.id.getDistributedMember());
       DataOutputStream dos = new DataOutputStream(out);
       DataInputStream dis = new DataInputStream(in);
       writeCredentials(dos, dis, wanCredentials, false, this.system.getDistributedMember());


[17/45] incubator-geode git commit: GEODE-562: Moved dependencies to sub projects

Posted by kl...@apache.org.
GEODE-562: Moved dependencies to sub projects

Reduced the scope of certain dependencies and moved them
from the common java.gradle to the specific sub projects
This is a retry from an earlier reverted commit


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8700acca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8700acca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8700acca

Branch: refs/heads/feature/GEODE-1050
Commit: 8700acca6bf63ed97990ffe6d930700f0258f28a
Parents: aaa586a
Author: Jason Huynh <jh...@pivotal.io>
Authored: Thu Mar 10 09:36:08 2016 -0800
Committer: Jason Huynh <jh...@pivotal.io>
Committed: Thu Mar 10 09:37:27 2016 -0800

----------------------------------------------------------------------
 extensions/geode-modules/build.gradle |  3 ++-
 geode-core/build.gradle               | 11 +++++++++--
 geode-pulse/build.gradle              | 12 ++++++++++++
 geode-rebalancer/build.gradle         |  1 +
 geode-web-api/build.gradle            |  7 +++++++
 geode-web/build.gradle                |  7 +++++++
 gradle/java.gradle                    |  9 ---------
 7 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/extensions/geode-modules/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/geode-modules/build.gradle b/extensions/geode-modules/build.gradle
index f96fde6..1389585 100644
--- a/extensions/geode-modules/build.gradle
+++ b/extensions/geode-modules/build.gradle
@@ -26,7 +26,8 @@ test  {
 
 dependencies {
   compile project(':geode-core')
-
+  
+  compile 'org.slf4j:slf4j-api:' + project.'slf4j-api.version'
   compile 'org.apache.tomcat:catalina:' + project.'tomcat6.version'
   compile 'org.apache.tomcat:catalina-ha:' + project.'tomcat6.version'
   compile 'org.apache.tomcat:juli:' + project.'tomcat6.version'

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/geode-core/build.gradle
----------------------------------------------------------------------
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index 1aa07ee..a72d0bf 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -57,7 +57,7 @@ dependencies {
   provided 'org.apache.hadoop:hadoop-annotations:' + project.'hadoop.version'
   provided 'org.apache.hadoop:hadoop-hdfs:' + project.'hadoop.version'
   provided 'org.apache.hadoop:hadoop-mapreduce-client-core:' + project.'hadoop.version'
-  compile 'org.apache.hbase:hbase:' + project.'hbase.version'
+  provided 'org.apache.hbase:hbase:' + project.'hbase.version'
   compile 'org.apache.logging.log4j:log4j-api:' + project.'log4j.version'
   compile 'org.apache.logging.log4j:log4j-core:' + project.'log4j.version'
   runtime 'org.apache.logging.log4j:log4j-slf4j-impl:' + project.'log4j.version'
@@ -73,12 +73,19 @@ dependencies {
   compile 'org.eclipse.jetty:jetty-xml:' + project.'jetty.version'
   compile 'org.fusesource.jansi:jansi:' + project.'jansi.version'
   compile 'org.slf4j:slf4j-api:' + project.'slf4j-api.version'
+  runtime 'org.springframework:spring-aop:' + project.'springframework.version'
   compile 'org.springframework.data:spring-data-commons:' + project.'spring-data-commons.version'
   provided 'org.springframework.data:spring-data-gemfire:' + project.'spring-data-gemfire.version'
+  compile 'org.springframework:spring-beans:' + project.'springframework.version' //only used in AbstractCommandsController
+  compile 'org.springframework:spring-context:' + project.'springframework.version'
+  compile 'org.springframework:spring-context-support:' + project.'springframework.version'
+  compile 'org.springframework:spring-core:' + project.'springframework.version'
+  runtime 'org.springframework:spring-expression:' + project.'springframework.version'
   compile 'org.springframework:spring-tx:' + project.'springframework.version'
+  compile 'org.springframework:spring-web:' + project.'springframework.version'
+  compile 'org.springframework:spring-webmvc:' + project.'springframework.version'
   compile 'org.springframework.shell:spring-shell:' + project.'spring-shell.version'
   compile 'org.xerial.snappy:snappy-java:' + project.'snappy-java.version'
-  compile 'org.apache.hbase:hbase:' + project.'hbase.version'
  
   compile project(':geode-common')
   compile project(':geode-joptsimple')

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/geode-pulse/build.gradle
----------------------------------------------------------------------
diff --git a/geode-pulse/build.gradle b/geode-pulse/build.gradle
index 0cd1ef4..6dc7b02 100755
--- a/geode-pulse/build.gradle
+++ b/geode-pulse/build.gradle
@@ -26,6 +26,17 @@ sourceSets {
 }
 
 dependencies {
+
+
+
+
+  runtime 'org.springframework:spring-aop:' + project.'springframework.version'
+  compile 'org.springframework:spring-beans:' + project.'springframework.version'
+  compile 'org.springframework:spring-context:' + project.'springframework.version'
+  compile 'org.springframework:spring-core:' + project.'springframework.version'
+  compile 'org.springframework:spring-web:' + project.'springframework.version'
+  runtime 'org.springframework:spring-webmvc:' + project.'springframework.version'
+  
   compile 'commons-beanutils:commons-beanutils:' + project.'commons-beanutils.version'
   compile 'commons-collections:commons-collections:' + project.'commons-collections.version'
   compile 'commons-digester:commons-digester:' + project.'commons-digester.version'
@@ -33,6 +44,7 @@ dependencies {
   compile 'org.springframework.ldap:spring-ldap-core:' + project.'spring-ldap-core.version'
   compile 'org.springframework.security:spring-security-config:' + project.'spring-security.version'
   compile 'org.springframework.security:spring-security-core:' + project.'spring-security.version'
+  runtime 'org.springframework:spring-expression:' + project.'springframework.version'
   compile 'org.springframework.security:spring-security-ldap:' + project.'spring-security.version'
   compile 'org.springframework.security:spring-security-web:' + project.'spring-security.version'
   compile 'org.springframework:spring-tx:' + project.'spring-tx.version'

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/geode-rebalancer/build.gradle
----------------------------------------------------------------------
diff --git a/geode-rebalancer/build.gradle b/geode-rebalancer/build.gradle
index 9efdff2..b9992e9 100644
--- a/geode-rebalancer/build.gradle
+++ b/geode-rebalancer/build.gradle
@@ -25,4 +25,5 @@ dependencies {
   // the following test dependencies are needed for mocking cache instance
   testRuntime 'org.apache.hadoop:hadoop-common:' + project.'hadoop.version'
   testRuntime 'org.apache.hadoop:hadoop-hdfs:' + project.'hadoop.version'
+  runtime 'org.apache.hbase:hbase:' + project.'hbase.version'
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/geode-web-api/build.gradle
----------------------------------------------------------------------
diff --git a/geode-web-api/build.gradle b/geode-web-api/build.gradle
index 51848c2..dd5f5ca 100755
--- a/geode-web-api/build.gradle
+++ b/geode-web-api/build.gradle
@@ -18,6 +18,7 @@
 apply plugin: 'war'
 
 dependencies {
+
   compile 'commons-lang:commons-lang:' + project.'commons-lang.version'
   compile 'commons-fileupload:commons-fileupload:' + project.'commons-fileupload.version'
   compile 'com.fasterxml:classmate:' + project.'classmate.version'
@@ -38,8 +39,14 @@ dependencies {
   compile 'org.scala-lang:scala-library:' + project.'scala.version'
   compile 'org.scala-lang:scala-reflect:' + project.'scala.version'
   compile 'org.springframework.hateoas:spring-hateoas:' + project.'spring-hateos.version'
+  runtime 'org.springframework:spring-aop:' + project.'springframework.version'
   compile 'org.springframework:spring-aspects:' + project.'springframework.version'
+  runtime 'org.springframework:spring-beans:' + project.'springframework.version'
+  runtime 'org.springframework:spring-context:' + project.'springframework.version'
+  runtime 'org.springframework:spring-expression:' + project.'springframework.version'
   compile 'org.springframework:spring-oxm:' + project.'springframework.version'
+  runtime 'org.springframework:spring-web:' + project.'springframework.version'
+  runtime 'org.springframework:spring-webmvc:' + project.'springframework.version'
 
   provided 'javax.servlet:javax.servlet-api:' + project.'javax.servlet-api.version'
   provided project(':geode-core')

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/geode-web/build.gradle
----------------------------------------------------------------------
diff --git a/geode-web/build.gradle b/geode-web/build.gradle
index 8ffd9b8..320782d 100755
--- a/geode-web/build.gradle
+++ b/geode-web/build.gradle
@@ -19,7 +19,14 @@ apply plugin: 'war'
 
 dependencies {
   runtime 'org.springframework:spring-aspects:' + project.'springframework.version'
+  runtime 'org.springframework:spring-aop:' + project.'springframework.version'
+  runtime 'org.springframework:spring-beans:' + project.'springframework.version'
+  runtime 'org.springframework:spring-context:' + project.'springframework.version'
+  runtime 'org.springframework:spring-expression:' + project.'springframework.version'
   runtime 'org.springframework:spring-oxm:' + project.'springframework.version'
+  runtime 'org.springframework:spring-web:' + project.'springframework.version'
+  runtime 'org.springframework:spring-webmvc:' + project.'springframework.version'
+
   runtime 'commons-fileupload:commons-fileupload:' + project.'commons-fileupload.version'
 
   testCompile 'org.springframework:spring-test:' + project.'springframework.version'

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8700acca/gradle/java.gradle
----------------------------------------------------------------------
diff --git a/gradle/java.gradle b/gradle/java.gradle
index 06fb766..ba1122b 100644
--- a/gradle/java.gradle
+++ b/gradle/java.gradle
@@ -121,17 +121,8 @@ subprojects {
   }
 
   dependencies {
-    compile 'org.springframework:spring-aop:' + project.'springframework.version'
-    compile 'org.springframework:spring-beans:' + project.'springframework.version'
-    compile 'org.springframework:spring-context:' + project.'springframework.version'
-    compile 'org.springframework:spring-context-support:' + project.'springframework.version'
-    compile 'org.springframework:spring-core:' + project.'springframework.version'
-    compile 'org.springframework:spring-expression:' + project.'springframework.version'
-    compile 'org.springframework:spring-web:' + project.'springframework.version'
-    compile 'org.springframework:spring-webmvc:' + project.'springframework.version'
     compile 'com.github.stephenc.findbugs:findbugs-annotations:' + project.'stephenc-findbugs.version'
     compile 'com.google.code.findbugs:jsr305:' + project.'jsr305.version'
-    compile 'javax.enterprise:cdi-api:' + project.'cdi-api.version'
   }
 }
 


[26/45] incubator-geode git commit: GEODE-990 CI Failure GMSJoinLeaveJUnitTest.testPreparedViewFoundDuringBecomeCoordinator failed with NullPointerException

Posted by kl...@apache.org.
GEODE-990 CI Failure GMSJoinLeaveJUnitTest.testPreparedViewFoundDuringBecomeCoordinator
failed with NullPointerException


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/9fdcca12
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/9fdcca12
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/9fdcca12

Branch: refs/heads/feature/GEODE-1050
Commit: 9fdcca129845a1ffa4c935146cdd04aa2af7e4e8
Parents: 374d2f4
Author: Jianxia Chen <jc...@pivotal.io>
Authored: Thu Mar 10 16:35:05 2016 -0800
Committer: Jianxia Chen <jc...@pivotal.io>
Committed: Thu Mar 10 16:35:05 2016 -0800

----------------------------------------------------------------------
 .../gms/membership/GMSJoinLeaveJUnitTest.java         | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9fdcca12/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
index 202888c..33fa2ea 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/GMSJoinLeaveJUnitTest.java
@@ -1015,14 +1015,20 @@ public class GMSJoinLeaveJUnitTest {
 
     Thread.sleep(2000);
     ViewCreator vc = gmsJoinLeave.getViewCreator();
-    
-    ViewAckMessage vack = new ViewAckMessage(gmsJoinLeaveMemberId, gmsJoinLeave.getPreparedView().getViewId(), true);
+    int viewId = 0;
+    if (gmsJoinLeave.getPreparedView() == null) {
+      viewId = gmsJoinLeave.getView().getViewId();
+    }
+    else {
+      viewId = gmsJoinLeave.getPreparedView().getViewId();
+    }
+    ViewAckMessage vack = new ViewAckMessage(gmsJoinLeaveMemberId, viewId, true);
     vack.setSender(mockMembers[0]);
     gmsJoinLeave.processMessage(vack);
-    vack = new ViewAckMessage(gmsJoinLeaveMemberId, gmsJoinLeave.getPreparedView().getViewId(), true);
+    vack = new ViewAckMessage(gmsJoinLeaveMemberId, viewId, true);
     vack.setSender(mockMembers[1]);
     gmsJoinLeave.processMessage(vack);
-    vack = new ViewAckMessage(gmsJoinLeaveMemberId, gmsJoinLeave.getPreparedView().getViewId(), true);
+    vack = new ViewAckMessage(gmsJoinLeaveMemberId, viewId, true);
     vack.setSender(gmsJoinLeaveMemberId);
     gmsJoinLeave.processMessage(vack);
     


[35/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
GEODE-573: Fix broken image links in javadocs

- moved javadoc images from doc-files to resources/javadoc-images.
- removed un-used images.
- gradle changes to copy images from src/main/resources to build/javadocs


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/6266eb04
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/6266eb04
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/6266eb04

Branch: refs/heads/feature/GEODE-1050
Commit: 6266eb04b5f98b7df97ab414b2eeaa049efbf176
Parents: 7734781
Author: Swapnil Bawaskar <sb...@pivotal.io>
Authored: Fri Feb 26 17:00:31 2016 -0800
Committer: Swapnil Bawaskar <sb...@pivotal.io>
Committed: Fri Mar 11 15:01:16 2016 -0800

----------------------------------------------------------------------
 geode-assembly/build.gradle                     |   10 +
 .../com/gemstone/gemfire/DataSerializable.java  |    2 +-
 .../internal/doc-files/config-hierarchy.fig     |  156 -
 .../admin/internal/doc-files/health-classes.fig |  233 --
 .../admin/internal/doc-files/health-classes.gif |  Bin 8973 -> 0 bytes
 .../gemfire/admin/internal/package.html         |    4 +-
 .../client/doc-files/example-client-cache.xml   |   46 -
 .../doc-files/ConnectionManagerImpl.dia         |  Bin 2034 -> 0 bytes
 .../doc-files/ConnectionManagerImpl.png         |  Bin 11825 -> 0 bytes
 .../client/internal/doc-files/PoolImpl.dia      |  Bin 3083 -> 0 bytes
 .../internal/doc-files/QueueManagerImpl.dia     |  Bin 2180 -> 0 bytes
 .../internal/doc-files/QueueManagerImpl.png     |  Bin 15075 -> 0 bytes
 .../doc-files/client_static_diagram.png         |  Bin 29430 -> 0 bytes
 .../gemfire/cache/client/internal/package.html  |    6 +-
 .../gemstone/gemfire/cache/client/package.html  |    2 +-
 .../gemfire/cache/doc-files/architecture.fig    |  170 -
 .../gemfire/cache/doc-files/architecture.gif    |  Bin 9983 -> 0 bytes
 .../cache/doc-files/entry-life-cycle.fig        |   64 -
 .../cache/doc-files/entry-life-cycle.gif        |  Bin 3357 -> 0 bytes
 .../gemfire/cache/doc-files/example-cache.xml   |   98 -
 .../gemfire/cache/doc-files/example2-cache.xml  |   63 -
 .../gemfire/cache/doc-files/example3-cache.xml  |   60 -
 .../cache/doc-files/partitioned-regions.fig     |  267 --
 .../cache/doc-files/partitioned-regions.gif     |  Bin 9494 -> 0 bytes
 .../com/gemstone/gemfire/cache/package.html     |    8 +-
 .../internal/doc-files/config-classes.fig       |  138 -
 .../internal/doc-files/config-classes.gif       |  Bin 4205 -> 0 bytes
 .../doc-files/distribution-managers.fig         |   76 -
 .../doc-files/distribution-managers.gif         |  Bin 3267 -> 0 bytes
 .../internal/locks/doc-files/elder.fig          |   84 -
 .../internal/locks/doc-files/elder.jpg          |  Bin 55182 -> 0 bytes
 .../internal/locks/doc-files/turks.fig          |  128 -
 .../internal/locks/doc-files/turks.jpg          |  Bin 79859 -> 0 bytes
 .../distributed/internal/locks/package.html     |    4 +-
 .../gemfire/distributed/internal/package.html   |    2 +-
 .../doc-files/data-serialization-exceptions.fig |  135 -
 .../doc-files/data-serialization-exceptions.gif |  Bin 3666 -> 0 bytes
 .../admin/doc-files/class-hierarchy.fig         |  224 -
 .../admin/doc-files/class-hierarchy.gif         |  Bin 11971 -> 0 bytes
 .../cache/doc-files/BucketAdvisor-state.png     |  Bin 39148 -> 0 bytes
 .../internal/cache/doc-files/eventmatrix.xls    |  Bin 24576 -> 0 bytes
 .../cache/doc-files/extensible-hashing.fig      |  159 -
 .../cache/doc-files/extensible-hashing.gif      |  Bin 6605 -> 0 bytes
 .../cache/doc-files/jcache-get-flow.fig         |  349 --
 .../cache/doc-files/jcache-get-flow.pdf         |  Bin 7519 -> 0 bytes
 .../cache/doc-files/jcache-put-flow.fig         |  359 --
 .../cache/doc-files/jcache-put-flow.pdf         |  Bin 7667 -> 0 bytes
 .../doc-files/jcache-update-message-flow.fig    |  334 --
 .../doc-files/jcache-update-message-flow.pdf    |  Bin 5937 -> 0 bytes
 .../cache/doc-files/partitioned-regions.fig     |  255 --
 .../cache/doc-files/partitioned-regions.gif     |  Bin 9273 -> 0 bytes
 .../internal/cache/doc-files/properties.html    | 3937 ------------------
 .../cache/doc-files/region-implementation.fig   |  262 --
 .../gemfire/internal/cache/package.html         |    8 +-
 .../gemfire/internal/cache/properties.html      | 3937 ++++++++++++++++++
 .../doc-files/communication-architecture.fig    |  158 -
 .../doc-files/communication-architecture.gif    |  Bin 5485 -> 0 bytes
 .../gemfire/internal/doc-files/cs-maps.fig      |  150 -
 .../gemfire/internal/doc-files/cs-maps.gif      |  Bin 5951 -> 0 bytes
 .../gemfire/internal/doc-files/ds-map.fig       |  105 -
 .../gemfire/internal/doc-files/ds-map.gif       |  Bin 4867 -> 0 bytes
 .../internal/doc-files/merge-log-files.fig      |  153 -
 .../internal/doc-files/merge-log-files.gif      |  Bin 2646 -> 0 bytes
 .../gemfire/internal/logging/MergeLogFiles.java |    2 +-
 .../internal/util/doc-files/call-stack.fig      |   34 -
 .../internal/util/doc-files/class-loaders.fig   |   49 -
 .../javadoc-images/BucketAdvisor-state.png      |  Bin 0 -> 39148 bytes
 .../javadoc-images/ConnectionManagerImpl.dia    |  Bin 0 -> 2034 bytes
 .../javadoc-images/ConnectionManagerImpl.png    |  Bin 0 -> 11825 bytes
 .../javadoc-images/QueueManagerImpl.dia         |  Bin 0 -> 2180 bytes
 .../javadoc-images/QueueManagerImpl.png         |  Bin 0 -> 15075 bytes
 .../javadoc-images/class-hierarchy.fig          |  224 +
 .../javadoc-images/class-hierarchy.gif          |  Bin 0 -> 11971 bytes
 .../javadoc-images/client_static_diagram.png    |  Bin 0 -> 29430 bytes
 .../data-serialization-exceptions.fig           |  135 +
 .../data-serialization-exceptions.gif           |  Bin 0 -> 3666 bytes
 .../javadoc-images/distribution-managers.fig    |   76 +
 .../javadoc-images/distribution-managers.gif    |  Bin 0 -> 3267 bytes
 .../src/main/resources/javadoc-images/elder.fig |   84 +
 .../src/main/resources/javadoc-images/elder.jpg |  Bin 0 -> 55182 bytes
 .../javadoc-images/entry-life-cycle.fig         |   64 +
 .../javadoc-images/entry-life-cycle.gif         |  Bin 0 -> 3357 bytes
 .../resources/javadoc-images/eventmatrix.xls    |  Bin 0 -> 24576 bytes
 .../resources/javadoc-images/example-cache.xml  |   98 +
 .../javadoc-images/example-client-cache.xml     |   46 +
 .../resources/javadoc-images/example2-cache.xml |   63 +
 .../resources/javadoc-images/example3-cache.xml |   60 +
 .../javadoc-images/extensible-hashing.fig       |  159 +
 .../javadoc-images/extensible-hashing.gif       |  Bin 0 -> 6605 bytes
 .../resources/javadoc-images/health-classes.gif |  Bin 0 -> 8973 bytes
 .../javadoc-images/jcache-get-flow.fig          |  349 ++
 .../javadoc-images/jcache-get-flow.pdf          |  Bin 0 -> 7519 bytes
 .../javadoc-images/jcache-put-flow.fig          |  359 ++
 .../javadoc-images/jcache-put-flow.pdf          |  Bin 0 -> 7667 bytes
 .../jcache-update-message-flow.fig              |  334 ++
 .../jcache-update-message-flow.pdf              |  Bin 0 -> 5937 bytes
 .../javadoc-images/merge-log-files.fig          |  153 +
 .../javadoc-images/merge-log-files.gif          |  Bin 0 -> 2646 bytes
 .../javadoc-images/partitioned-regions.fig      |  255 ++
 .../javadoc-images/partitioned-regions.gif      |  Bin 0 -> 9273 bytes
 .../src/main/resources/javadoc-images/turks.fig |  128 +
 .../src/main/resources/javadoc-images/turks.jpg |  Bin 0 -> 79859 bytes
 102 files changed, 6553 insertions(+), 8265 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 22a5561..d2a5a65 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -212,6 +212,16 @@ task docs(type: Javadoc) {
     exclude 'com/gemstone/gemfire/distributed/**/util/**/'
     exclude 'com/gemstone/gemfire/test/**/'
     destinationDir = docsDir
+
+    doLast {
+      parent.subprojects.each { project ->
+        copy {
+          from project.sourceSets.main.resources.srcDirs
+          into docsDir
+          include 'javadoc-images/*'
+        }
+      }
+   }
 }
 
 gradle.taskGraph.whenReady( { graph ->

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/DataSerializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/DataSerializable.java b/geode-core/src/main/java/com/gemstone/gemfire/DataSerializable.java
index 4bacef4..2a0dc48 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/DataSerializable.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/DataSerializable.java
@@ -72,7 +72,7 @@ import java.io.*;
  * <P>
  *
  * <CENTER>
- * <IMG src="doc-files/data-serialization-exceptions.gif" 
+ * <IMG src="{@docRoot}/javadoc-images/data-serialization-exceptions.gif"
  *      HEIGHT="219" WIDTH="698">
  * </CENTER>
  *

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/config-hierarchy.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/config-hierarchy.fig b/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/config-hierarchy.fig
deleted file mode 100644
index 7d3f34d..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/config-hierarchy.fig
+++ /dev/null
@@ -1,156 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 150 3825 2325 4725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 150 4200 2325 4200
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 150 4725 2325 4725 2325 3825 150 3825 150 4725
-4 0 0 50 -1 1 12 0.0000 4 180 630 300 4425 port : int\001
-4 0 0 50 -1 1 12 0.0000 4 180 1485 300 4665 bindAddress : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1920 300 4050 DistributionLocatorConfig\001
--6
-6 2475 3825 4500 4125
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2475 3825 4500 3825 4500 4125 2475 4125 2475 3825
-4 0 0 50 -1 1 12 0.0000 4 180 1785 2625 4050 GemFireManagerConfig\001
--6
-6 4650 3825 6375 4500
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4650 4500 6375 4500 6375 3825 4650 3825 4650 4500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4650 4200 6375 4200
-4 0 0 50 -1 1 12 0.0000 4 180 1545 4725 4425 cacheXmlFile : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1395 4800 4050 CacheServerConfig\001
--6
-6 6525 3825 7950 4125
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6525 3825 7950 3825 7950 4125 6525 4125 6525 3825
-4 0 0 50 -1 1 12 0.0000 4 180 1290 6600 4050 GFXServerConfig\001
--6
-6 3225 675 5250 2925
-6 3300 2400 4575 2850
-6 3300 2400 4575 2625
-4 0 0 50 -1 1 12 0.0000 4 180 1245 3300 2565 +validate() : void\001
--6
-4 0 0 50 -1 1 12 0.0000 4 180 1230 3300 2805 +clone() : Object\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3225 2925 5250 2925 5250 675 3225 675 3225 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3225 1050 5250 1050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3225 2325 5250 2325
-4 0 0 50 -1 1 12 0.0000 4 180 885 3300 1275 host : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1860 3300 1515 workingDirectory : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1830 3300 1755 productDirectory : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1830 3300 1995 remoteCommand : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 720 3300 2235 id : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1560 3450 900 ManagedEntityConfig\001
--6
-6 6750 7725 7650 8025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6750 7725 7650 7725 7650 8025 6750 8025 6750 7725
-4 0 0 50 -1 1 12 0.0000 4 135 810 6825 7950 GFXServer\001
--6
-6 525 7725 2100 8025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 525 7725 2100 7725 2100 8025 525 8025 525 7725
-4 0 0 50 -1 1 12 0.0000 4 135 1440 600 7950 DistributionLocator\001
--6
-6 2025 5625 3600 7050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2025 7050 3600 7050 3600 5625 2025 5625 2025 7050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2025 6000 3600 6000
-4 0 0 50 -1 1 12 0.0000 4 180 1440 2100 6225 isRunning : boolean\001
-4 0 0 50 -1 1 12 0.0000 4 180 900 2100 6465 start() : void\001
-4 0 0 50 -1 1 12 0.0000 4 180 870 2100 6705 stop() : void\001
-4 0 0 50 -1 1 12 0.0000 4 180 1200 2100 6945 getLog() : String\001
-4 0 0 50 -1 1 12 0.0000 4 180 1080 2250 5850 ManagedEntity\001
--6
-6 5175 5625 7275 6975
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5175 6975 7275 6975 7275 5625 5175 5625 5175 6975
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5175 6000 7275 6000
-4 0 0 50 -1 1 12 0.0000 4 180 1875 5325 6225 type : SystemMemberType\001
-4 0 0 50 -1 1 12 0.0000 4 180 1455 5325 6465 licsense : Properties\001
-4 0 0 50 -1 1 12 0.0000 4 180 1110 5325 6705 version : String\001
-4 0 0 50 -1 1 12 0.0000 4 135 1425 5325 6945 hasCache : boolean\001
-4 0 0 50 -1 1 12 0.0000 4 180 1095 5700 5850 SystemMember\001
--6
-6 4875 7725 5925 8025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4875 7725 5925 7725 5925 8025 4875 8025 4875 7725
-4 0 0 50 -1 1 12 0.0000 4 135 915 4950 7950 CacheServer\001
--6
-6 2925 7725 4350 8025
-6 2925 7725 4350 8025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2925 7725 4350 7725 4350 8025 2925 8025 2925 7725
-4 0 0 50 -1 1 12 0.0000 4 180 1305 3000 7950 GemFireManager\001
--6
--6
-6 150 9375 2550 9675
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 150 9375 2550 9375 2550 9675 150 9675 150 9375
-4 0 0 50 -1 2 12 0.0000 4 180 2250 225 9600 DistributionLocatorJmxImpl\001
--6
-6 525 8625 2625 8925
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 525 8625 2625 8625 2625 8925 525 8925 525 8625
-4 0 0 50 -1 2 12 0.0000 4 180 1920 600 8850 DistributionLocatorImpl\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 1050 3825 1050 3375 7200 3375 7200 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3450 3375 3450 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5475 3375 5475 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 4200 3375 4200 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 1125 7725 1125 7500 7200 7500 7200 7725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3375 7725 3375 7500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5250 7725 5250 7500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 2700 7500 2700 7050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 4200 7725 4200 7275 7350 7275 7350 7725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 6150 7275 6150 6975
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5475 7725 5475 7275
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 750 7725 750 4725
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 3825 7725 3825 4125
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 4950 7725 4950 4500
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 7500 7725 7500 4125
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 300 9375 300 4725
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 1275 8625 1275 8025
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 1275 9375 1275 8925

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.fig b/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.fig
deleted file mode 100644
index b2f8342..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.fig
+++ /dev/null
@@ -1,233 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 300 2475 4050 4050
-6 2550 3000 4050 3300
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2550 3000 4050 3000 4050 3300 2550 3300 2550 3000
-4 1 0 50 -1 1 12 0.0000 4 180 1410 3300 3225 CacheHealthConfig\001
--6
-6 300 3000 1950 3300
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 300 3000 1950 3000 1950 3300 300 3300 300 3000
-4 1 0 50 -1 1 12 0.0000 4 180 1560 1125 3225 MemberHealthConfig\001
--6
-6 1350 3750 3150 4050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1350 3750 3150 3750 3150 4050 1350 4050 1350 3750
-4 1 0 50 -1 1 12 0.0000 4 180 1605 2250 3975 GemFireHealthConfig\001
--6
-6 1200 2475 3450 2775
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1200 2475 3450 2475 3450 2775 1200 2775 1200 2475
-4 1 0 50 -1 1 12 0.0000 4 180 2115 2325 2700 SystemManagerHealthConfig\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 4
-	1 0 1.00 150.00 150.00
-	1 0 1.00 150.00 150.00
-	 1125 3300 1125 3600 3300 3600 3300 3300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	1 0 1.00 150.00 150.00
-	 2250 2775 2250 3750
--6
-6 1125 5925 3525 6225
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1125 5925 3525 5925 3525 6225 1125 6225 1125 5925
-4 1 0 50 -1 1 12 0.0000 4 180 2265 2325 6150 DistributedSystemHealthConfig\001
--6
-6 2325 5025 3525 5325
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2325 5025 3525 5025 3525 5325 2325 5325 2325 5025
-4 1 0 50 -1 1 12 0.0000 4 135 1125 2925 5250 GemFireHealth\001
--6
-6 4950 5925 7950 6225
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4950 5925 7950 5925 7950 6225 4950 6225 4950 5925
-4 1 0 50 -1 2 12 0.0000 4 180 2850 6450 6150 DistributedSystemHealthConfigImpl\001
--6
-6 9000 6750 12150 7425
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9075 6825 12075 6825 12075 7350 9075 7350 9075 6825
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9000 6750 12150 6750 12150 7425 9000 7425 9000 6750
-4 2 0 50 -1 -1 10 0.0000 4 135 2760 11925 7050 Class Hierarchy of the "Health" admin classes\001
-4 2 0 50 -1 -1 10 0.0000 6 105 765 11925 7230 GemFire 3.5\001
--6
-6 5775 1050 7275 1350
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7275 1350 5775 1350 5775 1050 7275 1050 7275 1350
-4 1 0 50 -1 1 12 0.0000 4 180 1365 6525 1275 java.io.Serializable\001
--6
-6 5475 1725 7725 2025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5475 1725 7725 1725 7725 2025 5475 2025 5475 1725
-4 1 0 50 -1 2 12 0.0000 4 180 2055 6600 1950 MemberHealthConfigImpl\001
--6
-6 5475 3750 7725 4050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5475 3750 7725 3750 7725 4050 5475 4050 5475 3750
-4 1 0 50 -1 2 12 0.0000 4 180 2070 6600 3975 GemFireHealthConfigImpl\001
--6
-6 5625 2400 7725 2700
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5625 2400 7725 2400 7725 2700 5625 2700 5625 2400
-4 1 0 50 -1 2 12 0.0000 4 180 1890 6675 2625 CacheHealthConfigImpl\001
--6
-6 5325 3075 8175 3375
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5325 3075 8175 3075 8175 3375 5325 3375 5325 3075
-4 1 0 50 -1 2 12 0.0000 4 180 2655 6750 3300 SystemManagerHealthConfigImpl\001
--6
-6 8775 3075 11475 3375
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8775 3075 11475 3075 11475 3375 8775 3375 8775 3075
-4 1 0 50 -1 2 12 0.0000 4 180 2520 10125 3300 SystemManagerHealthEvaluator\001
--6
-6 10125 3750 12225 4050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 10125 3750 12225 3750 12225 4050 10125 4050 10125 3750
-4 1 0 50 -1 2 12 0.0000 4 135 1935 11175 3975 GemFireHealthEvaluator\001
--6
-6 8025 975 8775 1275
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8025 975 8775 975 8775 1275 8025 1275 8025 975
-4 1 0 50 -1 1 12 0.0000 4 135 630 8400 1200 Statistics\001
--6
-6 9600 975 11625 1275
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9600 975 11625 975 11625 1275 9600 1275 9600 975
-4 0 0 50 -1 3 12 0.0000 4 135 1845 9675 1200 AbstractHealthEvaluator\001
--6
-6 9000 2400 10950 2700
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9000 2400 10950 2400 10950 2700 9000 2700 9000 2400
-4 1 0 50 -1 2 12 0.0000 4 135 1755 9975 2625 CacheHealthEvaluator\001
--6
-6 8325 1725 10425 2025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8325 1725 10425 1725 10425 2025 8325 2025 8325 1725
-4 1 0 50 -1 2 12 0.0000 4 135 1920 9375 1950 MemberHealthEvaluator\001
--6
-6 4725 4350 6150 4650
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4725 4350 6150 4350 6150 4650 4725 4650 4725 4350
-4 1 0 50 -1 1 12 0.0000 4 135 1305 5475 4575 JoinLeaveListener\001
--6
-6 6600 4350 9600 4650
-6 6600 4350 7875 4650
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6600 4350 7875 4350 7875 4650 6600 4650 6600 4350
-4 1 0 50 -1 1 12 0.0000 4 135 1065 7275 4575 HealthListener\001
--6
-6 8550 4350 9600 4650
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8550 4350 9600 4350 9600 4650 8550 4650 8550 4350
-4 1 0 50 -1 1 12 0.0000 4 135 900 9075 4575 GemFireVM\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 7875 4500 8550 4500
--6
-6 5175 5025 6900 5325
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5175 5025 6900 5025 6900 5325 5175 5325 5175 5025
-4 1 0 50 -1 2 12 0.0000 4 180 1545 6000 5250 GemFireHealthImpl\001
--6
-6 10350 4725 12000 5025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 10350 4725 12000 4725 12000 5025 10350 5025 10350 4725
-4 0 0 50 -1 2 12 0.0000 4 180 1515 10425 4950 HealthMonitorImpl\001
--6
-6 8625 5925 11475 6225
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8625 5925 11475 5925 11475 6225 8625 6225 8625 5925
-4 1 0 50 -1 2 12 0.0000 4 180 2715 10050 6150 DistributedSystemHealthEvaluator\001
--6
-2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
-	 4500 525 4500 7500
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 1 2
-	1 0 1.00 150.00 150.00
-	 3150 3900 5475 3900
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 5025 2625 4050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 2925 5325 2925 5925
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 1 2
-	1 0 1.00 150.00 150.00
-	 3525 5175 5175 5175
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 1 2
-	1 0 1.00 150.00 150.00
-	 3525 6075 4950 6075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 5550 5325 5550 5925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 8625 6075 7950 6075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 6375 5025 6375 4050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 6525 3750 6525 3375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 6525 3075 6525 2700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 6525 2400 6525 2025
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 6525 1725 6525 1350
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 8775 3225 8175 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 10125 3900 7725 3900
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 8325 1875 7725 1875
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 75.00 150.00
-	 8925 2550 7725 2550
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 11325 3075 11325 1275
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 9975 1725 9975 1275
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9600 1125 8775 1125
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 60.00 120.00
-	 10425 1875 11925 1875 11925 3750
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 60.00 120.00
-	 10950 2550 11925 2550
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 10800 2400 10800 1275
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 5475 5025 5475 4650
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 150.00 150.00
-	 6750 5025 6750 4650
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 11100 4725 11100 4050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 60.00 120.00
-	 6375 5325 6375 5625 9975 5625 9975 5925
-4 1 0 50 -1 -1 12 0.0000 4 75 90 2700 4200 *\001
-4 2 0 50 -1 -1 12 0.0000 4 180 2085 4350 675 com.gemstone.gemfire.admin\001
-4 0 0 50 -1 -1 12 0.0000 4 180 2655 4650 675 com.gemstone.gemfire.admin.internal\001
-4 1 0 50 -1 -1 12 0.0000 4 75 90 8925 1050 *\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.gif b/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.gif
deleted file mode 100644
index 131347a..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/doc-files/health-classes.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/package.html b/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/package.html
index 13cf928..a233ec5 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/admin/internal/package.html
@@ -46,8 +46,8 @@ component has changed, it alerts the administrator process via a
 of GemFire are implemented.</P>
 
 <CENTER>
-<IMG src="doc-files/health-classes.gif" HEIGHT="803" WIDTH="473"/>
+<IMG src="{@docRoot}/javadoc-images/health-classes.gif" HEIGHT="803" />
 </CENTER>
 
 </BODY>
-</HTML>
\ No newline at end of file
+</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/doc-files/example-client-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/doc-files/example-client-cache.xml b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/doc-files/example-client-cache.xml
deleted file mode 100644
index bddeb9f..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/doc-files/example-client-cache.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- A sample client GemFire declarative caching XML File -->
-
-<!DOCTYPE client-cache PUBLIC
-  "-//GemStone Systems, Inc.//GemFire Declarative Cache 6.5//EN"
-  "http://www.gemstone.com/dtd/cache6_5.dtd">
-<client-cache copy-on-read="false">
-
-  <pool name="myPool">
-    <locator host="myHostName" port="41111"/>
-  </pool>
-
-  <!-- Create a proxy region -->
-  <region name="region1" refid="PROXY"/>
-
-  <!-- Create a caching proxy region -->
-  <region name="region2" refid="CACHING_PROXY">
-    <region-attributes>
-
-      <entry-time-to-live>
-        <expiration-attributes action="destroy" timeout="3000"/>
-      </entry-time-to-live>
-
-      <entry-idle-time>
-        <expiration-attributes timeout="600"/>
-      </entry-idle-time>
-    </region-attributes>
-  </region>
-</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.dia
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.dia b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.dia
deleted file mode 100644
index 39d8f3d..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.dia and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.png b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.png
deleted file mode 100644
index 773fabe..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/ConnectionManagerImpl.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/PoolImpl.dia
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/PoolImpl.dia b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/PoolImpl.dia
deleted file mode 100644
index 731aeb0..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/PoolImpl.dia and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.dia
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.dia b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.dia
deleted file mode 100644
index 8cc7d0e..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.dia and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.png b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.png
deleted file mode 100644
index d48bbf6..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/QueueManagerImpl.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/client_static_diagram.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/client_static_diagram.png b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/client_static_diagram.png
deleted file mode 100644
index afbeaa4..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/doc-files/client_static_diagram.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/package.html b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/package.html
index 18443ca..98abf85 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/package.html
@@ -20,7 +20,7 @@ limitations under the License.
 <P>
 
 <CENTER>
-<IMG SRC="doc-files/client_static_diagram.png"
+<IMG SRC="{@docRoot}/javadoc-images/client_static_diagram.png"
      />
      <h3> Static Architecture Overview </h3>
 </CENTER>
@@ -41,7 +41,7 @@ Operations are performed on the PoolImpl. The pool impl class has methods, such
 The ConnectionManagerImpl class owns the client to server connections. It creates new connections (using a connection factory and connection source) and allows the pool to check out/check in connections. It keeps track of the maximum and minimum number of connections allowed, and the idle timeout for connections.
 
 <CENTER>
-<IMG SRC="doc-files/ConnectionManagerImpl.png"
+<IMG SRC="{@docRoot}/javadoc-images/ConnectionManagerImpl.png"
      />
      <h3> Connection Manager Static Diagram </h3>
 </CENTER>
@@ -51,7 +51,7 @@ The ConnectionManagerImpl class owns the client to server connections. It create
 The ConnectionManagerImpl class owns the server to client connections. It creates new server to client connections (using a connection factory and connection source). It's responsible for maintaing the redundancy of the connections, and recovering interest on new connections.
 
 <CENTER>
-<IMG SRC="doc-files/QueueManagerImpl.png"
+<IMG SRC="{@docRoot}/javadoc-images/QueueManagerImpl.png"
      />
      <h3> Connection Manager Static Diagram </h3>
 </CENTER>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/client/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/package.html b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/package.html
index 224951d..9898040 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/package.html
@@ -61,7 +61,7 @@ The top level element must be a client-cache element.
 <p>The Document Type Definition for a declarative cache XML file can
 be found in <code>"doc-files/cache6_5.dtd"</code>.
 For examples of declarative cache XML files see <A
-href="doc-files/example-client-cache.xml">example1</A>.
+href="{@docRoot}/javadoc-images/example-client-cache.xml">example1</A>.
 
   </BODY>
 </HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.fig b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.fig
deleted file mode 100644
index 27c150e..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.fig
+++ /dev/null
@@ -1,170 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 4875 4350 6075 5175
-2 4 0 3 0 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 6000 5100 4950 5100 4950 4425 6000 4425 6000 5100
-4 1 0 50 -1 0 12 0.0000 4 105 795 5475 4725 Distributed\001
-4 1 0 50 -1 0 12 0.0000 4 135 525 5475 4965 System\001
--6
-6 9075 900 11250 3600
-6 9900 1875 10725 2175
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 10725 2175 10725 1875 9900 1875 9900 2175 10725 2175
-4 0 1 50 -1 0 12 0.0000 4 105 705 9975 2100 Attributes\001
--6
-6 9900 2325 10350 3075
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 2475 10350 2475
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 2625 10350 2625
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 2775 10350 2775
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 2925 10350 2925
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9900 2325 10350 2325 10350 3075 9900 3075 9900 2325
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 10125 2325 10125 3075
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9450 1500 10950 1500 10950 3300 9450 3300 9450 1500
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9075 900 11250 900 11250 3600 9075 3600 9075 900
-4 0 1 50 -1 0 12 0.0000 4 105 690 9150 1125 User VM\001
-4 0 1 50 -1 0 12 0.0000 4 150 990 9600 1725 Cache Region\001
--6
-6 9150 3825 11250 4275
-4 0 0 50 -1 1 12 0.0000 4 165 1740 9150 3975 A region whose contents\001
-4 0 0 50 -1 1 12 0.0000 4 165 2025 9150 4215 are stored in the VM's heap.\001
--6
-6 9075 6225 11250 8925
-6 9900 7200 10725 7500
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 10725 7500 10725 7200 9900 7200 9900 7500 10725 7500
-4 0 1 50 -1 0 12 0.0000 4 105 705 9975 7425 Attributes\001
--6
-6 9900 7650 10350 8400
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 7800 10350 7800
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 7950 10350 7950
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 8100 10350 8100
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9900 8250 10350 8250
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9900 7650 10350 7650 10350 8400 9900 8400 9900 7650
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 10125 7650 10125 8400
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9450 6825 10950 6825 10950 8625 9450 8625 9450 6825
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9075 6225 11250 6225 11250 8925 9075 8925 9075 6225
-4 0 1 50 -1 0 12 0.0000 4 105 690 9150 6450 User VM\001
-4 0 1 50 -1 0 12 0.0000 4 150 990 9600 7050 Cache Region\001
--6
-6 4425 6225 6600 8925
-6 5250 7200 6075 7500
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 6075 7500 6075 7200 5250 7200 5250 7500 6075 7500
-4 0 1 50 -1 0 12 0.0000 4 105 705 5325 7425 Attributes\001
--6
-6 5250 7650 5700 8400
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5250 7800 5700 7800
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5250 7950 5700 7950
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5250 8100 5700 8100
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5250 8250 5700 8250
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5250 7650 5700 7650 5700 8400 5250 8400 5250 7650
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5475 7650 5475 8400
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4800 6825 6300 6825 6300 8625 4800 8625 4800 6825
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4425 6225 6600 6225 6600 8925 4425 8925 4425 6225
-4 0 1 50 -1 0 12 0.0000 4 105 690 4500 6450 User VM\001
-4 0 1 50 -1 0 12 0.0000 4 150 990 4950 7050 Cache Region\001
--6
-6 6900 375 8550 8925
-2 1 1 1 0 7 50 -1 -1 8.000 0 0 -1 0 0 2
-	 7725 450 7725 8925
-4 1 0 50 -1 0 12 0.0000 4 120 705 7275 525 Machine1\001
-4 1 0 50 -1 0 12 0.0000 4 105 705 8175 525 Machine2\001
--6
-6 825 375 3000 3075
-6 1650 1350 2475 1650
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 2475 1650 2475 1350 1650 1350 1650 1650 2475 1650
-4 0 1 50 -1 0 12 0.0000 4 105 705 1725 1575 Attributes\001
--6
-6 1650 1800 2100 2550
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 1950 2100 1950
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 2100 2100 2100
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 2250 2100 2250
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 2400 2100 2400
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1650 1800 2100 1800 2100 2550 1650 2550 1650 1800
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1875 1800 1875 2550
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1200 975 2700 975 2700 2775 1200 2775 1200 975
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 825 375 3000 375 3000 3075 825 3075 825 375
-4 0 1 50 -1 0 12 0.0000 4 105 690 900 600 User VM\001
-4 0 1 50 -1 0 12 0.0000 4 150 990 1350 1200 Cache Region\001
--6
-6 825 5550 3000 8250
-6 1650 6525 2475 6825
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 2475 6825 2475 6525 1650 6525 1650 6825 2475 6825
-4 0 1 50 -1 0 12 0.0000 4 105 705 1725 6750 Attributes\001
--6
-6 1650 6975 2100 7725
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 7125 2100 7125
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 7275 2100 7275
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 7425 2100 7425
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1650 7575 2100 7575
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1650 6975 2100 6975 2100 7725 1650 7725 1650 6975
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1875 6975 1875 7725
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1200 6150 2700 6150 2700 7950 1200 7950 1200 6150
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 825 5550 3000 5550 3000 8250 825 8250 825 5550
-4 0 1 50 -1 0 12 0.0000 4 105 690 900 5775 User VM\001
-4 0 1 50 -1 0 12 0.0000 4 150 990 1350 6375 Cache Region\001
--6
-2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3000 1500 5175 4425
-2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5175 5100 3000 7125
-2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6000 4500 9075 1425
-2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6000 4950 9075 6750
-2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5475 6225 5475 5100

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.gif b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.gif
deleted file mode 100644
index 82406b2..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/architecture.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.fig b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.fig
deleted file mode 100644
index e3108e5..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.fig
+++ /dev/null
@@ -1,64 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-5 1 0 1 0 7 50 -1 -1 0.000 0 1 1 0 8243.750 2775.000 8175 3150 8625 2775 8175 2400
-	0 0 1.00 60.00 120.00
-5 1 0 1 0 7 50 -1 -1 0.000 0 0 1 0 4537.500 11400.000 1575 1875 4500 1425 7500 1875
-	0 0 1.00 60.00 120.00
-5 1 0 1 0 7 50 -1 -1 0.000 0 0 1 0 4575.000 -8137.500 7575 3675 4575 4050 1575 3675
-	0 0 1.00 60.00 120.00
-6 975 1875 2325 3675
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 975 1875 2325 1875 2325 3675 975 3675 975 1875
-4 1 1 50 -1 0 12 0.0000 4 180 510 1650 2175 Region\001
--6
-6 3900 1875 5250 3675
-6 4050 2625 5100 3000
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4050 2625 5100 2625 5100 3000 4050 3000 4050 2625
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4500 2625 4500 3000
-4 1 1 50 -1 0 12 0.0000 4 180 255 4275 2850 key\001
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3900 1875 5250 1875 5250 3675 3900 3675 3900 1875
-4 1 1 50 -1 0 12 0.0000 4 180 510 4575 2175 Region\001
--6
-6 6825 1875 8175 3675
-6 6975 2625 8025 3000
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6975 2625 8025 2625 8025 3000 6975 3000 6975 2625
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7425 2625 7425 3000
-4 1 1 50 -1 0 12 0.0000 4 180 255 7200 2850 key\001
-4 1 1 50 -1 0 12 0.0000 4 135 375 7725 2850 value\001
--6
-2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6825 1875 8175 1875 8175 3675 6825 3675 6825 1875
-4 1 1 50 -1 0 12 0.0000 4 180 510 7500 2175 Region\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2325 2475 3900 2475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3900 3000 2325 3000
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5250 2400 6825 2400
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 6825 3000 5250 3000
-4 1 0 50 -1 0 12 0.0000 4 180 1140 3075 2325 create(key, null)\001
-4 1 0 50 -1 0 12 0.0000 4 180 900 3075 3300 destroy(key)\001
-4 1 0 50 -1 0 12 0.0000 4 180 1065 6000 2250 put(key, value)\001
-4 1 0 50 -1 0 12 0.0000 4 180 1050 6075 3300 invalidate(key)\001
-4 1 0 50 -1 0 12 0.0000 4 180 2640 4500 1275 create(key, value)  or  put(key, value)\001
-4 1 0 50 -1 0 12 0.0000 4 180 900 4575 4350 destroy(key)\001
-4 1 0 50 -1 0 12 0.0000 4 180 1065 9300 2850 put(key, value)\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.gif b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.gif
deleted file mode 100644
index 02de9d4..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/entry-life-cycle.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example-cache.xml b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example-cache.xml
deleted file mode 100644
index 0061b5c..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example-cache.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- A sample GemFire declarative caching XML File -->
-
-<cache
-    xmlns="http://schema.pivotal.io/gemfire/cache"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
-    search-timeout="60" lock-lease="300" copy-on-read="false" version="8.1">
-
-  <!-- Create a partition region -->
-  <region name="myPartitionedRegion" refid="PARTITION">
-    <region-attributes>
-      <partition-attributes local-max-memory="32"/>
-
-      <cache-loader>
-        <class-name>com.company.app.DBLoader</class-name>
-      </cache-loader>
-
-      <eviction-attributes>
-        <lru-entry-count maximum="1000" action="local-destroy"/>
-      </eviction-attributes>
-
-    </region-attributes>
-  </region>
-  
-  <!-- Create a replicate region -->
-  <region name="customers" refid="REPLICATE">
-    <region-attributes>
-
-      <entry-time-to-live>
-        <expiration-attributes action="destroy" timeout="3000"/>
-      </entry-time-to-live>
-
-      <entry-idle-time>
-        <expiration-attributes timeout="600"/>
-      </entry-idle-time>
-
-      <cache-loader>
-        <class-name>com.company.app.DBLoader</class-name>
-        <parameter name="URL">
-          <string>jdbc://12.34.56.78/mydb</string>
-        </parameter>
-      </cache-loader>
-
-      <eviction-attributes>
-        <lru-memory-size maximum="1000" action="overflow-to-disk"> 
-          <class-name>com.company.data.MySizer</class-name>
-          <parameter name="name">
-            <string>SuperSizer</string>
-          </parameter>
-        </lru-memory-size>
-      </eviction-attributes>
-
-    </region-attributes>
-
-    <!-- Add an entry whose value is a Declarable object -->
-    <entry>
-      <key><string>Louise Jones</string></key>
-      <value>
-        <declarable>
-          <class-name>com.company.app.Customer</class-name>
-          <parameter name="name">
-            <string>Louise Jones</string>
-          </parameter>
-          <parameter name="address1">
-            <string>123 Main Street</string>
-          </parameter>
-          <parameter name="city">
-            <string>New York</string>
-          </parameter>
-          <parameter name="state">
-            <string>NY</string>
-          </parameter>
-          <parameter name="zip">
-            <string>12345</string>
-          </parameter>
-        </declarable>
-      </value>
-    </entry>
-  </region>
-</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example2-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example2-cache.xml b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example2-cache.xml
deleted file mode 100644
index b65c285..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example2-cache.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<cache
-    xmlns="http://schema.pivotal.io/gemfire/cache"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
-    is-server="true" search-timeout="60" version="8.1">
-  <cache-transaction-manager>
-    <transaction-listener>
-       <class-name>com.company.data.MyTransactionListener</class-name>
-       <parameter name="URL">
-         <string>jdbc:cloudscape:rmi:MyData</string>
-       </parameter>
-    </transaction-listener>    
-  </cache-transaction-manager>
-
-  <cache-server port="12345" max-connections="256"/>
-
-  <region name="myRegion" refid="REPLICATE">
-    <region-attributes scope="global">
-      <entry-time-to-live>
-        <expiration-attributes action="invalidate" timeout="60"/>
-      </entry-time-to-live>
-      <cache-loader>
-        <class-name>com.company.data.DatabaseLoader</class-name>
-        <parameter name="URL">
-          <string>jdbc:cloudscape:rmi:MyData</string>
-        </parameter>
-      </cache-loader>
-    </region-attributes>
-  </region>
-
-  <region name="myOtherRegion" refid="REPLICATE">
-    <entry>
-      <key><string>MyKey</string></key>
-      <value><string>MyValue</string></value>
-    </entry>
-    <entry>
-      <key><string>MyOtherKey</string></key>
-      <value>
-        <declarable>
-          <class-name>com.company.data.MyDeclarable</class-name>
-        </declarable>
-      </value>
-    </entry>
-  </region>
-</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example3-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example3-cache.xml b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example3-cache.xml
deleted file mode 100644
index 803e72e..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/example3-cache.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!-- A sample GemFire declarative caching XML File that demonstrates
-     the "named region attributes" feature.
--->
-
-<cache
-    xmlns="http://schema.pivotal.io/gemfire/cache"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
-    version="8.1">
-  <region-attributes id="template" statistics-enabled="true" 
-                     scope="distributed-ack">
-    <key-constraint>java.lang.String</key-constraint>
-    <value-constraint>com.company.app.Customer</value-constraint>
-    <entry-idle-time>
-      <expiration-attributes timeout="60"/>
-    </entry-idle-time>
-  </region-attributes>
-
-  <!-- define a named region-attributes that uses the predefined REPLICATE -->
-  <region-attributes id="distributed" refid="REPLICATE">
-    <cache-loader>
-      <class-name>com.company.app.DBLoader</class-name>
-    </cache-loader>
-  </region-attributes>
-
-  <region-attributes id="persistent" refid="distributed"
-                     data-policy="persistent-replicate"> 
-    <eviction-attributes>
-      <lru-entry-count maximum="1000" action="overflow-to-disk"/>
-    </eviction-attributes>
-  </region-attributes>
-
-  <region name="customers" refid="template"/>
-  <region name="customers-west" refid="template"/>
-  <region name="customers-central" refid="template"/>
-  <region name="customers-east" refid="template"/>
-
-  <region name="orders" refid="template"/>
-  <region name="orders-west" refid="persistent"/>
-  <region name="orders-central" refid="persistent"/>
-  <region name="orders-east" refid="persistent"/>
-</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.fig b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.fig
deleted file mode 100644
index bd5b7a4..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.fig
+++ /dev/null
@@ -1,267 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 5625 1800 8025 3975
-6 6825 2175 7800 3600
-6 7087 2550 7537 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7312 2550 7312 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7087 2550 7537 2550 7537 3525 7087 3525 7087 2550
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 2625 7537 2625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 2700 7537 2700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 2775 7537 2775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 2850 7537 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 2925 7537 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3000 7537 3000
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3075 7537 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3150 7537 3150
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3225 7537 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3300 7537 3300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3375 7537 3375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 3450 7537 3450
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6825 2175 7800 2175 7800 3600 6825 3600 6825 2175
-4 0 0 50 -1 0 12 0.0000 4 135 735 6945 2400 Partition1\001
--6
-6 5850 2325 6300 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5850 2475 6300 2475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5850 2625 6300 2625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5850 2775 6300 2775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6075 2325 6075 2925
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5850 2325 6300 2325 6300 2925 5850 2925 5850 2325
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5625 1800 8025 1800 8025 3975 5625 3975 5625 1800
-4 0 0 50 -1 0 12 0.0000 4 180 1215 5775 2025 Application VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 5775 3825 maxPartitionedData = 1000\001
--6
-6 8775 1800 10950 4125
-6 9375 2250 10350 3675
-6 9637 2625 10087 3600
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9862 2625 9862 3600
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9637 2625 10087 2625 10087 3600 9637 3600 9637 2625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 2700 10087 2700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 2775 10087 2775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 2850 10087 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 2925 10087 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3000 10087 3000
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3075 10087 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3150 10087 3150
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3225 10087 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3300 10087 3300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3375 10087 3375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3450 10087 3450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 3525 10087 3525
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9375 2250 10350 2250 10350 3675 9375 3675 9375 2250
-4 0 0 50 -1 0 12 0.0000 4 135 735 9495 2475 Partition1\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8775 1800 10950 1800 10950 4125 8775 4125 8775 1800
-4 0 0 50 -1 0 12 0.0000 4 135 1365 9075 2025 Cache Server VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 8850 3975 maxPartitionedData = 1000\001
--6
-6 2325 3225 4425 4800
-6 2625 3675 3075 4275
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 3825 3075 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 3975 3075 3975
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 4125 3075 4125
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2850 3675 2850 4275
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2625 3675 3075 3675 3075 4275 2625 4275 2625 3675
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2325 3225 4425 3225 4425 4800 2325 4800 2325 3225
-4 0 0 50 -1 0 12 0.0000 4 180 1215 2475 3450 Application VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 1800 2550 4650 maxPartitionedData = 0\001
--6
-6 675 3600 2250 4500
-4 0 0 50 -1 0 12 0.0000 4 135 1155 675 3750 Some members\001
-4 0 0 50 -1 0 12 0.0000 4 135 1290 675 3975 of the distributed\001
-4 0 0 50 -1 0 12 0.0000 4 180 1500 675 4200 system may choose\001
-4 0 0 50 -1 0 12 0.0000 4 180 1515 675 4425 to not host paritions\001
--6
-6 6750 4200 7950 4875
-2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 7875 4800 6825 4800 6825 4275 7875 4275 7875 4800
-4 1 0 50 -1 0 12 0.0000 4 135 855 7350 4500 Distributed\001
-4 1 0 50 -1 0 12 0.0000 4 180 570 7350 4725 System\001
--6
-6 6000 5250 8250 7575
-6 6600 5700 7575 7125
-6 6862 6075 7312 7050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7087 6075 7087 7050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6862 6075 7312 6075 7312 7050 6862 7050 6862 6075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6150 7312 6150
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6225 7312 6225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6300 7312 6300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6375 7312 6375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6450 7312 6450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6525 7312 6525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6600 7312 6600
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6675 7312 6675
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6750 7312 6750
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6825 7312 6825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6900 7312 6900
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6862 6975 7312 6975
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6600 5700 7575 5700 7575 7125 6600 7125 6600 5700
-4 0 0 50 -1 0 12 0.0000 4 135 735 6720 5925 Partition2\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6000 5250 8250 5250 8250 7575 6000 7575 6000 5250
-4 0 0 50 -1 0 12 0.0000 4 135 1365 6300 5475 Cache Server VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 6075 7425 maxPartitionedData = 1000\001
--6
-6 8775 7800 11175 8475
-4 0 0 50 -1 0 12 0.0000 4 180 1980 8775 7950 To ensure high availability\001
-4 0 0 50 -1 0 12 0.0000 4 180 1965 8775 8175 of paritioned regions, data\001
-4 0 0 50 -1 0 12 0.0000 4 180 2385 8775 8400 is mirrored to a backup parition.\001
--6
-6 8775 5250 10950 7575
-6 9375 5700 10350 7125
-6 9637 6075 10087 7050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9862 6075 9862 7050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9637 6075 10087 6075 10087 7050 9637 7050 9637 6075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6150 10087 6150
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6225 10087 6225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6300 10087 6300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6375 10087 6375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6450 10087 6450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6525 10087 6525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6600 10087 6600
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6675 10087 6675
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6750 10087 6750
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6825 10087 6825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6900 10087 6900
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9637 6975 10087 6975
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9375 5700 10350 5700 10350 7125 9375 7125 9375 5700
-4 0 0 50 -1 0 12 0.0000 4 135 735 9495 5925 Partition2\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8775 5250 10950 5250 10950 7575 8775 7575 8775 5250
-4 0 0 50 -1 0 12 0.0000 4 180 1215 9075 5475 Application VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 8850 7425 maxPartitionedData = 1000\001
--6
-6 1875 2415 4200 3000
-4 0 0 50 -1 0 12 0.0000 4 135 2325 1875 2550 An accessor maintains a small\001
-4 0 0 50 -1 0 12 0.0000 4 180 2250 1875 2775 subset of the partioned region\001
-4 0 0 50 -1 0 12 0.0000 4 135 1185 1875 3000 for fast access.\001
--6
-6 3075 5490 5400 6075
-4 0 0 50 -1 0 12 0.0000 4 135 2325 3075 5625 Data not found in the accessor\001
-4 0 0 50 -1 0 12 0.0000 4 180 1950 3075 5850 is fetched from a partition\001
--6
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 6300 2400 6825 2700
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 3075 3750 6825 3000
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 3075 3900 6600 6300
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 6150 2925 6825 5700
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 7800 3075 9375 3075
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 6825 4500 4425 4500
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7275 4275 7275 3975
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7275 4800 7275 5250
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7875 4350 8925 3825
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7875 4800 8925 5400
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 7575 6600 9375 6600
-2 1 1 2 0 7 50 -1 -1 4.500 0 0 -1 0 0 2
-	 8475 975 8475 8175
-4 0 0 50 -1 0 12 0.0000 4 135 750 7650 1125 Machine1\001
-4 0 0 50 -1 0 12 0.0000 4 135 750 8625 1125 Machine2\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.gif b/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.gif
deleted file mode 100644
index 06bdc27..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/cache/doc-files/partitioned-regions.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/cache/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/package.html b/geode-core/src/main/java/com/gemstone/gemfire/cache/package.html
index c4d72b1..84a071b 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/package.html
@@ -142,7 +142,7 @@ com.gemstone.gemfire.cache.Region#destroy destroy} .  The following
 diagram describes the life cycle of a region entry.</p>
 
 <CENTER>
-<IMG SRC="doc-files/entry-life-cycle.gif"
+<IMG SRC="{@docRoot}/javadoc-images/entry-life-cycle.gif"
      WIDTH="598" HEIGHT="224"/>
 </CENTER>
 
@@ -487,9 +487,9 @@ The top level element must be a cache element.
 <p>The Document Type Definition for a declarative cache XML file can
 be found in <code>"doc-files/cache6_5.dtd"</code>. For examples of
 declarative cache XML files see <A
-href="doc-files/example-cache.xml">example1</A>, <A
-href="doc-files/example2-cache.xml">example2</A>, and <A
-href="doc-files/example3-cache.xml">example3</A>.
+href="{@docRoot}/javadoc-images/example-cache.xml">example1</A>, <A
+href="{@docRoot}/javadoc-images/example2-cache.xml">example2</A>, and <A
+href="{@docRoot}/javadoc-images/example3-cache.xml">example3</A>.
 
 <a name="clientServer"><h2>Client/Server Caching</h2><a href="#top">Back to Top</a>
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.fig b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.fig
deleted file mode 100644
index 769cd5e..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.fig
+++ /dev/null
@@ -1,138 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 375 1500 2400 1800
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 375 1500 2400 1500 2400 1800 375 1800 375 1500
-4 0 0 50 0 0 12 0.0000 4 180 1860 450 1725 InternalDistributedSystem\001
--6
-6 675 450 2100 750
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 675 450 2100 450 2100 750 675 750 675 450
-4 0 0 50 0 0 12 0.0000 4 180 1320 750 675 DistributedSystem\001
--6
-6 450 2550 2250 4125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 600 3450 1050 3450
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 600 3675 1050 3675
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 450 2550 2250 2550 2250 4125 450 4125 450 2550
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 600 2925 1125 2925 1125 3225 600 3225 600 2925
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1275 2925 2025 2925 2025 3225 1275 3225 1275 2925
-2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 600 3900 1050 3900
-4 0 0 50 0 0 12 0.0000 4 135 540 1350 3450 extends\001
-4 0 0 50 0 0 12 0.0000 4 180 810 1350 3690 implements\001
-4 0 0 50 0 0 12 0.0000 4 135 510 1350 3930 "has a"\001
-4 0 0 50 0 2 12 0.0000 4 180 570 525 2775 Legend\001
-4 0 0 50 0 0 12 0.0000 4 135 390 675 3150 Class\001
-4 0 0 50 0 1 12 0.0000 4 180 630 1350 3150 Interface\001
--6
-6 2775 150 4050 525
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 2775 150 4050 150 4050 525 2775 525 2775 150
-4 0 0 50 -1 0 12 0.0000 4 180 1095 2925 375 AbstractConfig\001
--6
-6 2700 900 4875 1200
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2700 900 4875 900 4875 1200 2700 1200 2700 900
-4 0 0 50 -1 0 12 0.0000 4 180 1950 2778 1080 AbstractDistributionConfig\001
--6
-6 2775 2250 4650 2550
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2775 2250 4650 2250 4650 2550 2775 2550 2775 2250
-4 0 0 50 0 0 12 0.0000 4 180 1680 2850 2475 DistributionConfigImpl\001
--6
-6 6450 1650 7575 1950
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6450 1650 7575 1650 7575 1950 6450 1950 6450 1650
-4 0 0 50 0 1 12 0.0000 4 180 975 6525 1875 SystemConfig\001
--6
-6 4200 3675 6600 3975
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4200 3675 6600 3675 6600 3975 4200 3975 4200 3675
-4 0 0 50 0 0 12 0.0000 4 180 2310 4275 3900 ManagerSnapshotSystemConfig\001
--6
-6 3900 1650 5625 1950
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 3900 1650 5625 1650 5625 1950 3900 1950 3900 1650
-4 0 0 50 -1 0 12 0.0000 4 180 1620 3975 1875 AbstractSystemConfig\001
--6
-6 4425 2925 6075 3225
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4425 2925 6075 2925 6075 3225 4425 3225 4425 2925
-4 0 0 50 0 0 12 0.0000 4 180 1560 4500 3150 InternalSystemConfig\001
--6
-6 6300 2925 8175 3225
-6 6300 2925 8175 3225
-6 6300 2925 8175 3225
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6300 2925 8175 2925 8175 3225 6300 3225 6300 2925
-4 0 0 50 0 0 12 0.0000 4 180 1650 6450 3150 ManagerSystemConfig\001
--6
--6
--6
-6 6075 900 7575 1200
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6075 900 7575 900 7575 1200 6075 1200 6075 900
-4 0 0 50 0 1 12 0.0000 4 180 1350 6150 1125 DistributionConfig\001
--6
-6 6150 150 7575 525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6150 150 7575 150 7575 525 6150 525 6150 150
-4 0 0 50 -1 1 12 0.0000 4 180 480 6600 375 Config\001
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 1350 1500 1350 750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 5175 2925 4725 1950
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 5325 3675 5100 3225
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 1350 1800 2775 2400
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 6900 1650 6900 1200
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 6750 900 6750 525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 3600 2250 3750 1200
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 4050 300 6150 300
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 4425 3075 3525 2550
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 4875 1050 6075 1050
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 3750 900 3450 525
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 4650 1650 4050 1200
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 5625 1800 6450 1800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	1 1 1.00 120.00 120.00
-	 7125 2925 5175 1950

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.gif b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.gif
deleted file mode 100644
index 1ada30c..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/config-classes.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.fig b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.fig
deleted file mode 100644
index 591bf38..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.fig
+++ /dev/null
@@ -1,76 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 3225 4800 4275 5250
-4 1 4 50 0 0 12 0.0000 4 135 660 3750 4950 GemFire\001
-4 1 4 50 0 0 12 0.0000 4 180 1020 3750 5190 Manager VM\001
--6
-6 3375 5550 4125 5850
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3375 5550 4125 5550 4125 5850 3375 5850 3375 5550
-4 1 4 50 0 0 12 0.0000 4 135 300 3750 5775 DM\001
--6
-6 3450 3525 5400 3975
-2 4 0 3 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5325 3900 5325 3600 3525 3600 3525 3900 5325 3900
-4 1 0 50 0 0 12 0.0000 4 135 1560 4425 3825 Distribution Channel\001
--6
-6 5400 1800 7350 2850
-6 5625 2400 6225 2700
-2 2 0 1 1 7 50 0 -1 4.000 0 0 -1 0 0 5
-	 5625 2400 6225 2400 6225 2700 5625 2700 5625 2400
-4 1 1 50 0 0 12 0.0000 4 135 435 5925 2625 ADM\001
--6
-2 2 0 1 1 7 50 0 -1 4.000 0 0 -1 0 0 5
-	 5400 1800 7350 1800 7350 2850 5400 2850 5400 1800
-4 1 1 50 0 0 12 0.0000 4 135 1320 6375 2025 GemFire Console\001
--6
-6 5550 4125 6300 5100
-6 5625 4275 6225 4725
-4 1 23 50 0 0 12 0.0000 4 135 585 5925 4425 Locator\001
-4 1 23 50 0 0 12 0.0000 4 135 300 5925 4665 VM\001
--6
-2 2 0 1 23 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5550 4125 6300 4125 6300 5100 5550 5100 5550 4125
--6
-6 4875 5250 6750 5925
-4 0 23 50 0 1 12 0.0000 4 135 1800 4875 5400 DMs contact the locator\001
-4 0 23 50 0 1 12 0.0000 4 180 1935 4875 5640 to find the other members\001
-4 0 23 50 0 1 12 0.0000 4 180 1920 4875 5880 of the distributed system.\001
--6
-6 6825 4425 10350 6300
-6 6975 5775 9750 6000
--6
-6 7050 6000 10275 6150
-2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
-	 7425 6075 7050 6075
-4 0 0 50 0 0 12 0.0000 4 135 2865 7575 6150 Connection to the distribution channel\001
--6
-2 2 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
-	 6825 4425 10350 4425 10350 6300 6825 6300 6825 4425
-4 0 0 50 0 2 12 0.0000 4 180 690 6975 4725 Lengend\001
-4 0 4 50 0 0 12 0.0000 4 180 2910 6975 5445 DM - NORMAL DistributionManager\001
-4 0 1 50 0 0 12 0.0000 4 180 3165 6975 5685 ADM - Admin-only DistributionManager\001
--6
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3075 4725 4350 4725 4350 6000 3075 6000 3075 4725
-2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 4125 5700 5025 3900
-2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
-	0 0 1.00 60.00 120.00
-	0 0 1.00 60.00 120.00
-	 5925 2700 4725 3600
-2 1 0 1 23 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4125 5775 5550 4575
-2 1 0 1 23 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5700 2700 5700 4125

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.gif b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.gif
deleted file mode 100644
index b245730..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/doc-files/distribution-managers.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.fig b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.fig
deleted file mode 100644
index aa01d0f..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.fig
+++ /dev/null
@@ -1,84 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 1125 5475 2625 6600
-6 1275 6150 2475 6450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1275 6150 2475 6150 2475 6450 1275 6450 1275 6150
-4 0 0 50 -1 0 12 0.0000 4 135 1005 1350 6375 "locks2" DLS\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1125 6600 2625 6600 2625 5475 1125 5475 1125 6600
-4 0 0 50 -1 0 12 0.0000 4 135 885 1425 5775 frodo:12004\001
--6
-6 3225 4500 4275 5100
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3225 4500 4275 4500 4275 5100 3225 5100 3225 4500
-4 1 0 50 -1 0 12 0.0000 4 135 795 3750 4725 Distributed\001
-4 1 0 50 -1 0 12 0.0000 4 180 525 3750 4965 System\001
--6
-6 4575 2325 6075 3600
-6 4725 2925 5925 3450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4725 2925 5925 2925 5925 3450 4725 3450 4725 2925
-4 1 0 50 -1 0 12 0.0000 4 135 1005 5325 3150 "locks1" DLS\001
-4 1 0 50 -1 0 12 0.0000 4 135 885 5325 3390 GRANTOR\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4575 3600 6075 3600 6075 2325 4575 2325 4575 3600
-4 0 0 50 -1 0 12 0.0000 4 135 885 4875 2550 frodo:12002\001
--6
-6 4650 5025 6000 6600
-6 4725 6000 5925 6525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4725 6000 5925 6000 5925 6525 4725 6525 4725 6000
-4 1 0 50 -1 0 12 0.0000 4 135 885 5325 6465 GRANTOR\001
-4 1 0 50 -1 0 12 0.0000 4 135 1005 5325 6225 "locks2" DLS\001
--6
-6 4725 5550 5925 5850
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4725 5550 5925 5550 5925 5850 4725 5850 4725 5550
-4 0 0 50 -1 0 12 0.0000 4 135 1005 4800 5775 "locks1" DLS\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4650 6600 6000 6600 6000 5025 4650 5025 4650 6600
-4 0 0 50 -1 0 12 0.0000 4 135 885 4875 5250 frodo:12003\001
--6
-6 825 4275 2325 5250
-4 0 0 50 -1 1 12 0.0000 4 180 1455 825 4425 A newly created lock\001
-4 0 0 50 -1 1 12 0.0000 4 135 1290 825 4665 service asks Elder\001
-4 0 0 50 -1 1 12 0.0000 4 135 1125 825 4905 who the current\001
-4 0 0 50 -1 1 12 0.0000 4 180 765 825 5145 grantor is.\001
--6
-6 5850 3975 7350 4425
-4 0 0 50 -1 1 12 0.0000 4 135 1470 5850 4125 A lock service knows\001
-4 0 0 50 -1 1 12 0.0000 4 180 1320 5850 4365 who its gratnor is.\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1425 3975 3375 3975 3375 2775 1425 2775 1425 3975
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1350 4050 3450 4050 3450 2325 1350 2325 1350 4050
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2400 6150 2400 3975
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3450 4500 3150 4050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4050 4500 4725 3600
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4275 4950 4650 5100
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3375 5100 2625 5775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5775 5550 5775 3450
-4 0 0 50 -1 0 12 0.0000 4 135 1800 1500 3600 "locks1" -> frodo:12002\001
-4 0 0 50 -1 0 12 0.0000 4 135 1800 1500 3840 "locks2" -> frodo:12003\001
-4 0 0 50 -1 0 16 0.0000 4 165 510 2100 3075 Elder\001
-4 0 0 50 -1 0 12 0.0000 4 135 885 1950 2550 frodo:12001\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.jpg
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.jpg b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.jpg
deleted file mode 100644
index 09ea45b..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/elder.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.fig b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.fig
deleted file mode 100644
index f45177c..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.fig
+++ /dev/null
@@ -1,128 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 3825 2025 5025 3225
-6 4050 2625 4800 3150
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4050 3150 4800 3150 4800 2625 4050 2625 4050 3150
-4 1 0 50 -1 -1 12 0.0000 4 135 540 4425 2850 Current\001
-4 1 0 50 -1 -1 12 0.0000 4 135 555 4425 3090 Grantor\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3825 2025 5025 2025 5025 3225 3825 3225 3825 2025
-4 0 0 50 -1 -1 12 0.0000 4 180 945 3975 2250 pippin:12002\001
--6
-6 5625 2025 6825 3225
-6 5925 2550 6525 3000
-4 1 0 50 -1 -1 12 0.0000 4 180 495 6225 2700 Young\001
-4 1 0 50 -1 -1 12 0.0000 4 135 480 6225 2940 Turk 1\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5850 2475 6600 2475 6600 3075 5850 3075 5850 2475
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5625 2025 6825 2025 6825 3225 5625 3225 5625 2025
-4 0 0 50 -1 -1 12 0.0000 4 180 945 5775 2250 pippin:12003\001
--6
-6 7425 2025 8625 3225
-6 7725 2550 8325 3000
-4 1 0 50 -1 -1 12 0.0000 4 180 495 8025 2700 Young\001
-4 1 0 50 -1 -1 12 0.0000 4 135 480 8025 2940 Turk 2\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7650 2475 8400 2475 8400 3075 7650 3075 7650 2475
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7425 2025 8625 2025 8625 3225 7425 3225 7425 2025
-4 0 0 50 -1 -1 12 0.0000 4 180 945 7575 2250 pippin:12004\001
--6
-6 9225 2025 10425 3225
-6 9525 2550 10125 3000
-4 1 0 50 -1 -1 12 0.0000 4 180 495 9825 2700 Young\001
-4 1 0 50 -1 -1 12 0.0000 4 135 480 9825 2940 Turk 3\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9450 2475 10200 2475 10200 3075 9450 3075 9450 2475
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9225 2025 10425 2025 10425 3225 9225 3225 9225 2025
-4 0 0 50 -1 -1 12 0.0000 4 180 945 9375 2250 pippin:12005\001
--6
-6 1050 2100 3075 2925
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1050 2925 3075 2925 3075 2100 1050 2100 1050 2925
-4 0 0 50 -1 -1 12 0.0000 4 180 1860 1125 2850 "locks1" -> pippin:12005\001
-4 0 0 50 -1 -1 16 0.0000 4 165 510 1725 2400 Elder\001
--6
-6 3825 4125 5025 5325
-6 4050 4725 4800 5250
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4050 5250 4800 5250 4800 4725 4050 4725 4050 5250
-4 1 0 50 -1 -1 12 0.0000 4 135 540 4425 4950 Current\001
-4 1 0 50 -1 -1 12 0.0000 4 135 555 4425 5190 Grantor\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3825 4125 5025 4125 5025 5325 3825 5325 3825 4125
-4 0 0 50 -1 -1 12 0.0000 4 180 945 3975 4350 pippin:12002\001
--6
-6 5625 4125 6825 5325
-6 5925 4650 6525 5100
-4 1 0 50 -1 -1 12 0.0000 4 180 495 6225 4800 Young\001
-4 1 0 50 -1 -1 12 0.0000 4 135 480 6225 5040 Turk 1\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5850 4575 6600 4575 6600 5175 5850 5175 5850 4575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5625 4125 6825 4125 6825 5325 5625 5325 5625 4125
-4 0 0 50 -1 -1 12 0.0000 4 180 945 5775 4350 pippin:12003\001
--6
-6 9225 4125 10425 5325
-6 9525 4650 10125 5100
-4 1 0 50 -1 -1 12 0.0000 4 180 495 9825 4800 Young\001
-4 1 0 50 -1 -1 12 0.0000 4 135 480 9825 5040 Turk 3\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9450 4575 10200 4575 10200 5175 9450 5175 9450 4575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9225 4125 10425 4125 10425 5325 9225 5325 9225 4125
-4 0 0 50 -1 -1 12 0.0000 4 180 945 9375 4350 pippin:12005\001
--6
-6 1050 4200 3075 5025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1050 5025 3075 5025 3075 4200 1050 4200 1050 5025
-4 0 0 50 -1 -1 12 0.0000 4 180 1860 1125 4950 "locks1" -> pippin:12005\001
-4 0 0 50 -1 -1 16 0.0000 4 165 510 1725 4500 Elder\001
--6
-6 7500 4425 8550 4875
-4 1 0 50 -1 1 12 0.0000 4 180 960 8025 4575 pippin:12004\001
-4 1 0 50 -1 1 12 0.0000 4 135 555 8025 4815 crashes\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 5475 1950 5475 1800 8775 1800 8775 1950
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5850 2850 4800 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 7650 2850 6600 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 9450 2850 8400 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5850 4950 4800 4950
-2 1 0 5 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 975 3675 10650 3675
-4 0 0 50 -1 1 12 0.0000 4 180 3045 5625 1650 Have given up dreams of bcoming grantor\001
-4 0 0 50 -1 -1 12 0.0000 4 135 285 5175 2700 xfer\001
-4 0 0 50 -1 -1 12 0.0000 4 135 285 7050 2700 xfer\001
-4 0 0 50 -1 -1 12 0.0000 4 135 285 8775 2700 xfer\001
-4 0 0 50 -1 -1 12 0.0000 4 135 285 5175 4800 xfer\001
-4 0 0 50 -1 1 12 0.0000 4 180 1245 5775 5700 Stops xfer. knows\001
-4 0 0 50 -1 1 12 0.0000 4 135 1035 5775 5940 it will never be\001
-4 0 0 50 -1 1 12 0.0000 4 150 555 5775 6180 grantor\001
-4 0 0 50 -1 1 12 0.0000 4 180 1275 9300 5700 Initiates recovery,\001
-4 0 0 50 -1 1 12 0.0000 4 180 1215 9300 5940 becomes grantor\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.jpg
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.jpg b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.jpg
deleted file mode 100644
index 5c66385..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/doc-files/turks.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/package.html b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/package.html
index e2b742e..65949ac 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/package.html
@@ -47,7 +47,7 @@ request is chosen to be the grantor.
 <P>
 
 <CENTER>
-<IMG SRC="doc-files/elder.jpg" WIDTH="435" HEIGHT="287">
+<IMG SRC="{@docRoot}/javadoc-images/elder.jpg" WIDTH="435" HEIGHT="287">
 </CENTER>
 
 <P>
@@ -264,7 +264,7 @@ has crashed and will initiate grantor recovery.
 <P>
 
 <CENTER>
-<IMG SRC="doc-files/turks.jpg" WIDTH="652" HEIGHT="315">
+<IMG SRC="{@docRoot}/javadoc-images/turks.jpg" WIDTH="652" HEIGHT="315">
 </CENTER>
 
 <H2>Elder Death</H2>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/package.html b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/package.html
index 4287ed6..cdb755f 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/package.html
@@ -47,7 +47,7 @@ that is used by the <code>DistributionManager</code>.
 <P>
 
 <CENTER>
-<IMG SRC="doc-files/distribution-managers.gif"
+<IMG SRC="{@docRoot}/javadoc-images/distribution-managers.gif"
      WIDTH="573" HEIGHT="308"/>
 </CENTER>
 



[09/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
index e96d99d..4dba6c5 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/SearchLoadAndWriteProcessor.java
@@ -74,7 +74,6 @@ import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
-import com.gemstone.gemfire.internal.offheap.StoredObject;
 
 
 /**
@@ -1938,13 +1937,14 @@ public class SearchLoadAndWriteProcessor implements MembershipListener {
                       long lastModified = entry.getLastModified();
                       lastModifiedCacheTime = lastModified;
                       if (eov instanceof CachedDeserializable) {
-                        if (eov instanceof StoredObject && !((StoredObject) eov).isSerialized()) {
+                        CachedDeserializable cd = (CachedDeserializable) eov;
+                        if (!cd.isSerialized()) {
                           isSer = false;
-                          ebv = (byte[]) ((StoredObject)eov).getDeserializedForReading();
+                          ebv = (byte[]) cd.getDeserializedForReading();
                           ebvLen = ebv.length;
                         } else {
                           // don't serialize here if it is not already serialized
-                          Object tmp = ((CachedDeserializable)eov).getValue();
+                          Object tmp = cd.getValue();
                           if (tmp instanceof byte[]) {
                             byte[] bb = (byte[])tmp;
                             ebv = bb;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/StoreAllCachedDeserializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/StoreAllCachedDeserializable.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/StoreAllCachedDeserializable.java
index 7d94281..3519e72 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/StoreAllCachedDeserializable.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/StoreAllCachedDeserializable.java
@@ -153,7 +153,16 @@ public class StoreAllCachedDeserializable implements CachedDeserializable, DataS
 
   @Override
   public Version[] getSerializationVersions() {
-    // TODO Auto-generated method stub
     return null;
   }
+
+  @Override
+  public boolean isSerialized() {
+    return true;
+  }
+
+  @Override
+  public boolean usesHeapForStorage() {
+    return true;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/VMCachedDeserializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/VMCachedDeserializable.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/VMCachedDeserializable.java
index c5d3c6e..b96f6d1 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/VMCachedDeserializable.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/VMCachedDeserializable.java
@@ -256,8 +256,15 @@ public final class VMCachedDeserializable implements CachedDeserializable, DataS
   }
   @Override
   public Version[] getSerializationVersions() {
-    // TODO Auto-generated method stub
     return null;
   }
+  @Override
+  public boolean isSerialized() {
+    return true;
+  }
+  @Override
+  public boolean usesHeapForStorage() {
+    return true;
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/compression/SnappyCompressedCachedDeserializable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/compression/SnappyCompressedCachedDeserializable.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/compression/SnappyCompressedCachedDeserializable.java
index 05b65dd..6c6ec6f 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/compression/SnappyCompressedCachedDeserializable.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/compression/SnappyCompressedCachedDeserializable.java
@@ -80,4 +80,14 @@ public class SnappyCompressedCachedDeserializable extends
   public Version[] getSerializationVersions() {
     return null;
   }
+
+  @Override
+  public boolean isSerialized() {
+    return true;
+  }
+
+  @Override
+  public boolean usesHeapForStorage() {
+    return true;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PutMessage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PutMessage.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PutMessage.java
index c2ff411..d6f5293 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PutMessage.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PutMessage.java
@@ -67,7 +67,6 @@ import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
-import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
 import com.gemstone.gemfire.internal.util.BlobHelper;
 
@@ -231,10 +230,11 @@ public final class PutMessage extends PartitionMessageWithDirectReply implements
     }
     else{
       if(original.valObj instanceof CachedDeserializable) {
-        if (original.valObj instanceof StoredObject && !((StoredObject)original.valObj).isSerialized()) {
-          this.valObj = ((StoredObject)original.valObj).getDeserializedForReading();
+        CachedDeserializable cd = (CachedDeserializable) original.valObj;
+        if (!cd.isSerialized()) {
+          this.valObj = cd.getDeserializedForReading();
         } else {
-          Object val = ((CachedDeserializable) original.valObj).getValue();
+          Object val = cd.getValue();
           if(val instanceof byte[]) {
             this.valBytes = (byte[]) val; 
           } else {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Part.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Part.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Part.java
index 80b5c0a..2c36b32 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Part.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Part.java
@@ -17,11 +17,8 @@
 package com.gemstone.gemfire.internal.cache.tier.sockets;
 
 import com.gemstone.gemfire.internal.*;
-import com.gemstone.gemfire.internal.cache.CachedDeserializable;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.DataAsAddress;
+import com.gemstone.gemfire.internal.offheap.AddressableMemoryManager;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
 
 import java.io.*;
 import java.nio.*;
@@ -121,17 +118,17 @@ public class Part {
   public void setPartState(StoredObject so, boolean isObject) {
     if (isObject) {
       this.typeCode = OBJECT_CODE;
-    } else if (so.getValueSizeInBytes() == 0) {
+    } else if (so.getDataSize() == 0) {
       this.typeCode = EMPTY_BYTEARRAY_CODE;
       this.part = EMPTY_BYTE_ARRAY;
       return;
     } else {
       this.typeCode = BYTE_CODE;
     }
-    if (so instanceof DataAsAddress) {
-      this.part = ((DataAsAddress)so).getRawBytes();
+    if (so.hasRefCount()) {
+      this.part = so;
     } else {
-      this.part = (ObjectChunk)so;
+      this.part = so.getValueAsHeapByteArray();
     }
   }
   public byte getTypeCode() {
@@ -146,8 +143,8 @@ public class Part {
       return 0;
     } else if (this.part instanceof byte[]) {
       return ((byte[])this.part).length;
-    } else if (this.part instanceof ObjectChunk) {
-      return ((ObjectChunk) this.part).getValueSizeInBytes();
+    } else if (this.part instanceof StoredObject) {
+      return ((StoredObject) this.part).getDataSize();
     } else {
       return ((HeapDataOutputStream)this.part).size();
     }
@@ -289,19 +286,19 @@ public class Part {
       if (this.part instanceof byte[]) {
         byte[] bytes = (byte[])this.part;
         out.write(bytes, 0, bytes.length);
-      } else if (this.part instanceof ObjectChunk) {
-        ObjectChunk c = (ObjectChunk) this.part;
-        ByteBuffer cbb = c.createDirectByteBuffer();
-        if (cbb != null) {
-          HeapDataOutputStream.writeByteBufferToStream(out,  buf, cbb);
+      } else if (this.part instanceof StoredObject) {
+        StoredObject so = (StoredObject) this.part;
+        ByteBuffer sobb = so.createDirectByteBuffer();
+        if (sobb != null) {
+          HeapDataOutputStream.writeByteBufferToStream(out,  buf, sobb);
         } else {
-          int bytesToSend = c.getDataSize();
-          long addr = c.getAddressForReading(0, bytesToSend);
+          int bytesToSend = so.getDataSize();
+          long addr = so.getAddressForReadingData(0, bytesToSend);
           while (bytesToSend > 0) {
             if (buf.remaining() == 0) {
               HeapDataOutputStream.flushStream(out,  buf);
             }
-            buf.put(UnsafeMemoryChunk.readAbsoluteByte(addr));
+            buf.put(AddressableMemoryManager.readByte(addr));
             addr++;
             bytesToSend--;
           }
@@ -322,16 +319,16 @@ public class Part {
     if (getLength() > 0) {
       if (this.part instanceof byte[]) {
         buf.put((byte[])this.part);
-      } else if (this.part instanceof ObjectChunk) {
-        ObjectChunk c = (ObjectChunk) this.part;
+      } else if (this.part instanceof StoredObject) {
+        StoredObject c = (StoredObject) this.part;
         ByteBuffer bb = c.createDirectByteBuffer();
         if (bb != null) {
           buf.put(bb);
         } else {
           int bytesToSend = c.getDataSize();
-          long addr = c.getAddressForReading(0, bytesToSend);
+          long addr = c.getAddressForReadingData(0, bytesToSend);
           while (bytesToSend > 0) {
-            buf.put(UnsafeMemoryChunk.readAbsoluteByte(addr));
+            buf.put(AddressableMemoryManager.readByte(addr));
             addr++;
             bytesToSend--;
           }
@@ -372,10 +369,10 @@ public class Part {
           }
           buf.clear();
         }
-      } else if (this.part instanceof ObjectChunk) {
-        // instead of copying the Chunk to buf try to create a direct ByteBuffer and
+      } else if (this.part instanceof StoredObject) {
+        // instead of copying the StoredObject to buf try to create a direct ByteBuffer and
         // just write it directly to the socket channel.
-        ObjectChunk c = (ObjectChunk) this.part;
+        StoredObject c = (StoredObject) this.part;
         ByteBuffer bb = c.createDirectByteBuffer();
         if (bb != null) {
           while (bb.remaining() > 0) {
@@ -383,7 +380,7 @@ public class Part {
           }
         } else {
           int len = c.getDataSize();
-          long addr = c.getAddressForReading(0, len);
+          long addr = c.getAddressForReadingData(0, len);
           buf.clear();
           while (len > 0) {
             int bytesThisTime = len;
@@ -392,7 +389,7 @@ public class Part {
             }
             len -= bytesThisTime;
             while (bytesThisTime > 0) {
-              buf.put(UnsafeMemoryChunk.readAbsoluteByte(addr));
+              buf.put(AddressableMemoryManager.readByte(addr));
               addr++;
               bytesThisTime--;
             }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Get70.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Get70.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Get70.java
index b87903e..e382c57 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Get70.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Get70.java
@@ -42,7 +42,6 @@ import com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
-import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.offheap.annotations.Retained;
 import com.gemstone.gemfire.internal.offheap.annotations.Unretained;
 import com.gemstone.gemfire.internal.security.AuthorizeRequest;
@@ -321,12 +320,13 @@ public class Get70 extends BaseCommand {
     // disk. If it is already a byte[], set isObject to false.
     boolean wasInvalid = false;
     if (data instanceof CachedDeserializable) {
-      if (data instanceof StoredObject && !((StoredObject) data).isSerialized()) {
+      CachedDeserializable cd = (CachedDeserializable) data;
+      if (!cd.isSerialized()) {
         // it is a byte[]
         isObject = false;
-        data = ((StoredObject) data).getDeserializedForReading();
+        data = cd.getDeserializedForReading();
       } else {
-        data = ((CachedDeserializable)data).getValue();
+        data = cd.getValue();
       }
     }
     else if (data == Token.REMOVED_PHASE1 || data == Token.REMOVED_PHASE2 || data == Token.DESTROYED) {
@@ -391,13 +391,10 @@ public class Get70 extends BaseCommand {
     else if (data instanceof byte[]) {
       isObject = false;
     } else if (data instanceof CachedDeserializable) {
-      if (data instanceof StoredObject) {
-        // it is off-heap so do not unwrap it.
-        if (!((StoredObject) data).isSerialized()) {
-          isObject = false;
-        }
-      } else {
-        data = ((CachedDeserializable)data).getValue();
+      CachedDeserializable cd = (CachedDeserializable) data;
+      isObject = cd.isSerialized();
+      if (cd.usesHeapForStorage()) {
+        data = cd.getValue();
       }
     }
     Entry result = new Entry();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Request.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Request.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Request.java
index 6c806c8..b40b6e5 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Request.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Request.java
@@ -38,7 +38,6 @@ import com.gemstone.gemfire.internal.cache.tier.sockets.Message;
 import com.gemstone.gemfire.internal.cache.tier.sockets.Part;
 import com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.offheap.StoredObject;
 import com.gemstone.gemfire.internal.security.AuthorizeRequest;
 import com.gemstone.gemfire.internal.security.AuthorizeRequestPP;
 import com.gemstone.gemfire.security.NotAuthorizedException;
@@ -253,12 +252,13 @@ public class Request extends BaseCommand {
     // disk. If it is already a byte[], set isObject to false.
     // TODO OFFHEAP: optimize
     if (data instanceof CachedDeserializable) {
-      if (data instanceof StoredObject && !((StoredObject) data).isSerialized()) {
+      CachedDeserializable cd = (CachedDeserializable) data;
+      if (!cd.isSerialized()) {
         // it is a byte[]
         isObject = false;
-        data = ((StoredObject) data).getDeserializedForReading();
+        data = cd.getDeserializedForReading();
       } else {
-        data = ((CachedDeserializable)data).getValue();
+        data = cd.getValue();
       }
     }
     else if (data == Token.REMOVED_PHASE1 || data == Token.REMOVED_PHASE2 || data == Token.TOMBSTONE || data == Token.DESTROYED) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventImpl.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventImpl.java
index 0e506f7..b64a654 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventImpl.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventImpl.java
@@ -50,8 +50,6 @@ import com.gemstone.gemfire.internal.cache.WrappedCallbackArgument;
 import com.gemstone.gemfire.internal.cache.lru.Sizeable;
 import com.gemstone.gemfire.internal.cache.tier.sockets.CacheServerHelper;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.offheap.ObjectChunk;
-import com.gemstone.gemfire.internal.offheap.ObjectChunkWithHeapForm;
 import com.gemstone.gemfire.internal.offheap.OffHeapHelper;
 import com.gemstone.gemfire.internal.offheap.ReferenceCountHelper;
 import com.gemstone.gemfire.internal.offheap.Releasable;
@@ -554,11 +552,11 @@ public class GatewaySenderEventImpl implements
       result = this.substituteValue;
       if (result == null) {
       result = this.valueObj;
-      if (result instanceof ObjectChunk) {
+      if (result instanceof StoredObject && ((StoredObject) result).hasRefCount()) {
         if (this.valueObjReleased) {
           result = null;
         } else {
-          ObjectChunk ohref = (ObjectChunk) result;
+          StoredObject ohref = (StoredObject) result;
           if (!ohref.retain()) {
             result = null;
           } else if (this.valueObjReleased) {
@@ -966,9 +964,7 @@ public class GatewaySenderEventImpl implements
 //    if (so != null  && !event.hasDelta()) {
       // Since GatewaySenderEventImpl instances can live for a long time in the gateway region queue
       // we do not want the StoredObject to be one that keeps the heap form cached.
-      if (so instanceof ObjectChunkWithHeapForm) {
-        so = ((ObjectChunkWithHeapForm) so).getChunkWithoutHeapForm(); // fixes 51999
-      }
+      so = so.getStoredObjectWithoutHeapForm(); // fixes 51999
       this.valueObj = so;
       if (!so.isSerialized()) {
         this.valueIsObject = 0x00;
@@ -1280,7 +1276,7 @@ public class GatewaySenderEventImpl implements
           return this;
         }
       }
-      if (v instanceof ObjectChunk) {
+      if (v instanceof StoredObject && ((StoredObject) v).hasRefCount()) {
         try {
           return makeCopy();
         } catch (IllegalStateException ex) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AbstractStoredObject.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AbstractStoredObject.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AbstractStoredObject.java
index 6dad277..22e2d55 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AbstractStoredObject.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AbstractStoredObject.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 
 import com.gemstone.gemfire.DataSerializer;
 import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.internal.DSCODE;
 import com.gemstone.gemfire.internal.DataSerializableFixedID;
 import com.gemstone.gemfire.internal.InternalDataSerializer;
 import com.gemstone.gemfire.internal.cache.RegionEntry;
@@ -104,4 +105,27 @@ public abstract class AbstractStoredObject implements StoredObject {
     InternalDataSerializer.writeDSFIDHeader(DataSerializableFixedID.VM_CACHED_DESERIALIZABLE, out);
     sendAsByteArray(out);
   }
+  
+  @Override
+  public boolean usesHeapForStorage() {
+    return false;
+  }
+  
+  @Override
+  public boolean isSerializedPdxInstance() {
+    if (!isSerialized()) {
+      return false;
+    }
+    // TODO OFFHEAP: what if the data is compressed?
+    byte dsCode = this.readDataByte(0);
+    return dsCode == DSCODE.PDX || dsCode == DSCODE.PDX_ENUM || dsCode == DSCODE.PDX_INLINE_ENUM;
+  }
+
+  @Override
+  public StoredObject getStoredObjectWithoutHeapForm() {
+    // the only implementation that needs to override this
+    // is OffHeapStoredObjectWithHeapForm.
+    return this;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunk.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunk.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunk.java
deleted file mode 100644
index 7916e1f..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunk.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * A memory chunk that also has an address of its memory.
- */
-public interface AddressableMemoryChunk extends MemoryChunk {
-
-  /**
-   * Return the address of the memory of this chunk.
-   */
-  public long getMemoryAddress();
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunkFactory.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunkFactory.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunkFactory.java
deleted file mode 100644
index fa2dd78..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryChunkFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * Used to create AddressableMemoryChunk instances.
- */
-public interface AddressableMemoryChunkFactory {
-  /** Create and return an AddressableMemoryChunk.
-   * @throws OutOfMemoryError if the create fails
-   */
-  public AddressableMemoryChunk create(int size);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryManager.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryManager.java
new file mode 100644
index 0000000..3b6f58d
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/AddressableMemoryManager.java
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.nio.ByteBuffer;
+
+import com.gemstone.gemfire.internal.SharedLibrary;
+import com.gemstone.gemfire.pdx.internal.unsafe.UnsafeWrapper;
+
+/**
+ * This class supports allocating and freeing large amounts of addressable memory
+ * (i.e. slabs). It also supports using an "address" to operate on the memory.
+ * Note that this class's implementation is currently a singleton so all the methods
+ * on it are static.
+ */
+public class AddressableMemoryManager {
+  private static final UnsafeWrapper unsafe;
+  private static final int ARRAY_BYTE_BASE_OFFSET;
+  private static final String reason;
+  static {
+    UnsafeWrapper tmp = null;
+    String tmpReason = null;
+    try {
+      tmp = new UnsafeWrapper();
+    } catch (RuntimeException ignore) {
+      tmpReason = ignore.toString();
+    } catch (Error ignore) {
+      tmpReason = ignore.toString();
+    }
+    reason = tmpReason;
+    unsafe = tmp;
+    ARRAY_BYTE_BASE_OFFSET = unsafe != null ? unsafe.arrayBaseOffset(byte[].class) : 0;
+  }
+  
+  public static long allocate(int size) {
+    if (unsafe == null) {
+      throw new OutOfMemoryError("Off-heap memory is not available because: " + reason);
+    }
+    try {
+      return unsafe.allocateMemory(size);
+    } catch (OutOfMemoryError err) {
+      String msg = "Failed creating " + size + " bytes of off-heap memory during cache creation.";
+      if (err.getMessage() != null && !err.getMessage().isEmpty()) {
+        msg += " Cause: " + err.getMessage();
+      }
+      if (!SharedLibrary.is64Bit() && size >= (1024*1024*1024)) {
+        msg += " The JVM looks like a 32-bit one. For large amounts of off-heap memory a 64-bit JVM is needed.";
+      }
+      throw new OutOfMemoryError(msg);
+    }
+  }
+
+  public static void free(long addr) {
+    unsafe.freeMemory(addr);
+  }
+  
+  public static Slab allocateSlab(int size) {
+    return new SlabImpl(size);
+  }
+
+  public static byte readByte(long addr) {
+    return unsafe.getByte(addr);
+  }
+  public static char readChar(long addr) {
+    return unsafe.getChar(null, addr);
+  }
+  public static short readShort(long addr) {
+    return unsafe.getShort(null, addr);
+  }
+  public static int readInt(long addr) {
+    return unsafe.getInt(null, addr);
+  }
+  public static int readIntVolatile(long addr) {
+    return unsafe.getIntVolatile(null, addr);
+  }
+  public static long readLong(long addr) {
+    return unsafe.getLong(null, addr);
+  }
+  public static long readLongVolatile(long addr) {
+    return unsafe.getLongVolatile(null, addr);
+  }
+  public static void writeByte(long addr, byte value) {
+    unsafe.putByte(addr, value);
+  }
+  public static void writeInt(long addr, int value) {
+    unsafe.putInt(null, addr, value);
+  }
+  public static void writeIntVolatile(long addr, int value) {
+    unsafe.putIntVolatile(null, addr, value);
+  }
+  public static boolean writeIntVolatile(long addr, int expected, int value) {
+    return unsafe.compareAndSwapInt(null, addr, expected, value);
+  }
+  public static void writeLong(long addr, long value) {
+    unsafe.putLong(null, addr, value);
+  }
+  public static void writeLongVolatile(long addr, long value) {
+    unsafe.putLongVolatile(null, addr, value);
+  }
+  public static boolean writeLongVolatile(long addr, long expected, long value) {
+    return unsafe.compareAndSwapLong(null, addr, expected, value);
+  }
+  public static void readBytes(long addr, byte[] bytes, int bytesOffset, int size) {
+    // Throwing an Error instead of using the "assert" keyword because passing < 0 to
+    // copyMemory(...) can lead to a core dump with some JVMs and we don't want to
+    // require the -ea JVM flag.
+    if (size < 0) {
+      throw new AssertionError("Size=" + size + ", but size must be >= 0");
+    }
+    
+    assert bytesOffset >= 0 : "byteOffset=" + bytesOffset;
+    assert bytesOffset + size <= bytes.length : "byteOffset=" + bytesOffset + ",size=" + size + ",bytes.length=" + bytes.length;
+    
+    if (size == 0) {
+      return; // No point in wasting time copying 0 bytes
+    }
+    unsafe.copyMemory(null, addr, bytes, ARRAY_BYTE_BASE_OFFSET+bytesOffset, size);
+  }
+  public static void copyMemory(long srcAddr, long dstAddr, long size) {
+    unsafe.copyMemory(srcAddr, dstAddr, size);
+  }
+  public static void writeBytes(long addr, byte[] bytes, int bytesOffset, int size) {
+    // Throwing an Error instead of using the "assert" keyword because passing < 0 to
+    // copyMemory(...) can lead to a core dump with some JVMs and we don't want to
+    // require the -ea JVM flag.
+    if (size < 0) {
+      throw new AssertionError("Size=" + size + ", but size must be >= 0");
+    }
+  
+    assert bytesOffset >= 0 : "byteOffset=" + bytesOffset;
+    assert bytesOffset + size <= bytes.length : "byteOffset=" + bytesOffset + ",size=" + size + ",bytes.length=" + bytes.length;
+    
+    if (size == 0) {
+      return; // No point in wasting time copying 0 bytes
+    }
+    unsafe.copyMemory(bytes, ARRAY_BYTE_BASE_OFFSET+bytesOffset, null, addr, size);
+  }
+  public static void fill(long addr, int size, byte fill) {
+    unsafe.setMemory(addr, size, fill);
+  }
+
+  @SuppressWarnings("rawtypes")
+  private static volatile Class dbbClass = null;
+  @SuppressWarnings("rawtypes")
+  private static volatile Constructor dbbCtor = null;
+  private static volatile boolean dbbCreateFailed = false;
+  private static volatile Method dbbAddressMethod = null;
+  private static volatile boolean dbbAddressFailed = false;
+
+  /**
+   * Returns the address of the Unsafe memory for the first byte of a direct ByteBuffer.
+   * If the buffer is not direct or the address can not be obtained return 0.
+   */
+  @SuppressWarnings({ "rawtypes", "unchecked" })
+  public static long getDirectByteBufferAddress(ByteBuffer bb) {
+    if (!bb.isDirect()) {
+      return 0L;
+    }
+    if (dbbAddressFailed) {
+      return 0L;
+    }
+    Method m = dbbAddressMethod;
+    if (m == null) {
+      Class c = dbbClass;
+      if (c == null) {
+        try {
+          c = Class.forName("java.nio.DirectByteBuffer");
+        } catch (ClassNotFoundException e) {
+          //throw new IllegalStateException("Could not find java.nio.DirectByteBuffer", e);
+          dbbCreateFailed = true;
+          dbbAddressFailed = true;
+          return 0L;
+        }
+        dbbClass = c;
+      }
+      try {
+        m = c.getDeclaredMethod("address");
+      } catch (NoSuchMethodException | SecurityException e) {
+        //throw new IllegalStateException("Could not get method DirectByteBuffer.address()", e);
+        dbbClass = null;
+        dbbAddressFailed = true;
+        return 0L;
+      }
+      m.setAccessible(true);
+      dbbAddressMethod = m;
+    }
+    try {
+      return (Long)m.invoke(bb);
+    } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      //throw new IllegalStateException("Could not create an invoke DirectByteBuffer.address()", e);
+      dbbClass = null;
+      dbbAddressMethod = null;
+      dbbAddressFailed = true;
+      return 0L;
+    }
+  }
+
+  /**
+   * Create a direct byte buffer given its address and size.
+   * The returned ByteBuffer will be direct and use the memory at the given address.
+   * @return the created direct byte buffer or null if it could not be created.
+   */
+  @SuppressWarnings({ "rawtypes", "unchecked" })
+  static ByteBuffer createDirectByteBuffer(long address, int size) {
+    if (dbbCreateFailed) {
+      return null;
+    }
+    Constructor ctor = dbbCtor;
+    if (ctor == null) {
+      Class c = dbbClass;
+      if (c == null) {
+        try {
+          c = Class.forName("java.nio.DirectByteBuffer");
+        } catch (ClassNotFoundException e) {
+          //throw new IllegalStateException("Could not find java.nio.DirectByteBuffer", e);
+          dbbCreateFailed = true;
+          dbbAddressFailed = true;
+          return null;
+        }
+        dbbClass = c;
+      }
+      try {
+        ctor = c.getDeclaredConstructor(long.class, int.class);
+      } catch (NoSuchMethodException | SecurityException e) {
+        //throw new IllegalStateException("Could not get constructor DirectByteBuffer(long, int)", e);
+        dbbClass = null;
+        dbbCreateFailed = true;
+        return null;
+      }
+      ctor.setAccessible(true);
+      dbbCtor = ctor;
+    }
+    try {
+      return (ByteBuffer)ctor.newInstance(address, size);
+    } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      //throw new IllegalStateException("Could not create an instance using DirectByteBuffer(long, int)", e);
+      dbbClass = null;
+      dbbCtor = null;
+      dbbCreateFailed = true;
+      return null;
+    }
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunk.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunk.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunk.java
deleted file mode 100644
index cd02259..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteArrayMemoryChunk.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * The read and write methods on this implementation will throw ArrayIndexOutOfBoundsException
- * if the offset extends past the end of the underlying array of if an attempt is made to read or write past the end of the array.
- * 
- * @author darrel
- * @since 9.0
- */
-public class ByteArrayMemoryChunk implements MemoryChunk {
-
-  private final byte[] data;
-  
-  public ByteArrayMemoryChunk(int size) {
-    this.data = new byte[size];
-  }
-  
-  @Override
-  public int getSize() {
-    return this.data.length;
-  }
-
-  @Override
-  public byte readByte(int offset) {
-    return this.data[offset];
-  }
-
-  @Override
-  public void writeByte(int offset, byte value) {
-    this.data[offset] = value;
-  }
-
-  @Override
-  public void readBytes(int offset, byte[] bytes) {
-    readBytes(offset, bytes, 0, bytes.length);
-  }
-
-  @Override
-  public void writeBytes(int offset, byte[] bytes) {
-    writeBytes(offset, bytes, 0, bytes.length);
-  }
-
-  @Override
-  public void readBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-    System.arraycopy(this.data, offset, bytes, bytesOffset, size);
-  }
-
-  @Override
-  public void writeBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-    System.arraycopy(bytes, bytesOffset, this.data, offset, size);
-  }
-
-  @Override
-  public void release() {
-  }
-
-  @Override
-  public void copyBytes(int src, int dst, int size) {
-    System.arraycopy(this.data, src, this.data, dst, size);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteBufferMemoryChunk.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteBufferMemoryChunk.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteBufferMemoryChunk.java
deleted file mode 100644
index 1c030f7..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/ByteBufferMemoryChunk.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import java.nio.ByteBuffer;
-
-/**
- * This implementation may throw IndexOutOfBoundsException or IllegalArgumentException if the wrong offset is given to the read and write methods.
- * BufferUnderflowException will be thrown if an attempt to read more data than exists is made.
- * BufferOverflowException will be thrown if an attempt to write past the end of the chunk is made.
- * 
- * @author darrel
- * @since 9.0
- */
-public class ByteBufferMemoryChunk implements MemoryChunk {
-
-  private final ByteBuffer data;
-  
-  public ByteBufferMemoryChunk(ByteBuffer bb) {
-    this.data = bb;
-  }
-  
-  @Override
-  public int getSize() {
-    return this.data.capacity();
-  }
-
-  @Override
-  public byte readByte(int offset) {
-    return this.data.get(offset);
-  }
-
-  @Override
-  public void writeByte(int offset, byte value) {
-    this.data.put(offset, value);
-  }
-
-  @Override
-  public void readBytes(int offset, byte[] bytes) {
-    readBytes(offset, bytes, 0, bytes.length);
-  }
-
-  @Override
-  public void writeBytes(int offset, byte[] bytes) {
-    writeBytes(offset, bytes, 0, bytes.length);
-  }
-
-  @Override
-  public void readBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-    // NOT THREAD SAFE
-    this.data.position(offset);
-    this.data.get(bytes, bytesOffset, size);
-  }
-
-  @Override
-  public void writeBytes(int offset, byte[] bytes, int bytesOffset, int size) {
-    // NOT THREAD SAFE
-    this.data.position(offset);
-    this.data.put(bytes, bytesOffset, size);
-  }
-
-  @Override
-  public void release() {
-  }
-
-  @Override
-  public void copyBytes(int src, int dst, int size) {
-    // NOT THREAD SAFE
-    this.data.position(src);
-    ByteBuffer srcBuff = this.data.slice();
-    srcBuff.limit(size);
-
-    this.data.position(dst);
-    this.data.put(srcBuff);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/DataAsAddress.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/DataAsAddress.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/DataAsAddress.java
deleted file mode 100644
index 96957ac..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/DataAsAddress.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
-import com.gemstone.gemfire.internal.cache.EntryBits;
-import com.gemstone.gemfire.internal.cache.EntryEventImpl;
-import com.gemstone.gemfire.internal.cache.RegionEntry;
-import com.gemstone.gemfire.internal.cache.RegionEntryContext;
-
-/**
- * Used to represent offheap addresses whose
- * value encodes actual data instead a memory
- * location.
- * Instances of this class have a very short lifetime.
- */
-public class DataAsAddress extends AbstractStoredObject {
-  private final long address;
-  
-  public DataAsAddress(long addr) {
-    this.address = addr;
-  }
-  
-  public long getEncodedAddress() {
-    return this.address;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (o instanceof DataAsAddress) {
-      return getEncodedAddress() == ((DataAsAddress) o).getEncodedAddress();
-    }
-    return false;
-  }
-  
-  @Override
-  public int hashCode() {
-    long value = getEncodedAddress();
-    return (int)(value ^ (value >>> 32));
-  }
-
-  @Override
-  public int getSizeInBytes() {
-    return 0;
-  }
-
-  public byte[] getDecompressedBytes(RegionEntryContext r) {
-    byte[] bytes = OffHeapRegionEntryHelper.decodeAddressToBytes(getEncodedAddress(), true, true);
-    if (isCompressed()) {
-        long time = r.getCachePerfStats().startDecompression();
-        bytes = r.getCompressor().decompress(bytes);
-        r.getCachePerfStats().endDecompression(time);
-    }
-    return bytes;
-  }
-
-  /**
-   * If we contain a byte[] return it.
-   * Otherwise return the serialize bytes in us in a byte array.
-   */
-  public byte[] getRawBytes() {
-    return OffHeapRegionEntryHelper.decodeAddressToBytes(getEncodedAddress(), true, false);
-  }
-  
-  @Override
-  public byte[] getSerializedValue() {
-    byte[] value = OffHeapRegionEntryHelper.decodeAddressToBytes(this.address, true, false);
-    if (!isSerialized()) {
-      value = EntryEventImpl.serialize(value);
-    }
-    return value;
-  }
-
-  @Override
-  public Object getDeserializedValue(Region r, RegionEntry re) {
-    return OffHeapRegionEntryHelper.decodeAddressToObject(this.address);
-  }
-
-  @Override
-  public void fillSerializedValue(BytesAndBitsForCompactor wrapper,
-      byte userBits) {
-    byte[] value;
-    if (isSerialized()) {
-      value = getSerializedValue();
-      userBits = EntryBits.setSerialized(userBits, true);
-    } else {
-      value = (byte[]) getDeserializedForReading();
-    }
-    wrapper.setData(value, userBits, value.length, true);
-  }
-
-  @Override
-  public int getValueSizeInBytes() {
-    return 0;
-  }
-  
-  @Override
-  public boolean isSerialized() {
-    return OffHeapRegionEntryHelper.isSerialized(this.address);
-  }
-
-  @Override
-  public boolean isCompressed() {
-    return OffHeapRegionEntryHelper.isCompressed(this.address);
-  }
-  
-  @Override
-  public boolean retain() {
-    // nothing needed
-    return true;
-  }
-  @Override
-  public void release() {
-    // nothing needed
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Fragment.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Fragment.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Fragment.java
index d337cfc..d36a71c 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Fragment.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/Fragment.java
@@ -30,7 +30,7 @@ import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
  *
  */
 public class Fragment implements MemoryBlock {
-  private static final byte FILL_BYTE = ObjectChunk.FILL_BYTE;
+  private static final byte FILL_BYTE = OffHeapStoredObject.FILL_BYTE;
   private final long baseAddr;
   private final int size;
   @SuppressWarnings("unused")
@@ -60,7 +60,7 @@ public class Fragment implements MemoryBlock {
     return this.size;
   }
 
-  public long getMemoryAddress() {
+  public long getAddress() {
     return this.baseAddr;
   }
 
@@ -115,20 +115,20 @@ public class Fragment implements MemoryBlock {
   }
   
   public void fill() {
-    UnsafeMemoryChunk.fill(this.baseAddr, this.size, FILL_BYTE);
+    AddressableMemoryManager.fill(this.baseAddr, this.size, FILL_BYTE);
   }
 
   @Override
   public boolean equals(Object o) {
     if (o instanceof Fragment) {
-      return getMemoryAddress() == ((Fragment) o).getMemoryAddress();
+      return getAddress() == ((Fragment) o).getAddress();
     }
     return false;
   }
   
   @Override
   public int hashCode() {
-    long value = this.getMemoryAddress();
+    long value = this.getAddress();
     return (int)(value ^ (value >>> 32));
   }
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
index 3859d58..ed7035a 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/FreeListManager.java
@@ -40,35 +40,35 @@ public class FreeListManager {
   /** The MemoryChunks that this allocator is managing by allocating smaller chunks of them.
    * The contents of this array never change.
    */
-  private final AddressableMemoryChunk[] slabs;
+  private final Slab[] slabs;
   private final long totalSlabSize;
   
-  final private AtomicReferenceArray<SyncChunkStack> tinyFreeLists = new AtomicReferenceArray<SyncChunkStack>(TINY_FREE_LIST_COUNT);
+  final private AtomicReferenceArray<OffHeapStoredObjectAddressStack> tinyFreeLists = new AtomicReferenceArray<OffHeapStoredObjectAddressStack>(TINY_FREE_LIST_COUNT);
   // hugeChunkSet is sorted by chunk size in ascending order. It will only contain chunks larger than MAX_TINY.
-  private final ConcurrentSkipListSet<ObjectChunk> hugeChunkSet = new ConcurrentSkipListSet<ObjectChunk>();
+  private final ConcurrentSkipListSet<OffHeapStoredObject> hugeChunkSet = new ConcurrentSkipListSet<OffHeapStoredObject>();
   private final AtomicLong allocatedSize = new AtomicLong(0L);
 
   private int getNearestTinyMultiple(int size) {
     return (size-1)/TINY_MULTIPLE;
   }
-  List<ObjectChunk> getLiveChunks() {
-    ArrayList<ObjectChunk> result = new ArrayList<ObjectChunk>();
+  List<OffHeapStoredObject> getLiveChunks() {
+    ArrayList<OffHeapStoredObject> result = new ArrayList<OffHeapStoredObject>();
     for (int i=0; i < slabs.length; i++) {
       getLiveChunks(slabs[i], result);
     }
     return result;
   }
-  private void getLiveChunks(AddressableMemoryChunk slab, List<ObjectChunk> result) {
+  private void getLiveChunks(Slab slab, List<OffHeapStoredObject> result) {
     long addr = slab.getMemoryAddress();
-    while (addr <= (slab.getMemoryAddress() + slab.getSize() - ObjectChunk.MIN_CHUNK_SIZE)) {
+    while (addr <= (slab.getMemoryAddress() + slab.getSize() - OffHeapStoredObject.MIN_CHUNK_SIZE)) {
       Fragment f = isAddrInFragmentFreeSpace(addr);
       if (f != null) {
-        addr = f.getMemoryAddress() + f.getSize();
+        addr = f.getAddress() + f.getSize();
       } else {
-        int curChunkSize = ObjectChunk.getSize(addr);
-        int refCount = ObjectChunk.getRefCount(addr);
+        int curChunkSize = OffHeapStoredObject.getSize(addr);
+        int refCount = OffHeapStoredObject.getRefCount(addr);
         if (refCount > 0) {
-          result.add(new ObjectChunk(addr));
+          result.add(new OffHeapStoredObject(addr));
         }
         addr += curChunkSize;
       }
@@ -79,7 +79,7 @@ public class FreeListManager {
    */
   private Fragment isAddrInFragmentFreeSpace(long addr) {
     for (Fragment f: this.fragmentList) {
-      if (addr >= (f.getMemoryAddress() + f.getFreeIndex()) && addr < (f.getMemoryAddress() + f.getSize())) {
+      if (addr >= (f.getAddress() + f.getFreeIndex()) && addr < (f.getAddress() + f.getSize())) {
         return f;
       }
     }
@@ -95,7 +95,7 @@ public class FreeListManager {
     long result = 0;
     for (Fragment f: this.fragmentList) {
       int freeSpace = f.freeSpace();
-      if (freeSpace >= ObjectChunk.MIN_CHUNK_SIZE) {
+      if (freeSpace >= OffHeapStoredObject.MIN_CHUNK_SIZE) {
         result += freeSpace;
       }
     }
@@ -104,7 +104,7 @@ public class FreeListManager {
   long getFreeTinyMemory() {
     long tinyFree = 0;
     for (int i=0; i < this.tinyFreeLists.length(); i++) {
-      SyncChunkStack cl = this.tinyFreeLists.get(i);
+      OffHeapStoredObjectAddressStack cl = this.tinyFreeLists.get(i);
       if (cl != null) {
         tinyFree += cl.computeTotalSize();
       }
@@ -113,7 +113,7 @@ public class FreeListManager {
   }
   long getFreeHugeMemory() {
     long hugeFree = 0;
-    for (ObjectChunk c: this.hugeChunkSet) {
+    for (OffHeapStoredObject c: this.hugeChunkSet) {
       hugeFree += c.getSize();
     }
     return hugeFree;
@@ -126,7 +126,7 @@ public class FreeListManager {
   private final CopyOnWriteArrayList<Fragment> fragmentList;
   private final SimpleMemoryAllocatorImpl ma;
 
-  public FreeListManager(SimpleMemoryAllocatorImpl ma, final AddressableMemoryChunk[] slabs) {
+  public FreeListManager(SimpleMemoryAllocatorImpl ma, final Slab[] slabs) {
     this.ma = ma;
     this.slabs = slabs;
     long total = 0;
@@ -178,10 +178,10 @@ public class FreeListManager {
    * @throws IllegalStateException if a chunk can not be allocated.
    */
   @SuppressWarnings("synthetic-access")
-  public ObjectChunk allocate(int size) {
+  public OffHeapStoredObject allocate(int size) {
     assert size > 0;
     
-    ObjectChunk result = basicAllocate(size, true);
+    OffHeapStoredObject result = basicAllocate(size, true);
 
     result.setDataSize(size);
     this.allocatedSize.addAndGet(result.getSize());
@@ -190,13 +190,13 @@ public class FreeListManager {
     return result;
   }
 
-  private ObjectChunk basicAllocate(int size, boolean useSlabs) {
+  private OffHeapStoredObject basicAllocate(int size, boolean useSlabs) {
     if (useSlabs) {
       // Every object stored off heap has a header so we need
       // to adjust the size so that the header gets allocated.
       // If useSlabs is false then the incoming size has already
       // been adjusted.
-      size += ObjectChunk.OFF_HEAP_HEADER_SIZE;
+      size += OffHeapStoredObject.HEADER_SIZE;
     }
     if (size <= MAX_TINY) {
       return allocateTiny(size, useSlabs);
@@ -205,17 +205,17 @@ public class FreeListManager {
     }
   }
 
-  private ObjectChunk allocateFromFragments(int chunkSize) {
+  private OffHeapStoredObject allocateFromFragments(int chunkSize) {
     do {
       final int lastAllocationId = this.lastFragmentAllocation.get();
       for (int i=lastAllocationId; i < this.fragmentList.size(); i++) {
-        ObjectChunk result = allocateFromFragment(i, chunkSize);
+        OffHeapStoredObject result = allocateFromFragment(i, chunkSize);
         if (result != null) {
           return result;
         }
       }
       for (int i=0; i < lastAllocationId; i++) {
-        ObjectChunk result = allocateFromFragment(i, chunkSize);
+        OffHeapStoredObject result = allocateFromFragment(i, chunkSize);
         if (result != null) {
           return result;
         }
@@ -247,13 +247,13 @@ public class FreeListManager {
   }
 
   private void logHugeState(LogWriter lw) {
-    for (ObjectChunk c: this.hugeChunkSet) {
+    for (OffHeapStoredObject c: this.hugeChunkSet) {
       lw.info("Free huge of size " + c.getSize());
     }
   }
   private void logTinyState(LogWriter lw) {
     for (int i=0; i < this.tinyFreeLists.length(); i++) {
-      SyncChunkStack cl = this.tinyFreeLists.get(i);
+      OffHeapStoredObjectAddressStack cl = this.tinyFreeLists.get(i);
       if (cl != null) {
         cl.logSizes(lw, "Free tiny of size ");
       }
@@ -263,7 +263,7 @@ public class FreeListManager {
     for (Fragment f: this.fragmentList) {
       int freeSpace = f.freeSpace();
       if (freeSpace > 0) {
-        lw.info("Fragment at " + f.getMemoryAddress() + " of size " + f.getSize() + " has " + freeSpace + " bytes free.");
+        lw.info("Fragment at " + f.getAddress() + " of size " + f.getSize() + " has " + freeSpace + " bytes free.");
       }
     }
   }
@@ -323,14 +323,14 @@ public class FreeListManager {
           // So just return true causing the caller to retry the allocation.
           return true;
         }
-        ArrayList<SyncChunkStack> freeChunks = new ArrayList<SyncChunkStack>();
+        ArrayList<OffHeapStoredObjectAddressStack> freeChunks = new ArrayList<OffHeapStoredObjectAddressStack>();
         collectFreeChunks(freeChunks);
         final int SORT_ARRAY_BLOCK_SIZE = 128;
         long[] sorted = new long[SORT_ARRAY_BLOCK_SIZE];
         int sortedSize = 0;
         boolean result = false;
         int largestFragment = 0;
-        for (SyncChunkStack l: freeChunks) {
+        for (OffHeapStoredObjectAddressStack l: freeChunks) {
           long addr = l.poll();
           while (addr != 0) {
             int idx = Arrays.binarySearch(sorted, 0, sortedSize, addr);
@@ -345,10 +345,10 @@ public class FreeListManager {
               } else {
                 // see if we can conflate into sorted[idx]
                 long lowAddr = sorted[idx-1];
-                int lowSize = ObjectChunk.getSize(lowAddr);
+                int lowSize = OffHeapStoredObject.getSize(lowAddr);
                 if (lowAddr + lowSize == addr) {
                   // append the addr chunk to lowAddr
-                  ObjectChunk.setSize(lowAddr, lowSize + ObjectChunk.getSize(addr));
+                  OffHeapStoredObject.setSize(lowAddr, lowSize + OffHeapStoredObject.getSize(addr));
                 } else {
                   if (sortedSize >= sorted.length) {
                     long[] newSorted = new long[sorted.length+SORT_ARRAY_BLOCK_SIZE];
@@ -360,11 +360,11 @@ public class FreeListManager {
                 }
               }
             } else {
-              int addrSize = ObjectChunk.getSize(addr);
+              int addrSize = OffHeapStoredObject.getSize(addr);
               long highAddr = sorted[idx];
               if (addr + addrSize == highAddr) {
                 // append highAddr chunk to addr
-                ObjectChunk.setSize(addr, addrSize + ObjectChunk.getSize(highAddr));
+                OffHeapStoredObject.setSize(addr, addrSize + OffHeapStoredObject.getSize(highAddr));
                 sorted[idx] = addr;
               } else {
                 boolean insert = idx==0;
@@ -374,10 +374,10 @@ public class FreeListManager {
                   //                    long[] tmp = Arrays.copyOf(sorted, sortedSize);
                   //                    throw new IllegalStateException("addr was zero at idx=" + (idx-1) + " sorted="+ Arrays.toString(tmp));
                   //                  }
-                  int lowSize = ObjectChunk.getSize(lowAddr);
+                  int lowSize = OffHeapStoredObject.getSize(lowAddr);
                   if (lowAddr + lowSize == addr) {
                     // append the addr chunk to lowAddr
-                    ObjectChunk.setSize(lowAddr, lowSize + addrSize);
+                    OffHeapStoredObject.setSize(lowAddr, lowSize + addrSize);
                   } else {
                     insert = true;
                   }
@@ -403,10 +403,10 @@ public class FreeListManager {
         for (int i=sortedSize-1; i > 0; i--) {
           long addr = sorted[i];
           long lowAddr = sorted[i-1];
-          int lowSize = ObjectChunk.getSize(lowAddr);
+          int lowSize = OffHeapStoredObject.getSize(lowAddr);
           if (lowAddr + lowSize == addr) {
             // append addr chunk to lowAddr
-            ObjectChunk.setSize(lowAddr, lowSize + ObjectChunk.getSize(addr));
+            OffHeapStoredObject.setSize(lowAddr, lowSize + OffHeapStoredObject.getSize(addr));
             sorted[i] = 0L;
           }
         }
@@ -415,7 +415,7 @@ public class FreeListManager {
         for (int i=sortedSize-1; i >= 0; i--) {
           long addr = sorted[i];
           if (addr == 0L) continue;
-          int addrSize = ObjectChunk.getSize(addr);
+          int addrSize = OffHeapStoredObject.getSize(addr);
           Fragment f = createFragment(addr, addrSize);
           if (addrSize >= chunkSize) {
             result = true;
@@ -492,15 +492,15 @@ public class FreeListManager {
       } else {
         //more than 1 fragment is available so freeMemory is > ObjectChunk.MIN_CHUNK_SIZE
         long freeMemory = getFreeMemory();
-        assert freeMemory > ObjectChunk.MIN_CHUNK_SIZE;
-        long maxPossibleFragments = freeMemory / ObjectChunk.MIN_CHUNK_SIZE;
+        assert freeMemory > OffHeapStoredObject.MIN_CHUNK_SIZE;
+        long maxPossibleFragments = freeMemory / OffHeapStoredObject.MIN_CHUNK_SIZE;
         double fragmentation = ((double) availableFragments /(double) maxPossibleFragments) * 100d;
         return (int) Math.rint(fragmentation);
       }
     }
   }
 
-  private void collectFreeChunks(List<SyncChunkStack> l) {
+  private void collectFreeChunks(List<OffHeapStoredObjectAddressStack> l) {
     collectFreeFragmentChunks(l);
     collectFreeHugeChunks(l);
     collectFreeTinyChunks(l);
@@ -508,17 +508,17 @@ public class FreeListManager {
   List<Fragment> getFragmentList() {
     return this.fragmentList;
   }
-  private void collectFreeFragmentChunks(List<SyncChunkStack> l) {
+  private void collectFreeFragmentChunks(List<OffHeapStoredObjectAddressStack> l) {
     if (this.fragmentList.size() == 0) return;
-    SyncChunkStack result = new SyncChunkStack();
+    OffHeapStoredObjectAddressStack result = new OffHeapStoredObjectAddressStack();
     for (Fragment f: this.fragmentList) {
       int offset;
       int diff;
       do {
         offset = f.getFreeIndex();
         diff = f.getSize() - offset;
-      } while (diff >= ObjectChunk.MIN_CHUNK_SIZE && !f.allocate(offset, offset+diff));
-      if (diff < ObjectChunk.MIN_CHUNK_SIZE) {
+      } while (diff >= OffHeapStoredObject.MIN_CHUNK_SIZE && !f.allocate(offset, offset+diff));
+      if (diff < OffHeapStoredObject.MIN_CHUNK_SIZE) {
         // If diff > 0 then that memory will be lost during compaction.
         // This should never happen since we keep the sizes rounded
         // based on MIN_CHUNK_SIZE.
@@ -526,8 +526,8 @@ public class FreeListManager {
         // The current fragment is completely allocated so just skip it.
         continue;
       }
-      long chunkAddr = f.getMemoryAddress()+offset;
-      ObjectChunk.setSize(chunkAddr, diff);
+      long chunkAddr = f.getAddress()+offset;
+      OffHeapStoredObject.setSize(chunkAddr, diff);
       result.offer(chunkAddr);
     }
     // All the fragments have been turned in to chunks so now clear them
@@ -537,31 +537,31 @@ public class FreeListManager {
       l.add(result);
     }
   }
-  private void collectFreeTinyChunks(List<SyncChunkStack> l) {
+  private void collectFreeTinyChunks(List<OffHeapStoredObjectAddressStack> l) {
     for (int i=0; i < this.tinyFreeLists.length(); i++) {
-      SyncChunkStack cl = this.tinyFreeLists.get(i);
+      OffHeapStoredObjectAddressStack cl = this.tinyFreeLists.get(i);
       if (cl != null) {
         long head = cl.clear();
         if (head != 0L) {
-          l.add(new SyncChunkStack(head));
+          l.add(new OffHeapStoredObjectAddressStack(head));
         }
       }
     }
   }
-  private void collectFreeHugeChunks(List<SyncChunkStack> l) {
-    ObjectChunk c = this.hugeChunkSet.pollFirst();
-    SyncChunkStack result = null;
+  private void collectFreeHugeChunks(List<OffHeapStoredObjectAddressStack> l) {
+    OffHeapStoredObject c = this.hugeChunkSet.pollFirst();
+    OffHeapStoredObjectAddressStack result = null;
     while (c != null) {
       if (result == null) {
-        result = new SyncChunkStack();
+        result = new OffHeapStoredObjectAddressStack();
         l.add(result);
       }
-      result.offer(c.getMemoryAddress());
+      result.offer(c.getAddress());
       c = this.hugeChunkSet.pollFirst();
     }
   }
 
-  ObjectChunk allocateFromFragment(final int fragIdx, final int chunkSize) {
+  OffHeapStoredObject allocateFromFragment(final int fragIdx, final int chunkSize) {
     if (fragIdx >= this.fragmentList.size()) return null;
     final Fragment fragment;
     try {
@@ -580,7 +580,7 @@ public class FreeListManager {
         // this fragment has room
         int newOffset = oldOffset + chunkSize;
         int extraSize = fragmentSize - newOffset;
-        if (extraSize < ObjectChunk.MIN_CHUNK_SIZE) {
+        if (extraSize < OffHeapStoredObject.MIN_CHUNK_SIZE) {
           // include these last few bytes of the fragment in the allocation.
           // If we don't then they will be lost forever.
           // The extraSize bytes only apply to the first chunk we allocate (not the batch ones).
@@ -591,11 +591,11 @@ public class FreeListManager {
         if (fragment.allocate(oldOffset, newOffset)) {
           // We did the allocate!
           this.lastFragmentAllocation.set(fragIdx);
-          ObjectChunk result = new ObjectChunk(fragment.getMemoryAddress()+oldOffset, chunkSize+extraSize);
+          OffHeapStoredObject result = new OffHeapStoredObject(fragment.getAddress()+oldOffset, chunkSize+extraSize);
           checkDataIntegrity(result);
           return result;
         } else {
-          ObjectChunk result = basicAllocate(chunkSize, false);
+          OffHeapStoredObject result = basicAllocate(chunkSize, false);
           if (result != null) {
             return result;
           }
@@ -609,15 +609,15 @@ public class FreeListManager {
   private int round(int multiple, int value) {
     return (int) ((((long)value + (multiple-1)) / multiple) * multiple);
   }
-  private ObjectChunk allocateTiny(int size, boolean useFragments) {
+  private OffHeapStoredObject allocateTiny(int size, boolean useFragments) {
     return basicAllocate(getNearestTinyMultiple(size), TINY_MULTIPLE, 0, this.tinyFreeLists, useFragments);
   }
-  private ObjectChunk basicAllocate(int idx, int multiple, int offset, AtomicReferenceArray<SyncChunkStack> freeLists, boolean useFragments) {
-    SyncChunkStack clq = freeLists.get(idx);
+  private OffHeapStoredObject basicAllocate(int idx, int multiple, int offset, AtomicReferenceArray<OffHeapStoredObjectAddressStack> freeLists, boolean useFragments) {
+    OffHeapStoredObjectAddressStack clq = freeLists.get(idx);
     if (clq != null) {
       long memAddr = clq.poll();
       if (memAddr != 0) {
-        ObjectChunk result = new ObjectChunk(memAddr);
+        OffHeapStoredObject result = new OffHeapStoredObject(memAddr);
         checkDataIntegrity(result);
         result.readyForAllocation();
         return result;
@@ -629,13 +629,13 @@ public class FreeListManager {
       return null;
     }
   }
-  private ObjectChunk allocateHuge(int size, boolean useFragments) {
+  private OffHeapStoredObject allocateHuge(int size, boolean useFragments) {
     // sizeHolder is a fake Chunk used to search our sorted hugeChunkSet.
-    ObjectChunk sizeHolder = new FakeChunk(size);
-    NavigableSet<ObjectChunk> ts = this.hugeChunkSet.tailSet(sizeHolder);
-    ObjectChunk result = ts.pollFirst();
+    OffHeapStoredObject sizeHolder = new SearchMarker(size);
+    NavigableSet<OffHeapStoredObject> ts = this.hugeChunkSet.tailSet(sizeHolder);
+    OffHeapStoredObject result = ts.pollFirst();
     if (result != null) {
-      if (result.getSize() - (HUGE_MULTIPLE - ObjectChunk.OFF_HEAP_HEADER_SIZE) < size) {
+      if (result.getSize() - (HUGE_MULTIPLE - OffHeapStoredObject.HEADER_SIZE) < size) {
         // close enough to the requested size; just return it.
         checkDataIntegrity(result);
         result.readyForAllocation();
@@ -653,19 +653,19 @@ public class FreeListManager {
     }
   }
   
-  private void checkDataIntegrity(ObjectChunk data) {
+  private void checkDataIntegrity(OffHeapStoredObject data) {
     if (this.validateMemoryWithFill) {
       data.validateFill();
     }
   }
   /**
    * Used by the FreeListManager to easily search its
-   * ConcurrentSkipListSet. This is not a real chunk
+   * ConcurrentSkipListSet. This is not a real OffHeapStoredObject
    * but only used for searching.
    */
-  private static class FakeChunk extends ObjectChunk {
+  private static class SearchMarker extends OffHeapStoredObject {
     private final int size;
-    public FakeChunk(int size) {
+    public SearchMarker(int size) {
       super();
       this.size = size;
     }
@@ -678,14 +678,14 @@ public class FreeListManager {
   @SuppressWarnings("synthetic-access")
   public void free(long addr) {
     if (this.validateMemoryWithFill) {
-      ObjectChunk.fill(addr);
+      OffHeapStoredObject.fill(addr);
     }
     
     free(addr, true);
   }
 
   private void free(long addr, boolean updateStats) {
-    int cSize = ObjectChunk.getSize(addr);
+    int cSize = OffHeapStoredObject.getSize(addr);
     if (updateStats) {
       OffHeapMemoryStats stats = this.ma.getStats();
       stats.incObjects(-1);
@@ -703,8 +703,8 @@ public class FreeListManager {
   private void freeTiny(long addr, int cSize) {
     basicFree(addr, getNearestTinyMultiple(cSize), this.tinyFreeLists);
   }
-  private void basicFree(long addr, int idx, AtomicReferenceArray<SyncChunkStack> freeLists) {
-    SyncChunkStack clq = freeLists.get(idx);
+  private void basicFree(long addr, int idx, AtomicReferenceArray<OffHeapStoredObjectAddressStack> freeLists) {
+    OffHeapStoredObjectAddressStack clq = freeLists.get(idx);
     if (clq != null) {
       clq.offer(addr);
     } else {
@@ -719,12 +719,12 @@ public class FreeListManager {
   /**
    * Tests override this method to simulate concurrent modification
    */
-  protected SyncChunkStack createFreeListForEmptySlot(AtomicReferenceArray<SyncChunkStack> freeLists, int idx) {
-    return new SyncChunkStack();
+  protected OffHeapStoredObjectAddressStack createFreeListForEmptySlot(AtomicReferenceArray<OffHeapStoredObjectAddressStack> freeLists, int idx) {
+    return new OffHeapStoredObjectAddressStack();
   }
   
   private void freeHuge(long addr, int cSize) {
-    this.hugeChunkSet.add(new ObjectChunk(addr)); // TODO make this a collection of longs
+    this.hugeChunkSet.add(new OffHeapStoredObject(addr)); // TODO make this a collection of longs
   }
 
   List<MemoryBlock> getOrderedBlocks() {
@@ -737,7 +737,7 @@ public class FreeListManager {
         new Comparator<MemoryBlock>() {
           @Override
           public int compare(MemoryBlock o1, MemoryBlock o2) {
-            return Long.valueOf(o1.getMemoryAddress()).compareTo(o2.getMemoryAddress());
+            return Long.valueOf(o1.getAddress()).compareTo(o2.getAddress());
           }
     });
     return value;
@@ -748,8 +748,8 @@ public class FreeListManager {
     }
   }
   
-  private void addBlocksFromChunks(Collection<ObjectChunk> src, List<MemoryBlock> dest) {
-    for (ObjectChunk chunk : src) {
+  private void addBlocksFromChunks(Collection<OffHeapStoredObject> src, List<MemoryBlock> dest) {
+    for (OffHeapStoredObject chunk : src) {
       dest.add(new MemoryBlockNode(this.ma, chunk));
     }
   }
@@ -768,7 +768,7 @@ public class FreeListManager {
       long addr = this.tinyFreeLists.get(i).getTopAddress();
       while (addr != 0L) {
         value.add(new MemoryBlockNode(sma, new TinyMemoryBlock(addr, i)));
-        addr = ObjectChunk.getNext(addr);
+        addr = OffHeapStoredObject.getNext(addr);
       }
     }
     return value;
@@ -780,7 +780,7 @@ public class FreeListManager {
         new Comparator<MemoryBlock>() {
           @Override
           public int compare(MemoryBlock o1, MemoryBlock o2) {
-            return Long.valueOf(o1.getMemoryAddress()).compareTo(o2.getMemoryAddress());
+            return Long.valueOf(o1.getAddress()).compareTo(o2.getAddress());
           }
     });
     return value;
@@ -803,13 +803,13 @@ public class FreeListManager {
     }
 
     @Override
-    public long getMemoryAddress() {
+    public long getAddress() {
       return address;
     }
 
     @Override
     public int getBlockSize() {
-      return ObjectChunk.getSize(address);
+      return OffHeapStoredObject.getSize(address);
     }
 
     @Override
@@ -855,14 +855,14 @@ public class FreeListManager {
     @Override
     public boolean equals(Object o) {
       if (o instanceof TinyMemoryBlock) {
-        return getMemoryAddress() == ((TinyMemoryBlock) o).getMemoryAddress();
+        return getAddress() == ((TinyMemoryBlock) o).getAddress();
       }
       return false;
     }
     
     @Override
     public int hashCode() {
-      long value = this.getMemoryAddress();
+      long value = this.getAddress();
       return (int)(value ^ (value >>> 32));
     }
   }
@@ -873,7 +873,7 @@ public class FreeListManager {
   
   void freeSlabs() {
     for (int i=0; i < slabs.length; i++) {
-      slabs[i].release();
+      slabs[i].free();
     }
   }
   /**
@@ -885,7 +885,7 @@ public class FreeListManager {
    * be used. Note that this code does not bother
    * comparing the contents of the arrays.
    */
-  boolean okToReuse(AddressableMemoryChunk[] newSlabs) {
+  boolean okToReuse(Slab[] newSlabs) {
     return newSlabs == null || newSlabs == this.slabs;
   }
   
@@ -894,7 +894,7 @@ public class FreeListManager {
   }
   int findSlab(long addr) {
     for (int i=0; i < this.slabs.length; i++) {
-      AddressableMemoryChunk slab = this.slabs[i];
+      Slab slab = this.slabs[i];
       long slabAddr = slab.getMemoryAddress();
       if (addr >= slabAddr) {
         if (addr < slabAddr + slab.getSize()) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryAllocator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryAllocator.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryAllocator.java
index 0c063ac..0f776e7 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryAllocator.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryAllocator.java
@@ -29,18 +29,30 @@ public interface MemoryAllocator {
    * @return the allocated chunk of memory.
    * @throws IllegalStateException if the heap does not have enough memory to grant the request
    */
-  public MemoryChunk allocate(int size);
+  public StoredObject allocate(int size);
   
   /**
-   * Allocates off heap memory for the given data and returns a MemoryChunk
+   * Allocates off heap memory for the given data and returns a StoredObject
    * that is backed by this allocated memory and that contains the data.
-   * @param data the bytes of the data to put in the allocated CachedDeserializable
+   * @param data the bytes of the data to put in the allocated StoredObject
    * @param isSerialized true if data contains a serialized object; false if it is an actual byte array.
    * @param isCompressed true if data is compressed; false if it is uncompressed.
    * @throws IllegalStateException if the heap does not have enough memory to grant the request
    */
   public StoredObject allocateAndInitialize(byte[] data, boolean isSerialized, boolean isCompressed);
   
+  /**
+   * Allocates off heap memory for the given data and returns a StoredObject
+   * that is backed by this allocated memory and that contains the data
+   * and keeps a reference to the original heap data.
+   * @param data the bytes of the data to put in the allocated StoredObject
+   * @param isSerialized true if data contains a serialized object; false if it is an actual byte array.
+   * @param originalHeapData the original uncompressed heap data
+   * @param isCompressed true if data is compressed; false if it is uncompressed.
+   * @throws IllegalStateException if the heap does not have enough memory to grant the request
+   */
+  public StoredObject allocateAndInitialize(byte[] data, boolean isSerialized, boolean isCompressed, byte[] originalHeapData);
+  
   public long getFreeMemory();
   
   public long getUsedMemory();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlock.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlock.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlock.java
index d8cb80a..878d06f 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlock.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlock.java
@@ -40,7 +40,7 @@ public interface MemoryBlock {
   /**
    * Returns the unsafe memory address of the first byte of this block.
    */
-  public long getMemoryAddress();
+  public long getAddress();
   
   /**
    * Returns the size of this memory block in bytes.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNode.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNode.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNode.java
index b41d429..6e2414f 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNode.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryBlockNode.java
@@ -37,8 +37,8 @@ public class MemoryBlockNode implements MemoryBlock {
     return this.block.getState();
   }
   @Override
-  public long getMemoryAddress() {
-    return this.block.getMemoryAddress();
+  public long getAddress() {
+    return this.block.getAddress();
   }
   @Override
   public int getBlockSize() {
@@ -49,7 +49,7 @@ public class MemoryBlockNode implements MemoryBlock {
     return this.ma.getMemoryInspector().getBlockAfter(this);
   }
   public int getSlabId() {
-    return this.ma.findSlab(getMemoryAddress());
+    return this.ma.findSlab(getAddress());
   }
   @Override
   public int getFreeListId() {
@@ -65,15 +65,15 @@ public class MemoryBlockNode implements MemoryBlock {
     if (!isSerialized()) {
       // byte array
       if (isCompressed()) {
-        return "compressed byte[" + ((ObjectChunk)this.block).getDataSize() + "]";
+        return "compressed byte[" + ((OffHeapStoredObject)this.block).getDataSize() + "]";
       } else {
-        return "byte[" + ((ObjectChunk)this.block).getDataSize() + "]";
+        return "byte[" + ((OffHeapStoredObject)this.block).getDataSize() + "]";
       }
     } else if (isCompressed()) {
-      return "compressed object of size " + ((ObjectChunk)this.block).getDataSize();
+      return "compressed object of size " + ((OffHeapStoredObject)this.block).getDataSize();
     }
     //Object obj = EntryEventImpl.deserialize(((Chunk)this.block).getRawBytes());
-    byte[] bytes = ((ObjectChunk)this.block).getRawBytes();
+    byte[] bytes = ((OffHeapStoredObject)this.block).getRawBytes();
     return DataType.getDataType(bytes);
   }
   public boolean isSerialized() {
@@ -88,14 +88,14 @@ public class MemoryBlockNode implements MemoryBlock {
     if (dataType == null || dataType.equals("N/A")) {
       return null;
     } else if (isCompressed()) {
-      return ((ObjectChunk)this.block).getCompressedBytes();
+      return ((OffHeapStoredObject)this.block).getCompressedBytes();
     } else if (!isSerialized()) {
       // byte array
       //return "byte[" + ((Chunk)this.block).getDataSize() + "]";
-      return ((ObjectChunk)this.block).getRawBytes();
+      return ((OffHeapStoredObject)this.block).getRawBytes();
     } else {
       try {
-        byte[] bytes = ((ObjectChunk)this.block).getRawBytes();
+        byte[] bytes = ((OffHeapStoredObject)this.block).getRawBytes();
         return DataSerializer.readObject(DataType.getDataInput(bytes));
       } catch (IOException e) {
         e.printStackTrace();
@@ -113,7 +113,7 @@ public class MemoryBlockNode implements MemoryBlock {
   public String toString() {
     final StringBuilder sb = new StringBuilder(MemoryBlock.class.getSimpleName());
     sb.append("{");
-    sb.append("MemoryAddress=").append(getMemoryAddress());
+    sb.append("MemoryAddress=").append(getAddress());
     sb.append(", State=").append(getState());
     sb.append(", BlockSize=").append(getBlockSize());
     sb.append(", SlabId=").append(getSlabId());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunk.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunk.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunk.java
deleted file mode 100644
index 012fbe5..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunk.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * Represents a chunk of allocated memory that is not on the heap.
- * This interface provides methods that let you read and write to the chunk.
- * 
- * @author darrel
- * @since 9.0
- */
-public interface MemoryChunk extends Releasable {
-  
-  /**
-   * Returns the size of this memory chunk in bytes.
-   */
-  public int getSize();
-  
-  public byte readByte(int offset);
-  public void writeByte(int offset, byte value);
-  
-  public void readBytes(int offset, byte[] bytes);
-  public void writeBytes(int offset, byte[] bytes);
-  public void readBytes(int offset, byte[] bytes, int bytesOffset, int size);
-  public void writeBytes(int offset, byte[] bytes, int bytesOffset, int size);
-  
-  /**
-   * Read the bytes in this range [src..src+size]
-   * and write them to the range that starts at dst.
-   * The number of bytes copied is size.
-   */
-  public void copyBytes(int src, int dst, int size);
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunkWithRefCount.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunkWithRefCount.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunkWithRefCount.java
deleted file mode 100644
index e3ba6ab..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/MemoryChunkWithRefCount.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-/**
- * Adds a reference count to the basic MemoryChunk.
- * Also an Object can be stored in one of these.
- * To increment the count call {@link #retain()}.
- * To decrement the count call {@link #release()}.
- * 
- * @author darrel
- * @since 9.0
- */
-public interface MemoryChunkWithRefCount extends MemoryChunk, StoredObject {
-
-  /**
-   * Returns the number of users of this memory.
-   */
-  public int getRefCount();
-}


[24/45] incubator-geode git commit: GEODE-1055 Remove unused/dead code from PartitionedRegionQueryEvaluator

Posted by kl...@apache.org.
GEODE-1055 Remove unused/dead code from PartitionedRegionQueryEvaluator


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f486b700
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f486b700
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f486b700

Branch: refs/heads/feature/GEODE-1050
Commit: f486b700c489dd933b98be4be398143ebed794c1
Parents: b8d4db2
Author: Jason Huynh <hu...@gmail.com>
Authored: Thu Jan 21 16:35:15 2016 -0800
Committer: Jason Huynh <hu...@gmail.com>
Committed: Thu Mar 10 11:55:22 2016 -0800

----------------------------------------------------------------------
 .../cache/PartitionedRegionQueryEvaluator.java  | 391 +------------------
 1 file changed, 6 insertions(+), 385 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f486b700/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionQueryEvaluator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionQueryEvaluator.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionQueryEvaluator.java
index db40af3..1d6cf0e 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionQueryEvaluator.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionQueryEvaluator.java
@@ -26,7 +26,6 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -39,7 +38,6 @@ import java.util.concurrent.LinkedBlockingQueue;
 import org.apache.logging.log4j.Logger;
 
 import com.gemstone.gemfire.CopyHelper;
-import com.gemstone.gemfire.InternalGemFireError;
 import com.gemstone.gemfire.SystemFailure;
 import com.gemstone.gemfire.cache.query.QueryException;
 import com.gemstone.gemfire.cache.query.QueryExecutionLowMemoryException;
@@ -47,12 +45,6 @@ import com.gemstone.gemfire.cache.query.QueryInvocationTargetException;
 import com.gemstone.gemfire.cache.query.SelectResults;
 import com.gemstone.gemfire.cache.query.Struct;
 import com.gemstone.gemfire.cache.query.internal.CompiledGroupBySelect;
-import com.gemstone.gemfire.cache.query.internal.CompiledID;
-import com.gemstone.gemfire.cache.query.internal.CompiledIndexOperation;
-import com.gemstone.gemfire.cache.query.internal.CompiledIteratorDef;
-import com.gemstone.gemfire.cache.query.internal.CompiledLiteral;
-import com.gemstone.gemfire.cache.query.internal.CompiledOperation;
-import com.gemstone.gemfire.cache.query.internal.CompiledPath;
 import com.gemstone.gemfire.cache.query.internal.CompiledSelect;
 import com.gemstone.gemfire.cache.query.internal.CompiledSortCriterion;
 import com.gemstone.gemfire.cache.query.internal.CompiledValue;
@@ -60,23 +52,16 @@ import com.gemstone.gemfire.cache.query.internal.CumulativeNonDistinctResults;
 import com.gemstone.gemfire.cache.query.internal.DefaultQuery;
 import com.gemstone.gemfire.cache.query.internal.DefaultQueryService;
 import com.gemstone.gemfire.cache.query.internal.ExecutionContext;
-import com.gemstone.gemfire.cache.query.internal.CumulativeNonDistinctResults.Metadata;
 import com.gemstone.gemfire.cache.query.internal.IndexTrackingQueryObserver.IndexInfo;
 import com.gemstone.gemfire.cache.query.internal.NWayMergeResults;
 import com.gemstone.gemfire.cache.query.internal.OrderByComparator;
 import com.gemstone.gemfire.cache.query.internal.PRQueryTraceInfo;
 import com.gemstone.gemfire.cache.query.internal.QueryExecutionContext;
 import com.gemstone.gemfire.cache.query.internal.QueryMonitor;
-import com.gemstone.gemfire.cache.query.internal.ResultsBag;
 import com.gemstone.gemfire.cache.query.internal.ResultsSet;
-import com.gemstone.gemfire.cache.query.internal.RuntimeIterator;
 import com.gemstone.gemfire.cache.query.internal.SortedResultsBag;
 import com.gemstone.gemfire.cache.query.internal.SortedStructBag;
-import com.gemstone.gemfire.cache.query.internal.StructBag;
-import com.gemstone.gemfire.cache.query.internal.StructImpl;
 import com.gemstone.gemfire.cache.query.internal.StructSet;
-import com.gemstone.gemfire.cache.query.internal.parse.OQLLexerTokenTypes;
-import com.gemstone.gemfire.cache.query.internal.types.StructTypeImpl;
 import com.gemstone.gemfire.cache.query.internal.utils.PDXUtils;
 import com.gemstone.gemfire.cache.query.types.ObjectType;
 import com.gemstone.gemfire.cache.query.types.StructType;
@@ -93,8 +78,6 @@ import com.gemstone.gemfire.internal.cache.partitioned.QueryMessage;
 import com.gemstone.gemfire.internal.cache.partitioned.StreamingPartitionOperation;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.pdx.PdxInstance;
-import com.gemstone.gemfire.pdx.internal.PdxString;
 
 /**
  * This class sends the query on various <code>PartitionedRegion</code> data
@@ -109,41 +92,8 @@ import com.gemstone.gemfire.pdx.internal.PdxString;
 public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
 {
   private static final Logger logger = LogService.getLogger();
-  
-  /**
-   * @author Mitch Thomas
-   * An ArraList which can be tainted
-   * @since 6.0
-   */
-  public static class TaintableArrayList extends ArrayList {
-    private boolean isPoison = false;
-    public synchronized void taint() {
-      this.isPoison = true;
-      super.clear();
-    }
-    public boolean add(Object arg0) {
-      synchronized(this) {
-        if (this.isPoison) {
-          return false;
-        } else {
-          return super.add(arg0);
-        }
-      }
-    }
-    public synchronized boolean isConsumable() {
-      return !this.isPoison && size() > 0;
-    }
-    public synchronized boolean isTainted() {
-      return this.isPoison;
-    }
-    
-    public synchronized void untaint() {
-      this.isPoison = false;
-    }
-  }
-
   /**
-   * An ArraList which might be unconsumable.
+   * An ArrayList which might be unconsumable.
    * @since 6.6.2
    * @author shobhit
    */
@@ -221,22 +171,6 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
   protected DistributionMessage createRequestMessage(InternalDistributedMember recipient, ReplyProcessor21 processor, List bucketIds) {
     return new QueryMessage(recipient, this.pr.getPRId(), processor, this.query, this.parameters, bucketIds);
   }
-  
- 
-  @Override
-  public Set<InternalDistributedMember> getPartitionedDataFrom(Set recipients)
-   throws com.gemstone.gemfire.cache.TimeoutException, InterruptedException, QueryException, ForceReattemptException {
-     if (Thread.interrupted()) throw new InterruptedException();
-     if (recipients.isEmpty())
-       return Collections.emptySet();
-     
-     StreamingQueryPartitionResponse processor = new StreamingQueryPartitionResponse(this.sys, recipients);
-     DistributionMessage m = createRequestMessage(recipients, processor);
-     this.sys.getDistributionManager().putOutgoing(m);
-     // should we allow this to timeout?
-     Set<InternalDistributedMember> failedMembers = processor.waitForCacheOrQueryException();
-     return failedMembers;
-  }
 
   
   /**
@@ -311,23 +245,7 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
         ((MemberResultsList) results).setLastChunkReceived(true);
       }
     }
-    
-    //this.resultsPerMember.putIfAbsent(sender, objects);
-    /*
-    boolean toContinue = true;
-    for (Iterator itr = objects.iterator(); itr.hasNext();) {
-      final Object o = itr.next();
-      if (o instanceof PRQueryProcessor.EndOfBucket) {
-        int bucketId = ((PRQueryProcessor.EndOfBucket)o).getBucketId();
-        synchronized (this.successfulBuckets) {
-          this.successfulBuckets.add(bucketId);
-        }
-      }
-      else {
-        saveDataForMember(o, sender);
-      }
-    }
-    */
+
     return true;
   }
 
@@ -559,7 +477,7 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
           }
           break;
         }
-        Map b2n = buildNodeToBucketMapForBuckets(caclulateRetryBuckets());
+        Map b2n = buildNodeToBucketMapForBuckets(calculateRetryBuckets());
         if (th != null) {
           th.hook(2);
         }
@@ -576,39 +494,15 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
         th.hook(3);
       }
     }
-    // the failed buckets are those in this.bucketsToQuery that are
-    // not present in this.successfulBuckets
-    /*
-    synchronized (this.successfulBuckets) {
-      this.bucketsToQuery.removeAll(this.successfulBuckets.toArray());
-      this.successfulBuckets.clear();
-    }
-    
-    */
+
     if (needsRetry) {
       String msg = "Failed to query all the partitioned region " +
         "dataset (buckets) after " + retry + " attempts.";
       
       if (isDebugEnabled) {
-        logger.debug("{} Unable to query some of the buckets from the set :{}", msg, this.caclulateRetryBuckets());
+        logger.debug("{} Unable to query some of the buckets from the set :{}", msg, this.calculateRetryBuckets());
       }
       throw new QueryException(msg);
-
-      /*
-      if (anyOfTheseBucketsHasStorage(this.bucketsToQuery)) {
-        if (retry >= MAX_PR_QUERY_RETRIES) {
-          String msg = "Query failed to get all results after " + retry + " attempts";
-          throw new QueryException(msg);
-        } else {
-          failMissingBuckets();
-        }
-      } else {
-        String msg = "Data loss detected during query "
-          + this.query.getQueryString()
-          + " subsequent query results should be suspect.";
-        throw new QueryException(msg);
-      }
-      */
     }
 
     return addResultsToResultSet();
@@ -629,44 +523,8 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
       }
     }
   }
-
-  private boolean anyOfTheseBucketsHasStorage(Set<Integer> failedBuckets) {
-    boolean haveStorage = false;
-    for (Integer bid : failedBuckets) {
-      if (this.pr.getRegionAdvisor().isStorageAssignedForBucket(bid)) {
-        Set ownrs = this.pr.getRegionAdvisor().getBucketOwners(bid);
-        for (Iterator boi = ownrs.iterator(); boi.hasNext(); ) {
-          InternalDistributedMember mem = (InternalDistributedMember)boi.next();
-          TaintableArrayList tal = (TaintableArrayList)this.resultsPerMember.get(mem);
-          if (tal == null || !tal.isTainted()) {
-            haveStorage = true;
-          }
-        }
-      }
-    }
-    return haveStorage;
-    
-    /*
-    boolean haveStorage = false;
-    for (Iterator i = failedBuckets.iterator(); i.hasNext(); ) {
-      final Integer bid = i.next();
-      if (this.pr.getRegionAdvisor().isStorageAssignedForBucket(bid)) {
-        Set ownrs = this.pr.getRegionAdvisor().getBucketOwners(bid);
-        for (Iterator boi = ownrs.iterator(); boi.hasNext(); ) {
-          InternalDistributedMember mem = (InternalDistributedMember)boi.next();
-          TaintableArrayList tal = (TaintableArrayList)this.resultsPerMember.get(mem);
-          if (tal == null || !tal.isTainted()) {
-            haveStorage = true;
-          }
-        }
-      }
-    }
-    return haveStorage;
-    */
-  }
   
-  
-  private Set<Integer> caclulateRetryBuckets() {
+  private Set<Integer> calculateRetryBuckets() {
     Iterator<Map.Entry<InternalDistributedMember,List<Integer>>> memberToBucketList = node2bucketIds.entrySet().iterator();
     final HashSet<Integer> retryBuckets = new HashSet<Integer>();
     while (memberToBucketList.hasNext()) {
@@ -955,74 +813,6 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
     
   }
 
-  //returns attribute with escape quotes #51085 and #51886
-  private String checkReservedKeyword(String attr) {
-    if (attr != null && attr.length() > 0 && attr.contains(".")) {
-      String[] splits = attr.split("[.]");
-      StringBuffer sb = new StringBuffer();
-      for (int i = 0; i < splits.length; i++) {
-        sb.append(checkReservedKeyword(splits[i]) + ".");
-      } 
-      
-      if (sb.length() <= 1) {
-        attr = sb.toString(); 
-      } 
-      else {
-        attr = sb.substring(0, sb.length() - 1);
-      }
-    }
-    else if(DefaultQuery.reservedKeywords.contains(attr.toLowerCase())) {
-      attr = "\"" + attr + "\"";
-    }
-    return attr;
-  }
-
-  /**
-   * This returns the query clause as represented in the application query.
-   * E.g.: returns p.status, p.getStatus() as represented by passed compiledValue.
-   */
-  private String getQueryAttributes(CompiledValue cv, StringBuffer fromPath) throws QueryException {
-    // field with multiple level like p.pos.secId
-    String clause = "";
-    if (cv.getType() == OQLLexerTokenTypes.Identifier)  {
-      // It will be p.pos.secId
-      clause = ((CompiledID)cv).getId() + clause;
-    } else {
-      do {
-        if (cv.getType() == CompiledPath.PATH || cv.getType() == OQLLexerTokenTypes.TOK_LBRACK) {
-          if (cv.getType() == OQLLexerTokenTypes.TOK_LBRACK) {
-            CompiledIndexOperation cio = (CompiledIndexOperation)cv;
-            CompiledLiteral cl = (CompiledLiteral)cio.getExpression();
-            StringBuffer sb = new StringBuffer();
-            cl.generateCanonicalizedExpression(sb, null);
-            cv = ((CompiledIndexOperation)cv).getReceiver();
-            if (sb.length() > 0) {
-              clause = "[" + sb.toString() + "]" + clause;
-            }
-          }
-          clause = ("." + ((CompiledPath)cv).getTailID() + clause);
-        } else if (cv.getType() == OQLLexerTokenTypes.METHOD_INV) {
-          // Function call.
-          clause = "." + ((CompiledOperation)cv).getMethodName() + "()" + clause;
-        } else {
-          throw new QueryException("Failed to evaluate order by attributes, found unsupported type  " + cv.getType() + 
-          " Unable to apply order-by on the partition region cumulative results.");
-        }
-
-        cv = cv.getReceiver();
-      } while (!(cv.getType() == OQLLexerTokenTypes.Identifier));
-
-      if (cv.getType() == OQLLexerTokenTypes.Identifier) {
-        clause = ((CompiledID)cv).getId() + clause;
-        // Append region iterator alias. p
-        if (fromPath != null) {
-          fromPath.append(((CompiledID)cv).getId());
-        }
-      }      
-    }
-    return clause;
-  }
-
   /**
    * Generates a map with key as PR node and value as the list as a subset of
    * the bucketIds hosted by the node.
@@ -1081,20 +871,12 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
     //Put the failed members on the end of the list.
     if(failedMembers != null && !failedMembers.isEmpty()) {
       allNodes.removeAll(failedMembers);
-      //Collections.shuffle(allNodes, PartitionedRegion.rand);
       allNodes.addAll(failedMembers);
     }
     
     for (Iterator dsItr = allNodes.iterator(); dsItr.hasNext() && (bucketIds.size() < totalBucketsToQuery); ) {
       InternalDistributedMember nd = (InternalDistributedMember)dsItr.next();
       
-      /*
-      if(taintedMembers.contains(nd)) {
-        //clear the tainted state
-        resultsPerMember.get(nd).untaint();
-      }
-      */
-      
       final List<Integer> buckets = new ArrayList<Integer>();
       for (Integer bid : bucketIdsToConsider) {
         if (!bucketIds.contains(bid)) {
@@ -1141,14 +923,8 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
     if (this.pr.getDataStore() != null) {
       this.pr.getDataStore().invokeBucketReadHook();
       final InternalDistributedMember me = this.pr.getMyId();
-      //Create PRQueryResultCollector here.
-      //RQueryResultCollector resultCollector = new PRQueryResultCollector();
 
       List<Integer> bucketList = this.node2bucketIds.get(me);
-      //try {
-        
-        //this.pr.getDataStore().queryLocalNode(this.query, this.parameters,
-        //    bucketList, resultCollector);
       try {
         PRQueryProcessor qp = new PRQueryProcessor(this.pr, query, parameters, bucketList);
         MemberResultsList resultCollector = new MemberResultsList();
@@ -1208,167 +984,12 @@ public class PartitionedRegionQueryEvaluator extends StreamingPartitionOperation
         }
         return true;
       } 
-        /*
-        ExecutionContext context = new ExecutionContext(parameters, this.pr.getCache());
-        context.setBucketList(bucketList);
-        try {
-          SelectResults results = (SelectResults)this.query.executeUsingContext(context);
-          addToResultCollector(results, resultCollector, me);
-        } catch (BucketMovedException bme) {
-          return true;
-        }
-        
-        //this.successfulBuckets.addAll(context.getSuccessfulBuckets());
-        for (Object o: context.getBucketList()) {
-          Integer bId = (Integer)o;
-          this.successfulBuckets.add(bId.intValue());
-        }
-        
-      /*
-      } catch (ForceReattemptException retryRequired) {
-        return true;
-      }
-      */
-      /*
-      int tokenCount = 0;
-      final int numBuckets = bucketList.size();
-      // finished when we get the nth END_OF_STREAM token, where n is the number of buckets
-      boolean toContinue = true;
-      Object o = null;
-      while (tokenCount < numBuckets) {
-        o = resultCollector.get();
-        if (o instanceof PRQueryProcessor.EndOfBucket) {
-          int bucketId = ((PRQueryProcessor.EndOfBucket)o).getBucketId();
-          synchronized (this.successfulBuckets) {
-            this.successfulBuckets.add(bucketId);
-          }
-          tokenCount++;
-        } else {
-          if (o == DefaultQuery.NULL_RESULT) {
-            o = null;
-          }
-          saveDataForMember(o, me);
-        }
-      }
-      Assert.assertTrue(resultCollector.isEmpty());
-				*/
     }
     return false;
   }
-  
-		/*
-  private void saveDataForMember(final Object data, final InternalDistributedMember member) {
-    TaintableArrayList existing = this.resultsPerMember.get(member);
-    if (existing == null) {
-      synchronized (member) {
-        existing = new TaintableArrayList();
-        this.resultsPerMember.putIfAbsent(member, existing);
-      }
-    }
-    existing.add(data);
-  }
-  */
 
   protected void memberStreamCorrupted(InternalDistributedMember sender) {
     this.resultsPerMember.remove(sender);
-    /*
-    final TaintableArrayList tainted = new TaintableArrayList();
-    tainted.taint();
-    TaintableArrayList existing = 
-      (TaintableArrayList)this.resultsPerMember.putIfAbsent(sender, tainted);
-    if (existing != null) {
-      existing.taint();
-    }
-
-    ArrayList bucketIds = (ArrayList)this.node2bucketIds.get(sender);
-    if (bucketIds != null) {
-      ArrayList removedBucketIds = null;
-      for (Iterator i = bucketIds.iterator(); i.hasNext(); ) {
-        Integer bid = (Integer)i.next();
-        synchronized(this.successfulBuckets) {
-          if (this.successfulBuckets.remove(bid.intValue())) {
-            if (removedBucketIds == null) {
-              removedBucketIds = new ArrayList();
-            }
-            removedBucketIds.add(bid);
-          }
-        }
-      }
-
-    }
-    */
-  }
-
-  // @todo need to throw a better exception than QueryException
-  /**
-   * Fail due to not getting all the data back for all the buckets,
-   * reporting which buckets failed on which nodes.
-   *
-   * @throws QueryException always throws
-   * since QueryException should be abstract
-   */
-  private void failMissingBuckets() throws QueryException {
-    // convert to Map of nodes to bucket ids for error message
-    Map n2b = new HashMap();
-    for (Integer bId : this.bucketsToQuery) {
-      InternalDistributedMember node = findNodeForBucket(bId);
-      List listOfInts = (List)n2b.get(node);
-      if (listOfInts == null) {
-        listOfInts = new ArrayList<Integer>();
-        n2b.put(node, listOfInts);
-      }
-      listOfInts.add(bId);
-    }
-    
-    /*
-    Iterator = this.bucketsToQuery.iterator();
-    int sz = intArray.length;
-    Map n2b = new HashMap();
-    for (int i = 0; i < sz; i++) {
-      Integer bucketId = Integer.valueOf(intArray[i]);
-      InternalDistributedMember node = findNodeForBucket(bucketId);
-      List listOfInts = (List)n2b.get(node);
-      if (listOfInts == null) {
-        listOfInts = new ArrayList();
-        n2b.put(node, listOfInts);
-      }
-      listOfInts.add(bucketId);
-    }
-    */
-    
-    // One last check, after all else is said and done: 
-    // if the system is closing, don't fail the query, but
-    // generate a much more serious error...
-    this.pr.getCancelCriterion().checkCancelInProgress(null);
-    
-    // the failure
-    String msg = "Query failed; unable to get results from the following node/buckets: "
-    + n2b;
-
-    logger.fatal(msg);
-    throw new QueryException( // @todo what is a better exception to throw here?
-        msg);
-    
-    /* alternative strategy: re-query
-    queryBuckets();
-    */
-    
-  }
-  
-  private InternalDistributedMember findNodeForBucket(Integer bucketId) {
-    for (Iterator<Map.Entry<InternalDistributedMember,List<Integer>>> itr = this.node2bucketIds.entrySet().iterator(); itr.hasNext(); ) {
-      Map.Entry<InternalDistributedMember,List<Integer>> entry = itr.next();
-      List<Integer> blist = entry.getValue();
-      for (Iterator<Integer> itr2 = blist.iterator(); itr2.hasNext(); ) {
-        Integer bid = itr2.next();
-        if (bid.equals(bucketId)) {
-          return (InternalDistributedMember)entry.getKey();
-        }
-      }
-    }
-    String msg = "Unable to get node for bucket id " + bucketId + " node to bucket map is " + this.node2bucketIds;
-    logger.fatal(msg);
-    throw new InternalGemFireError(msg);
   }
 
   /**


[02/45] incubator-geode git commit: GEODE-1043: Changing modules-assembly dist target to depend on assemble

Posted by kl...@apache.org.
GEODE-1043: Changing modules-assembly dist target to depend on assemble

The geode-modules-assembly was causing all of the module tests to get
run when running installDist. This can slow down people that are just
trying to install the product without running tests, or trying to write
tests in the geode-assembly project.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8d7a00ee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8d7a00ee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8d7a00ee

Branch: refs/heads/feature/GEODE-1050
Commit: 8d7a00ee4730be009b0e2cd5dfb8b7c907ae080f
Parents: c9f1e04
Author: Dan Smith <up...@apache.org>
Authored: Thu Mar 3 14:03:42 2016 -0800
Committer: Dan Smith <up...@apache.org>
Committed: Tue Mar 8 11:40:14 2016 -0800

----------------------------------------------------------------------
 extensions/geode-modules-assembly/build.gradle | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8d7a00ee/extensions/geode-modules-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/geode-modules-assembly/build.gradle b/extensions/geode-modules-assembly/build.gradle
index 381375b..fe01717 100644
--- a/extensions/geode-modules-assembly/build.gradle
+++ b/extensions/geode-modules-assembly/build.gradle
@@ -165,7 +165,7 @@ def configureTcServer30Assembly = {
   }
 }
 
-task distTomcat(type: Zip, dependsOn: ':extensions/geode-modules:build') {
+task distTomcat(type: Zip, dependsOn: ':extensions/geode-modules:assemble') {
   archiveName = "Apache_Geode_Modules-${version}-Tomcat.zip"
 
   // All client-server files
@@ -187,7 +187,7 @@ task distTomcat(type: Zip, dependsOn: ':extensions/geode-modules:build') {
   }
 }
 
-task distHibernate(type: Zip, dependsOn: ':extensions/geode-modules-hibernate:build') {
+task distHibernate(type: Zip, dependsOn: ':extensions/geode-modules-hibernate:assemble') {
   archiveName = "Apache_Geode_Modules-${version}-Hibernate.zip"
 
   into('lib') {
@@ -196,7 +196,7 @@ task distHibernate(type: Zip, dependsOn: ':extensions/geode-modules-hibernate:bu
   }
 }
 
-task distAppServer(type: Zip, dependsOn: ':extensions/geode-modules-session:build') {
+task distAppServer(type: Zip, dependsOn: ':extensions/geode-modules-session:assemble') {
   archiveName = "Apache_Geode_Modules-${version}-AppServer.zip"
 
   into('lib') {
@@ -225,11 +225,11 @@ task distAppServer(type: Zip, dependsOn: ':extensions/geode-modules-session:buil
   }
 }
 
-task distTcServer(type: Zip, dependsOn: [':extensions/geode-modules:build', ':extensions/geode-modules-tomcat7:build']) {
+task distTcServer(type: Zip, dependsOn: [':extensions/geode-modules:assemble', ':extensions/geode-modules-tomcat7:assemble']) {
   configure(configureTcServerAssembly)
 }
 
-task distTcServer30(type: Zip, dependsOn: [':extensions/geode-modules:build', ':extensions/geode-modules-tomcat7:build']) {
+task distTcServer30(type: Zip, dependsOn: [':extensions/geode-modules:assemble', ':extensions/geode-modules-tomcat7:assemble']) {
   configure(configureTcServerAssembly)
   configure(configureTcServer30Assembly)
 }


[44/45] incubator-geode git commit: GEODE-1097 allow Lambda invocations to be named so that they show up in test logs

Posted by kl...@apache.org.
GEODE-1097 allow Lambda invocations to be named so that they show up in test logs

This adds variants of VM.invoke() and VM.invokeAsync() that take a String name
for the invocation that will be logged during dunit testing.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/22ab2706
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/22ab2706
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/22ab2706

Branch: refs/heads/feature/GEODE-1050
Commit: 22ab27067c74eae5b2af799d6453dad461f98eec
Parents: ce8d087
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Tue Mar 15 10:58:06 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Mar 15 10:59:17 2016 -0700

----------------------------------------------------------------------
 .../cache30/ClientMembershipDUnitTest.java      | 14 +++--
 .../gemfire/test/dunit/NamedCallable.java       | 26 +++++++++
 .../gemfire/test/dunit/NamedRunnable.java       | 26 +++++++++
 .../com/gemstone/gemfire/test/dunit/VM.java     | 61 ++++++++++++++++++++
 .../test/dunit/tests/BasicDUnitTest.java        | 24 ++++++++
 5 files changed, 146 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index d4678ca..19ce28d 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@ -804,10 +804,11 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
     });
     
     // gather details for later creation of ConnectionPool...
-    ports[0] = vm0.invoke(() -> ClientMembershipDUnitTest.getTestClientMembershipEventsInClient_port());
+    ports[0] = vm0.invoke("getTestClientMembershipEventsInClient_port",
+        () -> ClientMembershipDUnitTest.getTestClientMembershipEventsInClient_port());
     assertTrue(ports[0] != 0);
 
-    DistributedMember serverMember = (DistributedMember) vm0.invoke(() -> ClientMembershipDUnitTest.getDistributedMember());
+    DistributedMember serverMember = (DistributedMember) vm0.invoke("get distributed member", () -> ClientMembershipDUnitTest.getDistributedMember());
 
     String serverMemberId = serverMember.toString();
 
@@ -1440,7 +1441,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
             getDistributedMember());
         }
       });
-      ports[whichVM] = vm.invoke(() -> ClientMembershipDUnitTest.getTestGetConnectedServers_port());
+      ports[whichVM] = vm.invoke("getTestGetConnectedServers_port",
+          () -> ClientMembershipDUnitTest.getTestGetConnectedServers_port());
       assertTrue(ports[whichVM] != 0);
     }
     
@@ -1555,7 +1557,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
             getMemberId());
         }
       });
-      ports[whichVM] = vm.invoke(() -> ClientMembershipDUnitTest.getTestGetNotifiedClients_port());
+      ports[whichVM] = vm.invoke("getTestGetNotifiedClients_port",
+          () -> ClientMembershipDUnitTest.getTestGetNotifiedClients_port());
       assertTrue(ports[whichVM] != 0);
     }
     
@@ -1599,7 +1602,8 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
           }
         }
       });
-      clientCounts[whichVM] = vm.invoke(() -> ClientMembershipDUnitTest.getTestGetNotifiedClients_clientCount());
+      clientCounts[whichVM] = vm.invoke("getTestGetNotifiedClients_clientCount",
+          () -> ClientMembershipDUnitTest.getTestGetNotifiedClients_clientCount());
     }
     
     // only one server should have a notifier for this client...

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
new file mode 100755
index 0000000..66a3f38
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedCallable.java
@@ -0,0 +1,26 @@
+package com.gemstone.gemfire.test.dunit;
+
+
+public class NamedCallable<T> implements SerializableCallableIF<T> {
+
+  private static final long serialVersionUID = -4417299628656632541L;
+
+  String name;
+  SerializableCallableIF<T> delegate;
+  
+  public NamedCallable(String name, SerializableCallableIF<T> delegate) {
+    this.name = name;
+    this.delegate = delegate;
+  }
+  
+  @Override
+  public T call() throws Exception {
+    return delegate.call();
+  }
+  
+  @Override
+  public String toString() {
+    return ("callable("+name+")");
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
new file mode 100755
index 0000000..8a7fe28
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/NamedRunnable.java
@@ -0,0 +1,26 @@
+package com.gemstone.gemfire.test.dunit;
+
+
+public class NamedRunnable implements SerializableRunnableIF {
+
+  private static final long serialVersionUID = -2786841298145567914L;
+
+  String name;
+  SerializableRunnableIF delegate;
+  
+  public NamedRunnable(String name, SerializableRunnableIF delegate) {
+    this.name = name;
+    this.delegate = delegate;
+  }
+  
+  @Override
+  public void run() throws Exception {
+    delegate.run();
+  }
+  
+  @Override
+  public String toString() {
+    return ("runnable("+name+")");
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
index 122aa0e..8e408dc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/VM.java
@@ -246,6 +246,37 @@ public class VM implements Serializable {
   }
   
   /**
+   * Invokes the <code>run</code> method of a {@link Runnable} in this
+   * VM.  Recall that <code>run</code> takes no arguments and has no
+   * return value.  The Runnable is wrapped in a NamedRunnable having
+   * the given name so it shows up in dunit logs.
+   *
+   * @param r
+   *        The <code>Runnable</code> to be run
+   * @param name the name of the runnable, which will be logged in dunit output
+   *
+   * @see SerializableRunnable
+   */
+  public AsyncInvocation invokeAsync(String name, SerializableRunnableIF r) {
+    NamedRunnable nr = new NamedRunnable(name, r);
+    return invokeAsync(r, "run", new Object[0]);
+  }
+  
+  /**
+   * Invokes the <code>call</code> method of a {@link Runnable} in this
+   * VM.  
+   *
+   * @param c
+   *        The <code>Callable</code> to be run
+   * @param name the name of the callable, which will be logged in dunit output
+   *
+   * @see SerializableCallable
+   */
+  public <T> AsyncInvocation<T> invokeAsync(String name, SerializableCallableIF<T> c) {
+    return invokeAsync(new NamedCallable(name, c), "call", new Object[0]);
+  }
+
+  /**
    * Invokes the <code>call</code> method of a {@link Runnable} in this
    * VM.  
    *
@@ -265,6 +296,21 @@ public class VM implements Serializable {
    *
    * @param r
    *        The <code>Runnable</code> to be run
+   * @param name the name of the runnable, which will be logged in dunit output
+   *
+   * @see SerializableRunnable
+   */
+  public void invoke(String name, SerializableRunnableIF r) {
+    invoke(new NamedRunnable(name, r), "run");
+  }
+
+  /**
+   * Invokes the <code>run</code> method of a {@link Runnable} in this
+   * VM.  Recall that <code>run</code> takes no arguments and has no
+   * return value.
+   *
+   * @param r
+   *        The <code>Runnable</code> to be run
    *
    * @see SerializableRunnable
    */
@@ -279,6 +325,21 @@ public class VM implements Serializable {
    *
    * @param c
    *        The <code>Callable</code> to be run
+   * @param name the name of the callable, which will be logged in dunit output
+   *
+   * @see SerializableCallable
+   */
+  public <T>  T invoke(String name, SerializableCallableIF<T> c) {
+    return (T) invoke(new NamedCallable(name, c), "call");
+  }
+  
+  /**
+   * Invokes the <code>run</code> method of a {@link Runnable} in this
+   * VM.  Recall that <code>run</code> takes no arguments and has no
+   * return value.
+   *
+   * @param c
+   *        The <code>Callable</code> to be run
    *
    * @see SerializableCallable
    */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/22ab2706/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
index 068e81b..195d5f4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/tests/BasicDUnitTest.java
@@ -83,6 +83,30 @@ public class BasicDUnitTest extends DistributedTestCase {
     
   }
 
+  public void testInvokeWithNamedLambda() {
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    VM vm1 = host.getVM(1);
+    
+    int vm0Num = vm0.invoke("getVMID", () -> DUnitEnv.get().getVMID());
+    int vm1Num = vm1.invoke("getVMID", () -> DUnitEnv.get().getVMID());
+    
+    assertEquals(0, vm0Num);
+    assertEquals(1, vm1Num);
+    
+  }
+  
+  public void testInvokeNamedLambdaAsync() throws Throwable {
+    Host host = Host.getHost(0);
+    VM vm0 = host.getVM(0);
+    
+    AsyncInvocation<Integer> async0 = vm0.invokeAsync("getVMID", () -> DUnitEnv.get().getVMID());
+    int vm0num = async0.getResult();
+    
+    assertEquals(0, vm0num);
+    
+  }
+
   static class BasicTestException extends RuntimeException {
     BasicTestException() {
       this("Test exception.  Please ignore.");


[38/45] incubator-geode git commit: GEODE-1084 strip copyright from jgroups configuration before parsing

Posted by kl...@apache.org.
GEODE-1084 strip copyright from jgroups configuration before parsing

Remove the copyright comment from jgroups configuration string prior
to adding settings and creating the JChannel.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/7971a774
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/7971a774
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/7971a774

Branch: refs/heads/feature/GEODE-1050
Commit: 7971a774b31a547cf4418bb6955f9a3bb1dc37ef
Parents: dc9e28a
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Mar 14 09:26:49 2016 -0700
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Mon Mar 14 09:34:50 2016 -0700

----------------------------------------------------------------------
 .../internal/membership/gms/messenger/JGroupsMessenger.java     | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7971a774/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
index 75db969..d95d8df 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessenger.java
@@ -197,6 +197,11 @@ public class JGroupsMessenger implements Messenger {
       throw new GemFireConfigException(LocalizedStrings.GroupMembershipService_AN_EXCEPTION_WAS_THROWN_WHILE_READING_JGROUPS_CONFIG.toLocalizedString(), ex);
     }
     
+    if (properties.startsWith("<!--")) {
+      int commentEnd = properties.indexOf("-->");
+      properties = properties.substring(commentEnd+3);
+    }
+    
     
     if (transport.isMcastEnabled()) {
       properties = replaceStrings(properties, "MCAST_PORT", String.valueOf(transport.getMcastId().getPort()));


[13/45] incubator-geode git commit: GEODE-1042: add junit test for the fix in processChunk()

Posted by kl...@apache.org.
GEODE-1042: add junit test for the fix in processChunk()


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/70ca9214
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/70ca9214
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/70ca9214

Branch: refs/heads/feature/GEODE-1050
Commit: 70ca9214ffede4ec56a0e80e192a52895faf7735
Parents: 6c74e5a
Author: zhouxh <gz...@pivotal.io>
Authored: Tue Mar 8 15:31:26 2016 -0800
Committer: zhouxh <gz...@pivotal.io>
Committed: Wed Mar 9 10:42:53 2016 -0800

----------------------------------------------------------------------
 .../gemfire/internal/cache/LocalRegion.java     |  2 +-
 .../cache/partitioned/FetchEntriesMessage.java  |  8 +-
 .../FetchEntriesMessageJUnitTest.java           | 93 ++++++++++++++++++++
 3 files changed, 98 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/70ca9214/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
index 966130a..830d47d 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java
@@ -556,7 +556,7 @@ public class LocalRegion extends AbstractRegion
    * <code>CompactCompositeRegionKey</code> that points to the raw row bytes and
    * so requires a handle to table schema for interpretation of those bytes.
    */
-  public final boolean keyRequiresRegionContext() {
+  public boolean keyRequiresRegionContext() {
     return this.keyRequiresRegionContext;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/70ca9214/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
index fda15c4..8360a1e 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessage.java
@@ -195,7 +195,7 @@ public final class FetchEntriesMessage extends PartitionMessage
     public FetchEntriesReplyMessage() {
     }
   
-    private FetchEntriesReplyMessage(InternalDistributedMember dest,
+    protected FetchEntriesReplyMessage(InternalDistributedMember dest,
         int processorId, int buckId, HeapDataOutputStream chunk,
         int seriesNum, int msgNum, int numSeries, boolean lastInSeries, boolean hasRVV) {
       setRecipient(dest);
@@ -455,9 +455,9 @@ public final class FetchEntriesMessage extends PartitionMessage
 
     private final PartitionedRegion pr;
 
-    private volatile RegionVersionVector returnRVV; 
-    private final HashMap<Object, Object> returnValue;
-    private final HashMap<Object, VersionTag> returnVersions = new HashMap();
+    protected volatile RegionVersionVector returnRVV; 
+    protected final HashMap<Object, Object> returnValue;
+    protected final HashMap<Object, VersionTag> returnVersions = new HashMap();
     private final Map<VersionSource,VersionSource> canonicalMembers = new ConcurrentHashMap<VersionSource,VersionSource>();
     
     /** lock used to synchronize chunk processing */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/70ca9214/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessageJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessageJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessageJUnitTest.java
new file mode 100755
index 0000000..39bb5ea
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/FetchEntriesMessageJUnitTest.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.cache.partitioned;
+
+import static org.mockito.Mockito.*;
+
+import java.io.IOException;
+
+import org.apache.logging.log4j.Logger;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.DataSerializer;
+import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.internal.HeapDataOutputStream;
+import com.gemstone.gemfire.internal.Version;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.InitialImageOperation;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+import com.gemstone.gemfire.internal.cache.partitioned.FetchEntriesMessage.FetchEntriesReplyMessage;
+import com.gemstone.gemfire.internal.cache.partitioned.FetchEntriesMessage.FetchEntriesResponse;
+import com.gemstone.gemfire.internal.cache.versions.VersionTag;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.test.fake.Fakes;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+import junit.framework.TestCase;
+
+@Category(UnitTest.class)
+public class FetchEntriesMessageJUnitTest extends TestCase {
+  protected static final Logger logger = LogService.getLogger();
+  GemFireCacheImpl cache;
+  
+  private VersionTag createVersionTag(boolean validVersionTag) throws ClassNotFoundException, IOException {
+    VersionTag tag = VersionTag.create(cache.getMyId());
+    if (validVersionTag) {
+      tag.setRegionVersion(1);
+      tag.setEntryVersion(1);
+    }
+    return tag;
+  }
+
+  private HeapDataOutputStream createDummyChunk() throws IOException, ClassNotFoundException {
+    HeapDataOutputStream mos = new HeapDataOutputStream(InitialImageOperation.CHUNK_SIZE_IN_BYTES+2048, Version.CURRENT);
+    mos.reset();
+    DataSerializer.writeObject("keyWithOutVersionTag", mos);
+    DataSerializer.writeObject("valueWithOutVersionTag", mos);
+    DataSerializer.writeObject(null /* versionTag */, mos);
+
+    DataSerializer.writeObject("keyWithVersionTag", mos);
+    DataSerializer.writeObject("valueWithVersionTag", mos);
+    
+    VersionTag tag = createVersionTag(true);
+    DataSerializer.writeObject(tag, mos);
+
+    DataSerializer.writeObject((Object)null, mos);
+    return mos;
+  }
+  
+  @Test
+  public void testProcessChunk() throws IOException, ClassNotFoundException {
+    cache = Fakes.cache();
+    PartitionedRegion pr = mock(PartitionedRegion.class);
+    InternalDistributedSystem system = cache.getDistributedSystem();
+    when(pr.keyRequiresRegionContext()).thenReturn(false);
+
+    FetchEntriesResponse response = new FetchEntriesResponse(system, pr, null, 0);
+    HeapDataOutputStream chunkStream = createDummyChunk();
+    FetchEntriesReplyMessage reply = new FetchEntriesReplyMessage(null, 0, 0, chunkStream, 0, 0, 0, false, false);
+    reply.chunk = chunkStream.toByteArray();
+    response.processChunk(reply);
+    assertNull(response.returnRVV);
+    assertEquals(2, response.returnValue.size());
+    assertTrue(response.returnValue.get("keyWithOutVersionTag").equals("valueWithOutVersionTag"));
+    assertTrue(response.returnValue.get("keyWithVersionTag").equals("valueWithVersionTag"));
+    assertNull(response.returnVersions.get("keyWithOutVersionTag"));
+    assertNotNull(response.returnVersions.get("keyWithVersionTag"));
+  }
+}


[25/45] incubator-geode git commit: GEODE-589: revoke the previous change of DistributedTestCase

Posted by kl...@apache.org.
GEODE-589: revoke the previous change of DistributedTestCase

The fix of GEODE-1052 for DistributedTestCase.java part is not necessary.
And it caused side-effect to ClientMembershipDUnitTest.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/374d2f43
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/374d2f43
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/374d2f43

Branch: refs/heads/feature/GEODE-1050
Commit: 374d2f435ef5c291ebd3c3a4573110cb1298f290
Parents: f486b70
Author: zhouxh <gz...@pivotal.io>
Authored: Wed Mar 9 15:11:19 2016 -0800
Committer: zhouxh <gz...@pivotal.io>
Committed: Thu Mar 10 14:11:38 2016 -0800

----------------------------------------------------------------------
 .../com/gemstone/gemfire/test/dunit/DistributedTestCase.java     | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/374d2f43/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
index 1203570..c7227a2 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/test/dunit/DistributedTestCase.java
@@ -241,11 +241,7 @@ public abstract class DistributedTestCase extends TestCase implements java.io.Se
    * @since 3.0
    */
   public Properties getDistributedSystemProperties() {
-    String logLevel = System.getProperty("logLevel");
     Properties props = new Properties();
-    if (logLevel != null) {
-      props.setProperty("log-level", logLevel);
-    }
     return props;
   }
 


[04/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
new file mode 100644
index 0000000..2f6b32c
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectJUnitTest.java
@@ -0,0 +1,869 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gemstone.gemfire.internal.offheap;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.LogWriter;
+import com.gemstone.gemfire.compression.Compressor;
+import com.gemstone.gemfire.internal.DSCODE;
+import com.gemstone.gemfire.internal.HeapDataOutputStream;
+import com.gemstone.gemfire.internal.Version;
+import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
+import com.gemstone.gemfire.internal.cache.CachePerfStats;
+import com.gemstone.gemfire.internal.cache.EntryEventImpl;
+import com.gemstone.gemfire.internal.cache.RegionEntryContext;
+import com.gemstone.gemfire.internal.offheap.MemoryBlock.State;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class OffHeapStoredObjectJUnitTest extends AbstractStoredObjectTestBase {
+
+  private MemoryAllocator ma;
+
+  static {
+    ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
+  }
+
+  @Before
+  public void setUp() {
+    OutOfOffHeapMemoryListener ooohml = mock(OutOfOffHeapMemoryListener.class);
+    OffHeapMemoryStats stats = mock(OffHeapMemoryStats.class);
+    LogWriter lw = mock(LogWriter.class);
+
+    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, lw, 3, OffHeapStorage.MIN_SLAB_SIZE * 3, OffHeapStorage.MIN_SLAB_SIZE);
+  }
+
+  @After
+  public void tearDown() {
+    SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+  }
+
+  @Override
+  public Object getValue() {
+    return Long.valueOf(Long.MAX_VALUE);
+  }
+
+  @Override
+  public byte[] getValueAsByteArray() {
+    return convertValueToByteArray(getValue());
+  }
+
+  private byte[] convertValueToByteArray(Object value) {
+    return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong((Long) value).array();
+  }
+
+  @Override
+  public Object convertByteArrayToObject(byte[] valueInByteArray) {
+    return ByteBuffer.wrap(valueInByteArray).getLong();
+  }
+
+  @Override
+  public Object convertSerializedByteArrayToObject(byte[] valueInSerializedByteArray) {
+    return EntryEventImpl.deserialize(valueInSerializedByteArray);
+  }
+
+  @Override
+  public OffHeapStoredObject createValueAsUnserializedStoredObject(Object value) {
+    byte[] valueInByteArray;
+    if (value instanceof Long) {
+      valueInByteArray = convertValueToByteArray(value);
+    } else {
+      valueInByteArray = (byte[]) value;
+    }
+
+    boolean isSerialized = false;
+    boolean isCompressed = false;
+
+    return createChunk(valueInByteArray, isSerialized, isCompressed);
+  }
+
+  @Override
+  public OffHeapStoredObject createValueAsSerializedStoredObject(Object value) {
+    byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
+
+    boolean isSerialized = true;
+    boolean isCompressed = false;
+
+    return createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
+  }
+
+  private OffHeapStoredObject createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(v, isSerialized, isCompressed);
+    return chunk;
+  }
+
+  @Test
+  public void chunkCanBeCreatedFromAnotherChunk() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    OffHeapStoredObject newChunk = new OffHeapStoredObject(chunk);
+
+    assertNotNull(newChunk);
+    assertThat(newChunk.getAddress()).isEqualTo(chunk.getAddress());
+
+    chunk.release();
+  }
+
+  @Test
+  public void chunkCanBeCreatedWithOnlyMemoryAddress() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    OffHeapStoredObject newChunk = new OffHeapStoredObject(chunk.getAddress());
+
+    assertNotNull(newChunk);
+    assertThat(newChunk.getAddress()).isEqualTo(chunk.getAddress());
+
+    chunk.release();
+  }
+
+  @Test
+  public void chunkSliceCanBeCreatedFromAnotherChunk() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    int position = 1;
+    int end = 2;
+
+    OffHeapStoredObject newChunk = (OffHeapStoredObject) chunk.slice(position, end);
+
+    assertNotNull(newChunk);
+    assertThat(newChunk.getClass()).isEqualTo(OffHeapStoredObjectSlice.class);
+    assertThat(newChunk.getAddress()).isEqualTo(chunk.getAddress());
+
+    chunk.release();
+  }
+
+  @Test
+  public void fillSerializedValueShouldFillWrapperWithSerializedValueIfValueIsSerialized() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    // mock the things
+    BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
+
+    byte userBits = 0;
+    byte serializedUserBits = 1;
+    chunk.fillSerializedValue(wrapper, userBits);
+
+    verify(wrapper, times(1)).setOffHeapData(chunk, serializedUserBits);
+
+    chunk.release();
+  }
+
+  @Test
+  public void fillSerializedValueShouldFillWrapperWithDeserializedValueIfValueIsNotSerialized() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    // mock the things
+    BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
+
+    byte userBits = 1;
+    chunk.fillSerializedValue(wrapper, userBits);
+
+    verify(wrapper, times(1)).setOffHeapData(chunk, userBits);
+
+    chunk.release();
+  }
+
+  @Test
+  public void getShortClassNameShouldReturnShortClassName() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.getShortClassName()).isEqualTo("OffHeapStoredObject");
+
+    chunk.release();
+  }
+
+  @Test
+  public void chunksAreEqualsOnlyByAddress() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    OffHeapStoredObject newChunk = new OffHeapStoredObject(chunk.getAddress());
+    assertThat(chunk.equals(newChunk)).isTrue();
+
+    OffHeapStoredObject chunkWithSameValue = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.equals(chunkWithSameValue)).isFalse();
+
+    Object someObject = getValue();
+    assertThat(chunk.equals(someObject)).isFalse();
+
+    chunk.release();
+    chunkWithSameValue.release();
+  }
+
+  @Test
+  public void chunksShouldBeComparedBySize() {
+    OffHeapStoredObject chunk1 = createValueAsSerializedStoredObject(getValue());
+
+    OffHeapStoredObject chunk2 = chunk1;
+    assertThat(chunk1.compareTo(chunk2)).isEqualTo(0);
+
+    OffHeapStoredObject chunkWithSameValue = createValueAsSerializedStoredObject(getValue());
+    assertThat(chunk1.compareTo(chunkWithSameValue)).isEqualTo(Long.signum(chunk1.getAddress() - chunkWithSameValue.getAddress()));
+
+    OffHeapStoredObject chunk3 = createValueAsSerializedStoredObject(Long.MAX_VALUE);
+    OffHeapStoredObject chunk4 = createValueAsSerializedStoredObject(Long.MAX_VALUE);
+
+    int newSizeForChunk3 = 2;
+    int newSizeForChunk4 = 3;
+
+    assertThat(chunk3.compareTo(chunk4)).isEqualTo(Integer.signum(newSizeForChunk3 - newSizeForChunk4));
+
+    chunk1.release();
+    chunk4.release();
+  }
+
+  @Test
+  public void setSerializedShouldSetTheSerializedBit() {
+    Object regionEntryValue = getValue();
+    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
+
+    boolean isSerialized = false;
+    boolean isCompressed = false;
+
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
+
+    int headerBeforeSerializedBitSet = AddressableMemoryManager.readIntVolatile(chunk.getAddress() + OffHeapStoredObject.REF_COUNT_OFFSET);
+
+    assertThat(chunk.isSerialized()).isFalse();
+
+    chunk.setSerialized(true); // set to true
+
+    assertThat(chunk.isSerialized()).isTrue();
+
+    int headerAfterSerializedBitSet = AddressableMemoryManager.readIntVolatile(chunk.getAddress() + OffHeapStoredObject.REF_COUNT_OFFSET);
+
+    assertThat(headerAfterSerializedBitSet).isEqualTo(headerBeforeSerializedBitSet | OffHeapStoredObject.IS_SERIALIZED_BIT);
+
+    chunk.release();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void setSerialziedShouldThrowExceptionIfChunkIsAlreadyReleased() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.release();
+    chunk.setSerialized(true);
+
+    chunk.release();
+  }
+
+  @Test
+  public void setCompressedShouldSetTheCompressedBit() {
+    Object regionEntryValue = getValue();
+    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
+
+    boolean isSerialized = false;
+    boolean isCompressed = false;
+
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
+
+    int headerBeforeCompressedBitSet = AddressableMemoryManager.readIntVolatile(chunk.getAddress() + OffHeapStoredObject.REF_COUNT_OFFSET);
+
+    assertThat(chunk.isCompressed()).isFalse();
+
+    chunk.setCompressed(true); // set to true
+
+    assertThat(chunk.isCompressed()).isTrue();
+
+    int headerAfterCompressedBitSet = AddressableMemoryManager.readIntVolatile(chunk.getAddress() + OffHeapStoredObject.REF_COUNT_OFFSET);
+
+    assertThat(headerAfterCompressedBitSet).isEqualTo(headerBeforeCompressedBitSet | OffHeapStoredObject.IS_COMPRESSED_BIT);
+
+    chunk.release();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void setCompressedShouldThrowExceptionIfChunkIsAlreadyReleased() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.release();
+    chunk.setCompressed(true);
+
+    chunk.release();
+  }
+
+  @Test
+  public void setDataSizeShouldSetTheDataSizeBits() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    int beforeSize = chunk.getDataSize();
+
+    chunk.setDataSize(2);
+
+    int afterSize = chunk.getDataSize();
+
+    assertThat(afterSize).isEqualTo(2);
+    assertThat(afterSize).isNotEqualTo(beforeSize);
+
+    chunk.release();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void setDataSizeShouldThrowExceptionIfChunkIsAlreadyReleased() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.release();
+    chunk.setDataSize(1);
+
+    chunk.release();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void initializeUseCountShouldThrowIllegalStateExceptionIfChunkIsAlreadyRetained() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.retain();
+    chunk.initializeUseCount();
+
+    chunk.release();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void initializeUseCountShouldThrowIllegalStateExceptionIfChunkIsAlreadyReleased() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.release();
+    chunk.initializeUseCount();
+
+    chunk.release();
+  }
+
+  @Test
+  public void isSerializedPdxInstanceShouldReturnTrueIfItsPDXInstance() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    byte[] serailizedValue = chunk.getSerializedValue();
+    serailizedValue[0] = DSCODE.PDX;
+    chunk.setSerializedValue(serailizedValue);
+
+    assertThat(chunk.isSerializedPdxInstance()).isTrue();
+
+    serailizedValue = chunk.getSerializedValue();
+    serailizedValue[0] = DSCODE.PDX_ENUM;
+    chunk.setSerializedValue(serailizedValue);
+
+    assertThat(chunk.isSerializedPdxInstance()).isTrue();
+
+    serailizedValue = chunk.getSerializedValue();
+    serailizedValue[0] = DSCODE.PDX_INLINE_ENUM;
+    chunk.setSerializedValue(serailizedValue);
+
+    assertThat(chunk.isSerializedPdxInstance()).isTrue();
+
+    chunk.release();
+  }
+
+  @Test
+  public void isSerializedPdxInstanceShouldReturnFalseIfItsNotPDXInstance() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    assertThat(chunk.isSerializedPdxInstance()).isFalse();
+
+    chunk.release();
+  }
+
+  @Test
+  public void checkDataEqualsByChunk() {
+    OffHeapStoredObject chunk1 = createValueAsSerializedStoredObject(getValue());
+    OffHeapStoredObject sameAsChunk1 = chunk1;
+
+    assertThat(chunk1.checkDataEquals(sameAsChunk1)).isTrue();
+
+    OffHeapStoredObject unserializedChunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk1.checkDataEquals(unserializedChunk)).isFalse();
+
+    OffHeapStoredObject chunkDifferBySize = createValueAsSerializedStoredObject(getValue());
+    chunkDifferBySize.setSize(0);
+    assertThat(chunk1.checkDataEquals(chunkDifferBySize)).isFalse();
+
+    OffHeapStoredObject chunkDifferByValue = createValueAsSerializedStoredObject(Long.MAX_VALUE - 1);
+    assertThat(chunk1.checkDataEquals(chunkDifferByValue)).isFalse();
+
+    OffHeapStoredObject newChunk1 = createValueAsSerializedStoredObject(getValue());
+    assertThat(chunk1.checkDataEquals(newChunk1)).isTrue();
+
+    chunk1.release();
+    unserializedChunk.release();
+    chunkDifferBySize.release();
+    chunkDifferByValue.release();
+    newChunk1.release();
+  }
+
+  @Test
+  public void checkDataEqualsBySerializedValue() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    assertThat(chunk.checkDataEquals(new byte[1])).isFalse();
+
+    OffHeapStoredObject chunkDifferByValue = createValueAsSerializedStoredObject(Long.MAX_VALUE - 1);
+    assertThat(chunk.checkDataEquals(chunkDifferByValue.getSerializedValue())).isFalse();
+
+    OffHeapStoredObject newChunk = createValueAsSerializedStoredObject(getValue());
+    assertThat(chunk.checkDataEquals(newChunk.getSerializedValue())).isTrue();
+
+    chunk.release();
+    chunkDifferByValue.release();
+    newChunk.release();
+  }
+
+  @Test
+  public void getDecompressedBytesShouldReturnDecompressedBytesIfCompressed() {
+    Object regionEntryValue = getValue();
+    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
+
+    boolean isSerialized = true;
+    boolean isCompressed = true;
+
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
+
+    RegionEntryContext regionContext = mock(RegionEntryContext.class);
+    CachePerfStats cacheStats = mock(CachePerfStats.class);
+    Compressor compressor = mock(Compressor.class);
+
+    long startTime = 10000L;
+
+    // mock required things
+    when(regionContext.getCompressor()).thenReturn(compressor);
+    when(compressor.decompress(regionEntryValueAsBytes)).thenReturn(regionEntryValueAsBytes);
+    when(regionContext.getCachePerfStats()).thenReturn(cacheStats);
+    when(cacheStats.startDecompression()).thenReturn(startTime);
+
+    // invoke the thing
+    byte[] bytes = chunk.getDecompressedBytes(regionContext);
+
+    // verify the thing happened
+    verify(cacheStats, atLeastOnce()).startDecompression();
+    verify(compressor, times(1)).decompress(regionEntryValueAsBytes);
+    verify(cacheStats, atLeastOnce()).endDecompression(startTime);
+
+    assertArrayEquals(regionEntryValueAsBytes, bytes);
+
+    chunk.release();
+  }
+
+  @Test
+  public void incSizeShouldIncrementSize() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    int beforeSize = chunk.getSize();
+
+    chunk.incSize(1);
+    assertThat(chunk.getSize()).isEqualTo(beforeSize + 1);
+
+    chunk.incSize(2);
+    assertThat(chunk.getSize()).isEqualTo(beforeSize + 1 + 2);
+
+    chunk.release();
+  }
+
+  @Test
+  public void readyForFreeShouldResetTheRefCount() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    int refCountBeforeFreeing = chunk.getRefCount();
+    assertThat(refCountBeforeFreeing).isEqualTo(1);
+
+    chunk.readyForFree();
+
+    int refCountAfterFreeing = chunk.getRefCount();
+    assertThat(refCountAfterFreeing).isEqualTo(0);
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void readyForAllocationShouldThrowExceptionIfAlreadyAllocated() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    // chunk is already allocated when we created it, so calling readyForAllocation should throw exception.
+    chunk.readyForAllocation();
+
+    chunk.release();
+  }
+
+  @Test
+  public void checkIsAllocatedShouldReturnIfAllocated() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    chunk.checkIsAllocated();
+
+    chunk.release();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void checkIsAllocatedShouldThrowExceptionIfNotAllocated() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    chunk.release();
+    chunk.checkIsAllocated();
+
+    chunk.release();
+  }
+
+  @Test
+  public void sendToShouldWriteSerializedValueToDataOutputIfValueIsSerialized() throws IOException {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    OffHeapStoredObject spyChunk = spy(chunk);
+
+    HeapDataOutputStream dataOutput = mock(HeapDataOutputStream.class);
+    ByteBuffer directByteBuffer = ByteBuffer.allocate(1024);
+
+    doReturn(directByteBuffer).when(spyChunk).createDirectByteBuffer();
+    doNothing().when(dataOutput).write(directByteBuffer);
+
+    spyChunk.sendTo(dataOutput);
+
+    verify(dataOutput, times(1)).write(directByteBuffer);
+
+    chunk.release();
+  }
+
+  @Test
+  public void sendToShouldWriteUnserializedValueToDataOutputIfValueIsUnserialized() throws IOException {
+    byte[] regionEntryValue = getValueAsByteArray();
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(regionEntryValue);
+
+    // writeByte is a final method and cannot be mocked, so creating a real one
+    HeapDataOutputStream dataOutput = new HeapDataOutputStream(Version.CURRENT);
+
+    chunk.sendTo(dataOutput);
+
+    byte[] actual = dataOutput.toByteArray();
+
+    byte[] expected = new byte[regionEntryValue.length + 2];
+    expected[0] = DSCODE.BYTE_ARRAY;
+    expected[1] = (byte) regionEntryValue.length;
+    System.arraycopy(regionEntryValue, 0, expected, 2, regionEntryValue.length);
+
+    assertNotNull(dataOutput);
+    assertThat(actual).isEqualTo(expected);
+
+    chunk.release();
+  }
+
+  @Test
+  public void sendAsByteArrayShouldWriteValueToDataOutput() throws IOException {
+    byte[] regionEntryValue = getValueAsByteArray();
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(regionEntryValue);
+
+    // writeByte is a final method and cannot be mocked, so creating a real one
+    HeapDataOutputStream dataOutput = new HeapDataOutputStream(Version.CURRENT);
+
+    chunk.sendAsByteArray(dataOutput);
+
+    byte[] actual = dataOutput.toByteArray();
+
+    byte[] expected = new byte[regionEntryValue.length + 1];
+    expected[0] = (byte) regionEntryValue.length;
+    System.arraycopy(regionEntryValue, 0, expected, 1, regionEntryValue.length);
+
+    assertNotNull(dataOutput);
+    assertThat(actual).isEqualTo(expected);
+
+    chunk.release();
+  }
+
+  @Test
+  public void createDirectByteBufferShouldCreateAByteBuffer() {
+    byte[] regionEntryValue = getValueAsByteArray();
+
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(regionEntryValue);
+
+    ByteBuffer buffer = chunk.createDirectByteBuffer();
+
+    byte[] actual = new byte[regionEntryValue.length];
+    buffer.get(actual);
+
+    assertArrayEquals(regionEntryValue, actual);
+
+    chunk.release();
+  }
+
+  @Test
+  public void getDirectByteBufferShouldCreateAByteBuffer() {
+    byte[] regionEntryValue = getValueAsByteArray();
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(regionEntryValue);
+
+    ByteBuffer buffer = chunk.createDirectByteBuffer();
+    long bufferAddress = AddressableMemoryManager.getDirectByteBufferAddress(buffer);
+
+    // returned address should be starting of the value (after skipping HEADER_SIZE bytes)
+    assertEquals(chunk.getAddress() + OffHeapStoredObject.HEADER_SIZE, bufferAddress);
+
+    chunk.release();
+  }
+
+  @Test(expected = AssertionError.class)
+  public void getAddressForReadingDataShouldFailIfItsOutsideOfChunk() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    chunk.getAddressForReadingData(0, chunk.getDataSize() + 1);
+
+    chunk.release();
+  }
+
+  @Test
+  public void getAddressForReadingDataShouldReturnDataAddressFromGivenOffset() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    int offset = 1;
+    long requestedAddress = chunk.getAddressForReadingData(offset, 1);
+
+    assertThat(requestedAddress).isEqualTo(chunk.getBaseDataAddress() + offset);
+
+    chunk.release();
+  }
+
+  @Test
+  public void getSizeInBytesShouldReturnSize() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    assertThat(chunk.getSizeInBytes()).isEqualTo(chunk.getSize());
+
+    chunk.release();
+  }
+
+  @Test(expected = AssertionError.class)
+  public void getAddressForReadingDataShouldFailIfOffsetIsNegative() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    chunk.getAddressForReadingData(-1, 1);
+
+    chunk.release();
+  }
+
+  @Test(expected = AssertionError.class)
+  public void getAddressForReadingDataShouldFailIfSizeIsNegative() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+    chunk.getAddressForReadingData(1, -1);
+
+    chunk.release();
+  }
+
+  @Test(expected = AssertionError.class)
+  public void readByteAndWriteByteShouldFailIfOffsetIsOutside() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    chunk.readDataByte(chunk.getDataSize() + 1);
+
+    chunk.writeDataByte(chunk.getDataSize() + 1, Byte.MAX_VALUE);
+
+    chunk.release();
+  }
+
+  @Test
+  public void writeByteShouldWriteAtCorrectLocation() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    byte valueBeforeWrite = chunk.readDataByte(2);
+
+    Byte expected = Byte.MAX_VALUE;
+    chunk.writeDataByte(2, expected);
+
+    Byte actual = chunk.readDataByte(2);
+
+    assertThat(actual).isNotEqualTo(valueBeforeWrite);
+    assertThat(actual).isEqualTo(expected);
+
+    chunk.release();
+  }
+
+  @Test
+  public void retainShouldIncrementRefCount() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.getRefCount()).isEqualTo(1);
+
+    chunk.retain();
+    assertThat(chunk.getRefCount()).isEqualTo(2);
+
+    chunk.retain();
+    assertThat(chunk.getRefCount()).isEqualTo(3);
+
+    chunk.release();
+    chunk.release();
+    chunk.release();
+    boolean retainAfterRelease = chunk.retain();
+
+    assertThat(retainAfterRelease).isFalse();
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void retainShouldThrowExceptionAfterMaxNumberOfTimesRetained() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    // loop though and invoke retain for MAX_REF_COUNT-1 times, as create chunk above counted as one reference
+    for (int i = 0; i < OffHeapStoredObject.MAX_REF_COUNT - 1; i++)
+      chunk.retain();
+
+    // invoke for the one more time should throw exception
+    chunk.retain();
+  }
+
+  @Test
+  public void releaseShouldDecrementRefCount() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.getRefCount()).isEqualTo(1);
+
+    chunk.retain();
+    chunk.retain();
+    assertThat(chunk.getRefCount()).isEqualTo(3);
+
+    chunk.release();
+    assertThat(chunk.getRefCount()).isEqualTo(2);
+
+    chunk.release();
+    assertThat(chunk.getRefCount()).isEqualTo(1);
+
+    chunk.retain();
+    chunk.release();
+    assertThat(chunk.getRefCount()).isEqualTo(1);
+
+    chunk.release();
+    assertThat(chunk.getRefCount()).isEqualTo(0);
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void releaseShouldThrowExceptionIfChunkIsAlreadyReleased() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.release();
+    chunk.release();
+  }
+
+  @Test
+  public void testToString() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    String expected = ":<dataSize=" + chunk.getDataSize() + " refCount=" + chunk.getRefCount() + " addr=" + Long.toHexString(chunk.getAddress()) + ">";
+    assertThat(chunk.toString()).endsWith(expected);
+
+    chunk.release();
+  }
+
+  @Test
+  public void getStateShouldReturnAllocatedIfRefCountIsGreaterThanZero() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertEquals(State.ALLOCATED, chunk.getState());
+
+    chunk.release();
+  }
+
+  @Test
+  public void getStateShouldReturnDeallocatedIfRefCountIsZero() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.release();
+    assertEquals(State.DEALLOCATED, chunk.getState());
+  }
+
+  @Test(expected = UnsupportedOperationException.class)
+  public void getNextBlockShouldThrowUnSupportedOperationException() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.getNextBlock();
+
+    chunk.release();
+  }
+
+  @Test
+  public void getBlockSizeShouldBeSameSameGetSize() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertEquals(chunk.getSize(), chunk.getBlockSize());
+
+    chunk.release();
+  }
+
+  @Test(expected = UnsupportedOperationException.class)
+  public void getSlabIdShouldThrowUnSupportedOperationException() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    chunk.getSlabId();
+
+    chunk.release();
+  }
+
+  @Test
+  public void getFreeListIdShouldReturnMinusOne() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.getFreeListId()).isEqualTo(-1);
+
+    chunk.release();
+  }
+
+  @Test
+  public void getDataTypeShouldReturnNull() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.getDataType()).isNull();
+
+    chunk.release();
+  }
+
+  @Test
+  public void getDataDataShouldReturnNull() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    assertThat(chunk.getDataValue()).isNull();
+  }
+
+  @Test(expected = UnsupportedOperationException.class)
+  public void getRawBytesShouldThrowExceptionIfValueIsCompressed() {
+    Object regionEntryValue = getValue();
+    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
+
+    boolean isSerialized = true;
+    boolean isCompressed = true;
+
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
+
+    chunk.getRawBytes();
+
+    chunk.release();
+  }
+
+  @Test
+  public void getSerializedValueShouldSerializeTheValue() {
+    Object regionEntryValue = getValue();
+    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
+
+    boolean isSerialized = false;
+    boolean isCompressed = false;
+
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
+
+    byte[] serializedValue = chunk.getSerializedValue();
+
+    assertThat(serializedValue).isEqualTo(EntryEventImpl.serialize(regionEntryValueAsBytes));
+
+    chunk.release();
+  }
+
+  @Test
+  public void fillShouldFillTheChunk() {
+    boolean isSerialized = false;
+    boolean isCompressed = false;
+
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(new byte[100], isSerialized, isCompressed);
+
+    // first fill the unused part with FILL_PATTERN
+    OffHeapStoredObject.fill(chunk.getAddress());
+
+    // Validate that it is filled
+    chunk.validateFill();
+
+    chunk.release();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSliceJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSliceJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSliceJUnitTest.java
new file mode 100644
index 0000000..1b5bf26
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectSliceJUnitTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gemstone.gemfire.internal.offheap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class OffHeapStoredObjectSliceJUnitTest extends OffHeapStoredObjectJUnitTest {
+
+  @Test
+  public void sliceShouldHaveAValidDataSize() {
+    int position = 1;
+    int end = 2;
+
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    OffHeapStoredObjectSlice slice = (OffHeapStoredObjectSlice) chunk.slice(position, end);
+
+    assertNotNull(slice);
+    assertEquals(OffHeapStoredObjectSlice.class, slice.getClass());
+
+    assertEquals(end - position, slice.getDataSize());
+  }
+
+  @Test
+  public void sliceShouldHaveAValidBaseDataAddress() {
+    int position = 1;
+    int end = 2;
+
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    OffHeapStoredObjectSlice slice = (OffHeapStoredObjectSlice) chunk.slice(position, end);
+
+    assertNotNull(slice);
+    assertEquals(OffHeapStoredObjectSlice.class, slice.getClass());
+
+    assertEquals(chunk.getBaseDataAddress() + position, slice.getBaseDataAddress());
+  }
+
+  @Test
+  public void sliceShouldHaveAValidBaseOffset() {
+    int position = 1;
+    int end = 2;
+
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+    OffHeapStoredObjectSlice slice = (OffHeapStoredObjectSlice) chunk.slice(position, end);
+
+    assertNotNull(slice);
+    assertEquals(OffHeapStoredObjectSlice.class, slice.getClass());
+
+    assertEquals(chunk.getBaseDataOffset() + position, slice.getBaseDataOffset());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapFormJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapFormJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapFormJUnitTest.java
new file mode 100644
index 0000000..a763e76
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectWithHeapFormJUnitTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gemstone.gemfire.internal.offheap;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class OffHeapStoredObjectWithHeapFormJUnitTest extends OffHeapStoredObjectJUnitTest {
+
+  @Test
+  public void getRawBytesShouldReturnCachedHeapForm() {
+    OffHeapStoredObject chunk = createValueAsUnserializedStoredObject(getValue());
+
+    byte[] valueInBytes = getValueAsByteArray();
+    OffHeapStoredObjectWithHeapForm heapForm = new OffHeapStoredObjectWithHeapForm(chunk, valueInBytes);
+
+    assertNotNull(heapForm);
+
+    assertSame(valueInBytes, heapForm.getRawBytes());
+  }
+
+  @Test
+  public void getChunkWithoutHeapFormShouldReturnGemFireChunk() {
+    OffHeapStoredObject chunk = createValueAsSerializedStoredObject(getValue());
+
+    byte[] valueInBytes = getValueAsByteArray();
+    OffHeapStoredObjectWithHeapForm heapForm = new OffHeapStoredObjectWithHeapForm(chunk, valueInBytes);
+
+    OffHeapStoredObject chunkWithOutHeapForm = (OffHeapStoredObject)heapForm.getStoredObjectWithoutHeapForm();
+
+    assertNotNull(chunkWithOutHeapForm);
+    assertEquals(OffHeapStoredObject.class, chunkWithOutHeapForm.getClass());
+
+    assertEquals(chunk, heapForm.getStoredObjectWithoutHeapForm());
+
+    assertEquals(chunk.getAddress(), chunkWithOutHeapForm.getAddress());
+    assertArrayEquals(chunk.getRawBytes(), chunkWithOutHeapForm.getRawBytes());
+    assertNotSame(valueInBytes, chunkWithOutHeapForm.getRawBytes());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapValidationJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapValidationJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapValidationJUnitTest.java
index 630ae22..f8a5c8e 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapValidationJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapValidationJUnitTest.java
@@ -122,7 +122,7 @@ public class OffHeapValidationJUnitTest {
       assertEquals(1024*1024*2, firstBlock.getBlockSize());
       assertEquals("N/A", firstBlock.getDataType());
       assertEquals(-1, firstBlock.getFreeListId());
-      assertTrue(firstBlock.getMemoryAddress() > 0);
+      assertTrue(firstBlock.getAddress() > 0);
       assertNull(firstBlock.getNextBlock());
       assertEquals(0, firstBlock.getRefCount());
       assertEquals(0, firstBlock.getSlabId());
@@ -202,7 +202,7 @@ public class OffHeapValidationJUnitTest {
       assertEquals(i + ":" + values.dataType, values.blockSize, block.getBlockSize());
       assertEquals(i + ":" + values.dataType, values.dataType, block.getDataType());
       assertEquals(i + ":" + values.dataType, values.freeListId, block.getFreeListId());
-      assertEquals(i + ":" + values.dataType, values.memoryAddress, block.getMemoryAddress());
+      assertEquals(i + ":" + values.dataType, values.memoryAddress, block.getAddress());
       assertEquals(i + ":" + values.dataType, values.refCount, block.getRefCount());
       assertEquals(i + ":" + values.dataType, values.slabId, block.getSlabId());
       assertEquals(i + ":" + values.dataType, values.isCompressed, block.isCompressed());
@@ -296,8 +296,8 @@ public class OffHeapValidationJUnitTest {
   
   private long getMemoryAddress(Region region, String key) {
     Object entry = ((LocalRegion) region).getRegionEntry(key)._getValue();
-    assertTrue(entry instanceof ObjectChunk);
-    long memoryAddress = ((ObjectChunk)entry).getMemoryAddress();
+    assertTrue(entry instanceof OffHeapStoredObject);
+    long memoryAddress = ((OffHeapStoredObject)entry).getAddress();
     assertTrue(memoryAddress > 0);
     return memoryAddress;
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapWriteObjectAsByteArrayJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapWriteObjectAsByteArrayJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapWriteObjectAsByteArrayJUnitTest.java
index 9c83f5b..7157eaa 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapWriteObjectAsByteArrayJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapWriteObjectAsByteArrayJUnitTest.java
@@ -35,7 +35,7 @@ import com.gemstone.gemfire.internal.offheap.NullOffHeapMemoryStats;
 import com.gemstone.gemfire.internal.offheap.NullOutOfOffHeapMemoryListener;
 import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
 import com.gemstone.gemfire.internal.offheap.StoredObject;
-import com.gemstone.gemfire.internal.offheap.UnsafeMemoryChunk;
+import com.gemstone.gemfire.internal.offheap.SlabImpl;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)
@@ -43,7 +43,7 @@ public class OffHeapWriteObjectAsByteArrayJUnitTest {
 
   @Before
   public void setUp() throws Exception {
-    SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{new UnsafeMemoryChunk(1024*1024)});
+    SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{new SlabImpl(1024*1024)});
   }
 
   @After
@@ -64,7 +64,7 @@ public class OffHeapWriteObjectAsByteArrayJUnitTest {
   public void testByteArrayChunk() throws IOException, ClassNotFoundException {
     byte[] expected = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
     StoredObject so = createStoredObject(expected, false, false);
-    assertTrue(so instanceof ObjectChunk);
+    assertTrue(so instanceof OffHeapStoredObject);
     HeapDataOutputStream hdos = new HeapDataOutputStream(new byte[1024]);
     DataSerializer.writeObjectAsByteArray(so, hdos);
     DataInputStream in = createInput(hdos);
@@ -76,7 +76,7 @@ public class OffHeapWriteObjectAsByteArrayJUnitTest {
   public void testByteArrayDataAsAddress() throws IOException, ClassNotFoundException {
     byte[] expected = new byte[] {1, 2, 3};
     StoredObject so = createStoredObject(expected, false, false);
-    assertTrue(so instanceof DataAsAddress);
+    assertTrue(so instanceof TinyStoredObject);
     HeapDataOutputStream hdos = new HeapDataOutputStream(new byte[1024]);
     DataSerializer.writeObjectAsByteArray(so, hdos);
     DataInputStream in = createInput(hdos);
@@ -88,7 +88,7 @@ public class OffHeapWriteObjectAsByteArrayJUnitTest {
   public void testStringChunk() throws IOException, ClassNotFoundException {
     byte[] expected = EntryEventImpl.serialize("1234567890");
     StoredObject so = createStoredObject(expected, true, false);
-    assertTrue(so instanceof ObjectChunk);
+    assertTrue(so instanceof OffHeapStoredObject);
     HeapDataOutputStream hdos = new HeapDataOutputStream(new byte[1024]);
     DataSerializer.writeObjectAsByteArray(so, hdos);
     DataInputStream in = createInput(hdos);
@@ -101,7 +101,7 @@ public class OffHeapWriteObjectAsByteArrayJUnitTest {
   public void testStringDataAsAddress() throws IOException, ClassNotFoundException {
     byte[] expected = EntryEventImpl.serialize("1234");
     StoredObject so = createStoredObject(expected, true, false);
-    assertTrue(so instanceof DataAsAddress);
+    assertTrue(so instanceof TinyStoredObject);
     HeapDataOutputStream hdos = new HeapDataOutputStream(new byte[1024]);
     DataSerializer.writeObjectAsByteArray(so, hdos);
     DataInputStream in = createInput(hdos);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OldFreeListOffHeapRegionJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OldFreeListOffHeapRegionJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OldFreeListOffHeapRegionJUnitTest.java
index d8c35b8..e9ca59d 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OldFreeListOffHeapRegionJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OldFreeListOffHeapRegionJUnitTest.java
@@ -41,7 +41,7 @@ public class OldFreeListOffHeapRegionJUnitTest extends OffHeapRegionBase {
 
   @Override
   public int perObjectOverhead() {
-    return ObjectChunk.OFF_HEAP_HEADER_SIZE;
+    return OffHeapStoredObject.HEADER_SIZE;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternIntegrationTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternIntegrationTest.java
index 51f46a1..51bc0a2 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternIntegrationTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternIntegrationTest.java
@@ -84,7 +84,7 @@ public class SimpleMemoryAllocatorFillPatternIntegrationTest {
   private SimpleMemoryAllocatorImpl allocator = null;
   
   /** Our test victim's memory slab. */
-  private UnsafeMemoryChunk slab = null;
+  private SlabImpl slab = null;
 
   /**
    * Enables fill validation and creates the test victim.
@@ -92,8 +92,8 @@ public class SimpleMemoryAllocatorFillPatternIntegrationTest {
   @Before
   public void setUp() throws Exception {
     System.setProperty("gemfire.validateOffHeapWithFill", "true");
-    this.slab = new UnsafeMemoryChunk(SLAB_SIZE);
-    this.allocator = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{this.slab});
+    this.slab = new SlabImpl(SLAB_SIZE);
+    this.allocator = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{this.slab});
   }
 
   /**
@@ -163,7 +163,7 @@ public class SimpleMemoryAllocatorFillPatternIntegrationTest {
         private int totalAllocation = 0;
         
         // List of Chunks allocated by this thread
-        private List<ObjectChunk> chunks = new LinkedList<ObjectChunk>();
+        private List<OffHeapStoredObject> chunks = new LinkedList<OffHeapStoredObject>();
         
         // Time to end thread execution
         private long endTime = System.currentTimeMillis() + RUN_TIME_IN_MILLIS;
@@ -173,7 +173,7 @@ public class SimpleMemoryAllocatorFillPatternIntegrationTest {
          */
         private void allocate() {          
           int allocation = chunkSizer.allocationSize();
-          ObjectChunk chunk = (ObjectChunk) allocator.allocate(allocation);
+          OffHeapStoredObject chunk = (OffHeapStoredObject) allocator.allocate(allocation);
           
           // This should always work just after allocation
           chunk.validateFill();
@@ -186,7 +186,7 @@ public class SimpleMemoryAllocatorFillPatternIntegrationTest {
          * Frees a random chunk from the Chunk list.
          */
         private void free() {
-          ObjectChunk chunk = chunks.remove(random.nextInt(chunks.size()));
+          OffHeapStoredObject chunk = chunks.remove(random.nextInt(chunks.size()));
           totalAllocation -= chunk.getSize();
           
           /*
@@ -200,8 +200,8 @@ public class SimpleMemoryAllocatorFillPatternIntegrationTest {
          * Writes canned data to a random Chunk from the Chunk list.
          */
         private void write() {
-          ObjectChunk chunk = chunks.get(random.nextInt(chunks.size()));
-          chunk.writeBytes(0, WRITE_BYTES);
+          OffHeapStoredObject chunk = chunks.get(random.nextInt(chunks.size()));
+          chunk.writeDataBytes(0, WRITE_BYTES);
         }
         
         /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternJUnitTest.java
index 7c26f86..c61f2f4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorFillPatternJUnitTest.java
@@ -57,7 +57,7 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
   private SimpleMemoryAllocatorImpl allocator = null;
   
   /** Our test victim's memory slab. */
-  private UnsafeMemoryChunk slab = null;
+  private SlabImpl slab = null;
 
   /**
    * Enables fill validation and creates the test victim.
@@ -65,8 +65,8 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
   @Before
   public void setUp() throws Exception {
     System.setProperty("gemfire.validateOffHeapWithFill", "true");
-    this.slab = new UnsafeMemoryChunk(SLAB_SIZE);
-    this.allocator = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{this.slab});
+    this.slab = new SlabImpl(SLAB_SIZE);
+    this.allocator = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{this.slab});
   }
 
   /**
@@ -101,7 +101,7 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
      * Pull a chunk off the fragment.  This will have no fill because
      * it is a "fresh" chunk.
      */
-    ObjectChunk chunk = (ObjectChunk) this.allocator.allocate(chunkSize);
+    OffHeapStoredObject chunk = (OffHeapStoredObject) this.allocator.allocate(chunkSize);
 
     /*
      * Chunk should have valid fill from initial fragment allocation.
@@ -109,7 +109,7 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
     chunk.validateFill();
          
     // "Dirty" the chunk so the release has something to fill over
-    chunk.writeBytes(ObjectChunk.MIN_CHUNK_SIZE + 1, WRITE_BYTES);
+    chunk.writeDataBytes(OffHeapStoredObject.MIN_CHUNK_SIZE + 1, WRITE_BYTES);
 
     // This should free the Chunk (ref count == 1)
     chunk.release();
@@ -118,24 +118,24 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
      * This chunk should have a fill because it was reused from the
      * free list (assuming no fragmentation at this point...)
      */
-    chunk = (ObjectChunk) this.allocator.allocate(chunkSize);
+    chunk = (OffHeapStoredObject) this.allocator.allocate(chunkSize);
     
     // Make sure we have a fill this time
     chunk.validateFill();
     
     // Give the fill code something to write over during the release
-    chunk.writeBytes(ObjectChunk.MIN_CHUNK_SIZE + 1, WRITE_BYTES);
+    chunk.writeDataBytes(OffHeapStoredObject.MIN_CHUNK_SIZE + 1, WRITE_BYTES);
     chunk.release();
 
     // Again, make sure the release implemented the fill
     chunk.validateFill();
 
     // "Dirty up" the free chunk
-    chunk.writeBytes(ObjectChunk.MIN_CHUNK_SIZE + 1, WRITE_BYTES);
+    chunk.writeDataBytes(OffHeapStoredObject.MIN_CHUNK_SIZE + 1, WRITE_BYTES);
     
     catchException(chunk).validateFill();
     assertTrue(caughtException() instanceof IllegalStateException);
-    assertEquals("Fill pattern violated for chunk " + chunk.getMemoryAddress() + " with size " + chunk.getSize(), caughtException().getMessage());
+    assertEquals("Fill pattern violated for chunk " + chunk.getAddress() + " with size " + chunk.getSize(), caughtException().getMessage());
     
   }
 
@@ -149,14 +149,14 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
     /*
      * Stores our allocated memory.
      */
-    ObjectChunk[] allocatedChunks = new ObjectChunk[COMPACTION_CHUNKS];
+    OffHeapStoredObject[] allocatedChunks = new OffHeapStoredObject[COMPACTION_CHUNKS];
     
     /*
      * Use up most of our memory
      * Our memory looks like [      ][      ][      ]
      */
     for(int i =0;i < allocatedChunks.length;++i) {
-      allocatedChunks[i] = (ObjectChunk) this.allocator.allocate(COMPACTION_CHUNK_SIZE);
+      allocatedChunks[i] = (OffHeapStoredObject) this.allocator.allocate(COMPACTION_CHUNK_SIZE);
       allocatedChunks[i].validateFill();
     }
 
@@ -173,7 +173,7 @@ public class SimpleMemoryAllocatorFillPatternJUnitTest {
      * our initial chunks.  This should force a compaction causing our
      * memory to look like [            ][      ].
      */
-    ObjectChunk slightlyLargerChunk = (ObjectChunk) this.allocator.allocate(FORCE_COMPACTION_CHUNK_SIZE);
+    OffHeapStoredObject slightlyLargerChunk = (OffHeapStoredObject) this.allocator.allocate(FORCE_COMPACTION_CHUNK_SIZE);
     
     /*
      * Make sure the compacted memory has the fill validation.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
index 1f17f9b..cc791fc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SimpleMemoryAllocatorJUnitTest.java
@@ -97,9 +97,9 @@ public class SimpleMemoryAllocatorJUnitTest {
       LastSevereLogger logger = new LastSevereLogger();
       try {
         SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats, logger, 10, 950, 100,
-            new AddressableMemoryChunkFactory() {
+            new SlabFactory() {
           @Override
-          public AddressableMemoryChunk create(int size) {
+          public Slab create(int size) {
             throw new OutOfMemoryError("expected");
           }
         });
@@ -116,13 +116,13 @@ public class SimpleMemoryAllocatorJUnitTest {
       LastSevereLogger logger = new LastSevereLogger();
       int MAX_SLAB_SIZE = 100;
       try {
-        AddressableMemoryChunkFactory factory = new AddressableMemoryChunkFactory() {
+        SlabFactory factory = new SlabFactory() {
           private int createCount = 0;
           @Override
-          public AddressableMemoryChunk create(int size) {
+          public Slab create(int size) {
             createCount++;
             if (createCount == 1) {
-              return new UnsafeMemoryChunk(size);
+              return new SlabImpl(size);
             } else {
               throw new OutOfMemoryError("expected");
             }
@@ -139,10 +139,10 @@ public class SimpleMemoryAllocatorJUnitTest {
     {
       NullOutOfOffHeapMemoryListener listener = new NullOutOfOffHeapMemoryListener();
       NullOffHeapMemoryStats stats = new NullOffHeapMemoryStats();
-      AddressableMemoryChunkFactory factory = new AddressableMemoryChunkFactory() {
+      SlabFactory factory = new SlabFactory() {
         @Override
-        public AddressableMemoryChunk create(int size) {
-          return new UnsafeMemoryChunk(size);
+        public Slab create(int size) {
+          return new SlabImpl(size);
         }
       };
       MemoryAllocator ma = 
@@ -156,14 +156,14 @@ public class SimpleMemoryAllocatorJUnitTest {
         listener = new NullOutOfOffHeapMemoryListener();
         NullOffHeapMemoryStats stats2 = new NullOffHeapMemoryStats();
         {
-          UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
+          SlabImpl slab = new SlabImpl(1024);
           try {
-            SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats2, new UnsafeMemoryChunk[]{slab});
+            SimpleMemoryAllocatorImpl.createForUnitTest(listener, stats2, new SlabImpl[]{slab});
           } catch (IllegalStateException expected) {
             assertTrue("unexpected message: " + expected.getMessage(), 
                 expected.getMessage().equals("attempted to reuse existing off-heap memory even though new off-heap memory was allocated"));
           } finally {
-            slab.release();
+            slab.free();
           }
           assertFalse(stats.isClosed());
           assertTrue(listener.isClosed());
@@ -189,23 +189,23 @@ public class SimpleMemoryAllocatorJUnitTest {
   @Test
   public void testBasics() {
     int BATCH_SIZE = 1;
-    int TINY_MULTIPLE = com.gemstone.gemfire.internal.offheap.FreeListManager.TINY_MULTIPLE;
-    int HUGE_MULTIPLE = com.gemstone.gemfire.internal.offheap.FreeListManager.HUGE_MULTIPLE;
-    int perObjectOverhead = com.gemstone.gemfire.internal.offheap.ObjectChunk.OFF_HEAP_HEADER_SIZE;
-    int maxTiny = com.gemstone.gemfire.internal.offheap.FreeListManager.MAX_TINY-perObjectOverhead;
+    int TINY_MULTIPLE = FreeListManager.TINY_MULTIPLE;
+    int HUGE_MULTIPLE = FreeListManager.HUGE_MULTIPLE;
+    int perObjectOverhead = OffHeapStoredObject.HEADER_SIZE;
+    int maxTiny = FreeListManager.MAX_TINY-perObjectOverhead;
     int minHuge = maxTiny+1;
     int TOTAL_MEM = (maxTiny+perObjectOverhead)*BATCH_SIZE /*+ (maxBig+perObjectOverhead)*BATCH_SIZE*/ + round(TINY_MULTIPLE, minHuge+1+perObjectOverhead)*BATCH_SIZE + (TINY_MULTIPLE+perObjectOverhead)*BATCH_SIZE /*+ (MIN_BIG_SIZE+perObjectOverhead)*BATCH_SIZE*/ + round(TINY_MULTIPLE, minHuge+perObjectOverhead+1);
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(TOTAL_MEM);
+    SlabImpl slab = new SlabImpl(TOTAL_MEM);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       assertEquals(TOTAL_MEM, ma.getFreeMemory());
       assertEquals(TOTAL_MEM, ma.freeList.getFreeFragmentMemory());
       assertEquals(0, ma.freeList.getFreeTinyMemory());
       assertEquals(0, ma.freeList.getFreeHugeMemory());
-      MemoryChunk tinymc = ma.allocate(maxTiny);
+      StoredObject tinymc = ma.allocate(maxTiny);
       assertEquals(TOTAL_MEM-round(TINY_MULTIPLE, maxTiny+perObjectOverhead), ma.getFreeMemory());
       assertEquals(round(TINY_MULTIPLE, maxTiny+perObjectOverhead)*(BATCH_SIZE-1), ma.freeList.getFreeTinyMemory());
-      MemoryChunk hugemc = ma.allocate(minHuge);
+      StoredObject hugemc = ma.allocate(minHuge);
       assertEquals(TOTAL_MEM-round(TINY_MULTIPLE, minHuge+perObjectOverhead)/*-round(BIG_MULTIPLE, maxBig+perObjectOverhead)*/-round(TINY_MULTIPLE, maxTiny+perObjectOverhead), ma.getFreeMemory());
       long freeSlab = ma.freeList.getFreeFragmentMemory();
       long oldFreeHugeMemory = ma.freeList.getFreeHugeMemory();
@@ -249,7 +249,7 @@ public class SimpleMemoryAllocatorJUnitTest {
       hugemc = ma.allocate(minHuge);
       assertEquals(round(TINY_MULTIPLE, minHuge+perObjectOverhead)*(BATCH_SIZE-1), ma.freeList.getFreeHugeMemory());
       if (BATCH_SIZE > 1) {
-        MemoryChunk hugemc2 = ma.allocate(minHuge);
+        StoredObject hugemc2 = ma.allocate(minHuge);
         assertEquals(round(TINY_MULTIPLE, minHuge+perObjectOverhead)*(BATCH_SIZE-2), ma.freeList.getFreeHugeMemory());
         hugemc2.release();
         assertEquals(round(TINY_MULTIPLE, minHuge+perObjectOverhead)*(BATCH_SIZE-1), ma.freeList.getFreeHugeMemory());
@@ -265,15 +265,15 @@ public class SimpleMemoryAllocatorJUnitTest {
   
   @Test
   public void testChunkCreateDirectByteBuffer() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024*1024);
+    SlabImpl slab = new SlabImpl(1024*1024);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       ByteBuffer bb = ByteBuffer.allocate(1024);
       for (int i=0; i < 1024; i++) {
         bb.put((byte) i);
       }
       bb.position(0);
-      ObjectChunk c = (ObjectChunk) ma.allocateAndInitialize(bb.array(), false, false);
+      OffHeapStoredObject c = (OffHeapStoredObject) ma.allocateAndInitialize(bb.array(), false, false);
       assertEquals(1024, c.getDataSize());
       if (!Arrays.equals(bb.array(), c.getRawBytes())) {
         fail("arrays are not equal. Expected " + Arrays.toString(bb.array()) + " but found: " + Arrays.toString(c.getRawBytes()));
@@ -293,9 +293,9 @@ public class SimpleMemoryAllocatorJUnitTest {
   }
   @Test
   public void testGetLostChunks() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024*1024);
+    SlabImpl slab = new SlabImpl(1024*1024);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       assertEquals(Collections.emptyList(), ma.getLostChunks());
     } finally {
       SimpleMemoryAllocatorImpl.freeOffHeapMemory();
@@ -304,9 +304,9 @@ public class SimpleMemoryAllocatorJUnitTest {
   @Test
   public void testFindSlab() {
     final int SLAB_SIZE = 1024*1024;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(SLAB_SIZE);
+    SlabImpl slab = new SlabImpl(SLAB_SIZE);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       assertEquals(0, ma.findSlab(slab.getMemoryAddress()));
       assertEquals(0, ma.findSlab(slab.getMemoryAddress()+SLAB_SIZE-1));
       try {
@@ -326,9 +326,9 @@ public class SimpleMemoryAllocatorJUnitTest {
   @Test
   public void testValidateAddressAndSize() {
     final int SLAB_SIZE = 1024*1024;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(SLAB_SIZE);
+    SlabImpl slab = new SlabImpl(SLAB_SIZE);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       try {
         SimpleMemoryAllocatorImpl.validateAddress(0L);
         fail("expected IllegalStateException");
@@ -363,9 +363,9 @@ public class SimpleMemoryAllocatorJUnitTest {
   @Test
   public void testMemoryInspection() {
     final int SLAB_SIZE = 1024*1024;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(SLAB_SIZE);
+    SlabImpl slab = new SlabImpl(SLAB_SIZE);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       MemoryInspector inspector = ma.getMemoryInspector();
       assertNotNull(inspector);
       assertEquals(null, inspector.getFirstBlock());
@@ -382,7 +382,7 @@ public class SimpleMemoryAllocatorJUnitTest {
         assertEquals(1024*1024, firstBlock.getBlockSize());
         assertEquals("N/A", firstBlock.getDataType());
         assertEquals(-1, firstBlock.getFreeListId());
-        assertTrue(firstBlock.getMemoryAddress() > 0);
+        assertTrue(firstBlock.getAddress() > 0);
         assertNull(firstBlock.getNextBlock());
         assertEquals(0, firstBlock.getRefCount());
         assertEquals(0, firstBlock.getSlabId());
@@ -401,9 +401,9 @@ public class SimpleMemoryAllocatorJUnitTest {
   @Test
   public void testClose() {
     System.setProperty(SimpleMemoryAllocatorImpl.FREE_OFF_HEAP_MEMORY_PROPERTY, "false");
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024*1024);
+    SlabImpl slab = new SlabImpl(1024*1024);
     boolean freeSlab = true;
-    UnsafeMemoryChunk[] slabs = new UnsafeMemoryChunk[]{slab};
+    SlabImpl[] slabs = new SlabImpl[]{slab};
     try {
       SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), slabs);
       ma.close();
@@ -427,23 +427,23 @@ public class SimpleMemoryAllocatorJUnitTest {
   
   @Test
   public void testCompaction() {
-    final int perObjectOverhead = com.gemstone.gemfire.internal.offheap.ObjectChunk.OFF_HEAP_HEADER_SIZE;
+    final int perObjectOverhead = OffHeapStoredObject.HEADER_SIZE;
     final int BIG_ALLOC_SIZE = 150000;
     final int SMALL_ALLOC_SIZE = BIG_ALLOC_SIZE/2;
     final int TOTAL_MEM = BIG_ALLOC_SIZE;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(TOTAL_MEM);
+    SlabImpl slab = new SlabImpl(TOTAL_MEM);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      MemoryChunk bmc = ma.allocate(BIG_ALLOC_SIZE-perObjectOverhead);
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      StoredObject bmc = ma.allocate(BIG_ALLOC_SIZE-perObjectOverhead);
       try {
-        MemoryChunk smc = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
+        StoredObject smc = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
         fail("Expected out of memory");
       } catch (OutOfOffHeapMemoryException expected) {
       }
       bmc.release();
       assertEquals(TOTAL_MEM, ma.freeList.getFreeMemory());
-      MemoryChunk smc1 = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
-      MemoryChunk smc2 = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
+      StoredObject smc1 = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
+      StoredObject smc2 = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
       smc2.release();
       assertEquals(TOTAL_MEM-SMALL_ALLOC_SIZE, ma.freeList.getFreeMemory());
       try {
@@ -456,7 +456,7 @@ public class SimpleMemoryAllocatorJUnitTest {
       bmc = ma.allocate(BIG_ALLOC_SIZE-perObjectOverhead);
       bmc.release();
       assertEquals(TOTAL_MEM, ma.freeList.getFreeMemory());
-      ArrayList<MemoryChunk> mcs = new ArrayList<MemoryChunk>();
+      ArrayList<StoredObject> mcs = new ArrayList<StoredObject>();
       for (int i=0; i < BIG_ALLOC_SIZE/(8+perObjectOverhead); i++) {
         mcs.add(ma.allocate(8));
       }
@@ -492,11 +492,11 @@ public class SimpleMemoryAllocatorJUnitTest {
       assertEquals((8+perObjectOverhead)*6, ma.freeList.getFreeMemory());
       checkMcs(mcs);
       // At this point I should have 8*6 + perObjectOverhead*6 of free memory
-      MemoryChunk mc24 = ma.allocate(24);
+      StoredObject mc24 = ma.allocate(24);
       checkMcs(mcs);
       assertEquals((8+perObjectOverhead)*6 - (24+perObjectOverhead), ma.freeList.getFreeMemory());
       // At this point I should have 8*3 + perObjectOverhead*5 of free memory
-      MemoryChunk mc16 = ma.allocate(16);
+      StoredObject mc16 = ma.allocate(16);
       checkMcs(mcs);
       assertEquals((8+perObjectOverhead)*6 - (24+perObjectOverhead) - (16+perObjectOverhead), ma.freeList.getFreeMemory());
       // At this point I should have 8*1 + perObjectOverhead*4 of free memory
@@ -504,7 +504,7 @@ public class SimpleMemoryAllocatorJUnitTest {
       checkMcs(mcs);
       assertEquals((8+perObjectOverhead)*6 - (24+perObjectOverhead) - (16+perObjectOverhead) - (8+perObjectOverhead), ma.freeList.getFreeMemory());
       // At this point I should have 8*0 + perObjectOverhead*3 of free memory
-      MemoryChunk mcDO = ma.allocate(perObjectOverhead*2);
+      StoredObject mcDO = ma.allocate(perObjectOverhead*2);
       checkMcs(mcs);
       // At this point I should have 8*0 + perObjectOverhead*0 of free memory
       assertEquals(0, ma.freeList.getFreeMemory());
@@ -525,7 +525,7 @@ public class SimpleMemoryAllocatorJUnitTest {
       assertEquals((perObjectOverhead*3)+(8+perObjectOverhead)+(16+perObjectOverhead)+(24+perObjectOverhead), ma.freeList.getFreeMemory());
       
       long freeMem = ma.freeList.getFreeMemory();
-      for (MemoryChunk mc: mcs) {
+      for (StoredObject mc: mcs) {
         mc.release();
         assertEquals(freeMem+(8+perObjectOverhead), ma.freeList.getFreeMemory());
         freeMem += (8+perObjectOverhead);
@@ -543,11 +543,11 @@ public class SimpleMemoryAllocatorJUnitTest {
   boolean memoryUsageEventReceived;
   @Test
   public void testUsageEventListener() {
-    final int perObjectOverhead = com.gemstone.gemfire.internal.offheap.ObjectChunk.OFF_HEAP_HEADER_SIZE;
+    final int perObjectOverhead = OffHeapStoredObject.HEADER_SIZE;
     final int SMALL_ALLOC_SIZE = 1000;
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(3000);
+    SlabImpl slab = new SlabImpl(3000);
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       MemoryUsageListener listener = new MemoryUsageListener() {
         @Override
         public void updateMemoryUsed(final long bytesUsed) {
@@ -559,7 +559,7 @@ public class SimpleMemoryAllocatorJUnitTest {
       
       this.expectedMemoryUsage = SMALL_ALLOC_SIZE;
       this.memoryUsageEventReceived = false;
-      MemoryChunk smc = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
+      StoredObject smc = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
       assertEquals(true, this.memoryUsageEventReceived);
       
       this.expectedMemoryUsage = SMALL_ALLOC_SIZE * 2;
@@ -588,19 +588,19 @@ public class SimpleMemoryAllocatorJUnitTest {
       SimpleMemoryAllocatorImpl.freeOffHeapMemory();
     }
   }
-  private void checkMcs(ArrayList<MemoryChunk> mcs) {
-    for (MemoryChunk mc: mcs) {
+  private void checkMcs(ArrayList<StoredObject> mcs) {
+    for (StoredObject mc: mcs) {
       assertEquals(8+8, mc.getSize());
     }
   }
   
   @Test
   public void testOutOfOffHeapMemory() {
-    final int perObjectOverhead = com.gemstone.gemfire.internal.offheap.ObjectChunk.OFF_HEAP_HEADER_SIZE;
+    final int perObjectOverhead = OffHeapStoredObject.HEADER_SIZE;
     final int BIG_ALLOC_SIZE = 150000;
     final int SMALL_ALLOC_SIZE = BIG_ALLOC_SIZE/2;
     final int TOTAL_MEM = BIG_ALLOC_SIZE;
-    final UnsafeMemoryChunk slab = new UnsafeMemoryChunk(TOTAL_MEM);
+    final SlabImpl slab = new SlabImpl(TOTAL_MEM);
     final AtomicReference<OutOfOffHeapMemoryException> ooom = new AtomicReference<OutOfOffHeapMemoryException>();
     final OutOfOffHeapMemoryListener oooml = new OutOfOffHeapMemoryListener() {
       @Override
@@ -612,13 +612,13 @@ public class SimpleMemoryAllocatorJUnitTest {
       }
     };
     try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(oooml, new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(oooml, new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
       // make a big allocation
-      MemoryChunk bmc = ma.allocate(BIG_ALLOC_SIZE-perObjectOverhead);
+      StoredObject bmc = ma.allocate(BIG_ALLOC_SIZE-perObjectOverhead);
       assertNull(ooom.get());
       // drive the ma to ooom with small allocations
       try {
-        MemoryChunk smc = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
+        StoredObject smc = ma.allocate(SMALL_ALLOC_SIZE-perObjectOverhead);
         fail("Expected out of memory");
       } catch (OutOfOffHeapMemoryException expected) {
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/StoredObjectTestSuite.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/StoredObjectTestSuite.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/StoredObjectTestSuite.java
index feb5de8..48a0e25 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/StoredObjectTestSuite.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/StoredObjectTestSuite.java
@@ -21,10 +21,10 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
 @Suite.SuiteClasses({
-	DataAsAddressJUnitTest.class,
-	ObjectChunkJUnitTest.class,
-	ObjectChunkWithHeapFormJUnitTest.class,
-	ObjectChunkSliceJUnitTest.class,
+	TinyStoredObjectJUnitTest.class,
+	OffHeapStoredObjectJUnitTest.class,
+	OffHeapStoredObjectWithHeapFormJUnitTest.class,
+	OffHeapStoredObjectSliceJUnitTest.class,
 })
 @RunWith(Suite.class)
 public class StoredObjectTestSuite {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SyncChunkStackJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SyncChunkStackJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SyncChunkStackJUnitTest.java
deleted file mode 100644
index 3ae6159..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/SyncChunkStackJUnitTest.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.offheap;
-
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.mockito.listeners.InvocationListener;
-import org.mockito.listeners.MethodInvocationReport;
-
-import com.gemstone.gemfire.LogWriter;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class SyncChunkStackJUnitTest {
-  static {
-    ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
-  }
-
-  @BeforeClass
-  public static void setUpBeforeClass() throws Exception {
-  }
-
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception {
-  }
-
-  @Before
-  public void setUp() throws Exception {
-  }
-
-  @After
-  public void tearDown() throws Exception {
-  }
-
-  @Test
-  public void addressZeroCausesStackToBeEmpty() {
-    SyncChunkStack stack = new SyncChunkStack(0L);
-    assertEquals(true, stack.isEmpty());
-  }
-
-  @Test
-  public void defaultStackIsEmpty() {
-    SyncChunkStack stack = new SyncChunkStack();
-    assertEquals(true, stack.isEmpty());
-  }
-
-  @Test
-  public void defaultStackReturnsZeroFromTop() {
-    SyncChunkStack stack = new SyncChunkStack();
-    assertEquals(0L, stack.getTopAddress());
-  }
-  
-  @Test
-  public void defaultStackReturnsZeroFromPoll() {
-    SyncChunkStack stack = new SyncChunkStack();
-    assertEquals(0L, stack.poll());
-  }
-  
-  @Test
-  public void defaultStackReturnsZeroFromClear() {
-    SyncChunkStack stack = new SyncChunkStack();
-    assertEquals(0L, stack.clear());
-    assertEquals(true, stack.isEmpty());
-  }
-  
-  @Test
-  public void defaultStackLogsNothing() {
-    SyncChunkStack stack = new SyncChunkStack();
-    LogWriter lw = mock(LogWriter.class, withSettings().invocationListeners(new InvocationListener() {
-      @Override
-      public void reportInvocation(MethodInvocationReport methodInvocationReport) {
-        fail("Unexpected invocation");
-      }
-    }));
-    stack.logSizes(lw, "should not be used");
-  }
-  
-  @Test
-  public void defaultStackComputeSizeIsZero() {
-    SyncChunkStack stack = new SyncChunkStack();
-    assertEquals(0L, stack.computeTotalSize());
-  }
-  
-  @Test
-  public void stackCreatedWithAddressIsNotEmpty() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-
-      SyncChunkStack stack = new SyncChunkStack(chunk.getMemoryAddress());
-      assertEquals(false, stack.isEmpty());
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-  @Test
-  public void stackWithChunkIsNotEmpty() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-
-      SyncChunkStack stack = new SyncChunkStack();
-      stack.offer(chunk.getMemoryAddress());
-      assertEquals(false, stack.isEmpty());
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-  @Test
-  public void stackWithChunkTopEqualsAddress() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-
-      long addr = chunk.getMemoryAddress();
-      SyncChunkStack stack = new SyncChunkStack();
-      stack.offer(addr);
-      assertEquals(addr, stack.getTopAddress());
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-  @Test
-  public void addressZeroOfferCausesFailedAssertion() {
-    SyncChunkStack stack = new SyncChunkStack(0L);
-    try {
-      stack.offer(0);
-      fail("expected AssertionError");
-    } catch (AssertionError expected) {
-    }
-  }
-
-
-  @Test
-  public void stackWithChunkClearReturnsAddressAndEmptiesStack() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-
-      long addr = chunk.getMemoryAddress();
-      SyncChunkStack stack = new SyncChunkStack();
-      stack.offer(addr);
-      long clearAddr = stack.clear();
-      assertEquals(addr, clearAddr);
-      assertEquals(true, stack.isEmpty());
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-  @Test
-  public void stackWithChunkPollReturnsAddressAndEmptiesStack() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-
-      long addr = chunk.getMemoryAddress();
-      SyncChunkStack stack = new SyncChunkStack();
-      stack.offer(addr);
-      long pollAddr = stack.poll();
-      assertEquals(addr, pollAddr);
-      assertEquals(true, stack.isEmpty());
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-  @Test
-  public void stackWithChunkTotalSizeIsChunkSize() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-      int chunkSize = chunk.getSize();
-
-      long addr = chunk.getMemoryAddress();
-      SyncChunkStack stack = new SyncChunkStack();
-      stack.offer(addr);
-      assertEquals(chunkSize, stack.computeTotalSize());
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-
-  @Test
-  public void stackWithChunkLogShowsMsgAndSize() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-      int chunkSize = chunk.getSize();
-
-      long addr = chunk.getMemoryAddress();
-      SyncChunkStack stack = new SyncChunkStack();
-      stack.offer(addr);
-      LogWriter lw = mock(LogWriter.class);
-      stack.logSizes(lw, "foo");
-      verify(lw).info("foo"+chunkSize);
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-  
-  private class TestableSyncChunkStack extends SyncChunkStack {
-    public boolean doConcurrentMod = true;
-    public int chunk2Size;
-    private SimpleMemoryAllocatorImpl ma;
-    TestableSyncChunkStack(SimpleMemoryAllocatorImpl ma) {
-      this.ma = ma;
-    }
-    @Override
-    protected void testHookDoConcurrentModification() {
-      if (doConcurrentMod) {
-        doConcurrentMod = false;
-        ObjectChunk chunk2 = (ObjectChunk) ma.allocate(50);
-        this.chunk2Size = chunk2.getSize();
-        this.offer(chunk2.getMemoryAddress());
-      }
-    }
-  }
-  @Test
-  public void stackWithChunkTotalSizeIsChunkSizeWithConcurrentMod() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-      int chunkSize = chunk.getSize();
-
-      long addr = chunk.getMemoryAddress();
-      TestableSyncChunkStack stack = new TestableSyncChunkStack(ma);
-      stack.offer(addr);
-      long totalSize = stack.computeTotalSize();
-      assertEquals("chunkSize=" + chunkSize + " chunk2Size=" + stack.chunk2Size, chunkSize + stack.chunk2Size, totalSize);
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-
-
-  @Test
-  public void stackWithChunkLogShowsMsgAndSizeWithConcurrentMod() {
-    UnsafeMemoryChunk slab = new UnsafeMemoryChunk(1024);
-    try {
-      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new UnsafeMemoryChunk[]{slab});
-      ObjectChunk chunk = (ObjectChunk) ma.allocate(100);
-      int chunkSize = chunk.getSize();
-
-      long addr = chunk.getMemoryAddress();
-      TestableSyncChunkStack stack = new TestableSyncChunkStack(ma);
-      stack.offer(addr);
-      LogWriter lw = mock(LogWriter.class);
-      stack.logSizes(lw, "foo");
-      verify(lw).info("foo"+chunkSize);
-      verify(lw).info("foo"+stack.chunk2Size);
-    } finally {
-      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-    }
-  }
-}


[34/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.fig b/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.fig
deleted file mode 100644
index 8d5eb70..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.fig
+++ /dev/null
@@ -1,135 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 675 2250 3600 5025
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 1575 4275 168 168 1575 4275 1650 4125
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 2700 4275 168 168 2700 4275 2775 4125
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 900 3375 168 168 900 3375 975 3225
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2700 4275 168 168 2700 4275 2625 4125
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3375 3375 168 168 3375 3375 3300 3225
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1575 2475 168 168 1575 2475 1650 2625
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2700 2475 168 168 2700 2475 2775 2625
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 900 3375 168 168 900 3375 975 3525
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 2700 2475 168 168 2700 2475 2625 2625
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 3375 3375 168 168 3375 3375 3300 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 975 3525 1425 4200
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1725 4275 2550 4275
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 3300 3525 2850 4200
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 2550 4275 1725 4275
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 975 3225 1425 2550
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1725 2475 2550 2475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 3300 3225 2850 2550
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 2550 2475 1725 2475
-4 0 0 50 -1 0 16 0.0000 4 210 1245 1575 4950 Infinite Loop\001
--6
-6 4650 2175 6450 4575
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5550 4350 168 168 5550 4350 5625 4500
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4875 3375 168 168 4875 3375 4950 3525
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 5550 4350 168 168 5550 4350 5475 4500
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 6225 3375 168 168 6225 3375 6150 3525
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5550 2400 168 168 5550 2400 5475 2250
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6225 3375 168 168 6225 3375 6150 3225
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 5550 2400 168 168 5550 2400 5625 2250
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 4875 3375 168 168 4875 3375 4950 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 5475 4200 4950 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 5625 4200 6150 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 5625 2550 6150 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 5475 2550 4950 3225
--6
-6 9450 2175 11250 4575
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 9675 3375 168 168 9675 3375 9750 3525
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 11025 3375 168 168 11025 3375 10950 3525
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 10350 2400 168 168 10350 2400 10275 2250
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 11025 3375 168 168 11025 3375 10950 3225
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 10350 2400 168 168 10350 2400 10425 2250
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 9675 3375 168 168 9675 3375 9750 3225
-1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 9675 4332 168 168 9675 4332 9600 4482
-1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 11025 4350 168 168 11025 4350 11100 4500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 10425 2550 10950 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 10275 2550 9750 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 9675 3525 9675 4200
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 11025 3525 11025 4200
--6
-6 7200 3300 8475 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7200 3300 8475 3300 8475 3525 7200 3525 7200 3300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7275 3300 7275 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7350 3300 7350 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7425 3300 7425 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 3300 7500 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7575 3300 7575 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7650 3300 7650 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 3300 7725 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7800 3300 7800 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7875 3300 7875 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7950 3300 7950 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8025 3300 8025 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8100 3300 8100 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8250 3300 8250 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8325 3300 8325 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8400 3300 8400 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8175 3300 8175 3525
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 6600 3000 6225 3000
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 7725 3750 8025 3750
-2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4050 2025 4050 5250
-4 0 0 50 -1 0 16 0.0000 4 210 1260 6750 3075 writeObject()\001
-4 0 0 50 -1 0 16 0.0000 4 210 1185 8100 3825 readObject()\001
-4 0 0 50 -1 0 16 0.0000 4 210 4650 5625 4950 readObject() does not maintain referntial integrity\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.gif b/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.gif
deleted file mode 100644
index f2c98e0..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/doc-files/data-serialization-exceptions.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.fig
deleted file mode 100644
index 85756e6..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.fig
+++ /dev/null
@@ -1,224 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 225 5550 10500 9450
-6 225 7800 2550 9450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 225 7800 2550 7800 2550 9450 225 9450 225 7800
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 225 8175 2550 8175
-4 0 0 50 -1 2 12 0.0000 4 180 2055 375 8025 RemoteApplicationProcess\001
-4 0 0 50 -1 -1 12 0.0000 4 180 585 450 8400 id : long\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1005 450 8640 processId : int\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1530 450 8880 javaProcess : boolean\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1365 450 9120 hasCache : boolean\001
-4 0 0 50 -1 -1 12 0.0000 4 180 945 450 9360 name : String\001
--6
-6 2550 7800 4500 8025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2550 8025 4500 8025
-4 0 0 50 -1 -1 12 0.0000 4 75 90 2625 7950 *\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1410 3000 7950 connectedProcesses\001
--6
-6 4500 7725 7725 9375
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 9375 7725 9375 7725 7725 4500 7725 4500 9375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4500 8100 7725 8100
-4 0 0 50 -1 -1 12 0.0000 4 180 1185 4575 8325 gemfireDir : File\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1125 4575 8565 birthDate : Date\001
-4 0 0 50 -1 -1 12 0.0000 4 165 1515 4575 8805 lockInfo : LockInfo[]\001
-4 0 0 50 -1 -1 12 0.0000 4 165 2205 4575 9045 lockListeners : LockListeners[]\001
-4 0 0 50 -1 -1 12 0.0000 4 165 3045 4575 9285 connectionListeners : ConnectionListener[]\001
-4 0 0 50 -1 2 12 0.0000 4 180 1470 5400 7950 RemoteGfManager\001
--6
-6 8550 7725 10500 8625
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8550 8625 10500 8625 10500 7725 8550 7725 8550 8625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8550 8100 10500 8100
-4 0 0 50 -1 2 12 0.0000 4 180 1785 8625 7950 RemoteApplicationVM\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1440 8625 8325 sharedLog : boolean\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1500 8625 8565 sharedStats : boolean\001
--6
-6 7050 5550 8850 6975
-6 7050 5550 8850 6975
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7050 5850 8850 5850
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7050 6975 8850 6975 8850 5550 7050 5550 7050 6975
-4 0 0 50 -1 3 12 0.0000 4 135 1485 7275 5775 RemoteGemFireVM\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1035 7125 6150 id: Serializable\001
-4 0 0 50 -1 -1 12 0.0000 4 180 945 7125 6390 name : String\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1305 7125 6630 host : InetAddress\001
-4 0 0 50 -1 -1 12 0.0000 4 180 885 7125 6870 sysDir : File\001
--6
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 6225 7725 6225 7425 9450 7425 9450 7725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 7950 7425 7950 6975
--6
-6 150 2025 5325 7500
-6 375 2625 1875 2925
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 375 2625 1875 2625 1875 2925 375 2925 375 2625
-4 0 0 50 -1 1 12 0.0000 4 180 1215 450 2850 TransportConfig\001
--6
-6 150 3825 2250 4800
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 150 3825 2250 3825 2250 4800 150 4800 150 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 150 4200 2250 4200
-4 0 0 50 -1 0 12 0.0000 4 165 1365 450 4425 isMcast() : boolean\001
-4 0 0 50 -1 2 12 0.0000 4 180 1905 225 4050 RemoteTransportConfig\001
-4 0 0 50 -1 0 12 0.0000 4 180 1485 450 4665 bindAddress : String\001
--6
-6 3225 3825 5250 5100
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3225 4200 5250 4200
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3225 3825 5250 3825 5250 5100 3225 5100 3225 3825
-4 0 0 50 -1 0 12 0.0000 4 135 1305 3450 4500 host : InetAddress\001
-4 0 0 50 -1 0 12 0.0000 4 180 600 3450 4740 port : int\001
-4 0 0 50 -1 0 12 0.0000 4 180 1485 3450 4980 bindAddress : String\001
-4 0 0 50 -1 2 12 0.0000 4 135 1725 3300 4050 DistributionLocatorId\001
--6
-6 1875 5850 3600 7500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1875 6150 3600 6150
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1875 7500 3600 7500 3600 5850 1875 5850 1875 7500
-4 0 0 50 -1 -1 12 0.0000 4 135 1230 1950 6450 enabled : boolean\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1230 1950 6690 protocols : String\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1080 1950 6930 ciphers : String\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1545 1950 7170 boolean : requireAuth\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1560 1950 7410 properties : Properties\001
-4 0 0 50 -1 2 12 0.0000 4 180 855 2325 6075 SSLConfig\001
--6
-6 3150 2025 5325 3450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3150 2025 5325 2025 5325 3450 3150 3450 3150 2025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3150 2400 5325 2400
-4 0 0 50 -1 -1 12 0.0000 4 180 1500 3300 2625 displayName : String\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1320 3300 2865 logger : LogWriter\001
-4 0 0 50 -1 -1 12 0.0000 4 180 930 3300 3105 logLevel : int\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1935 3300 3345 alertListener : AlertListener\001
-4 0 0 50 -1 2 12 0.0000 4 180 1875 3300 2250 GfManagerAgentConfig\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 1050 3825 1050 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2250 3975 3225 3975
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2250 4500 3225 4500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 1800 4800 2250 5850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3825 5100 3075 5850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 60.00 120.00
-	 1875 2775 3150 2775
-4 0 0 50 -1 0 12 0.0000 4 135 210 2400 3900 ids\001
-4 0 0 50 -1 0 12 0.0000 4 75 90 3000 3900 *\001
-4 0 0 50 -1 0 12 0.0000 4 135 555 2325 4425 mcastId\001
-4 0 0 50 -1 -1 12 0.0000 4 180 690 2100 5250 sslConfig\001
-4 0 0 50 -1 -1 12 0.0000 4 180 690 3600 5550 sslConfig\001
--6
-6 6600 2025 12300 2700
-6 6600 2100 9300 2700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6600 2400 9300 2400
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6600 2100 9300 2100 9300 2700 6600 2700 6600 2100
-4 0 0 50 -1 2 12 0.0000 4 180 1935 6975 2325 RemoteGfManagerAgent\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1485 6750 2625 licsenseType : String\001
--6
-6 9300 2025 10725 2250
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9300 2250 10725 2250
-4 0 0 50 -1 -1 12 0.0000 4 135 585 9450 2175 listeners\001
-4 0 0 50 -1 -1 12 0.0000 4 75 90 10500 2175 *\001
--6
-6 10725 2100 12300 2400
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 10725 2100 12300 2100 12300 2400 10725 2400 10725 2100
-4 0 0 50 -1 3 12 0.0000 4 150 1350 10875 2325 JoinLeaveListener\001
--6
--6
-6 9450 5550 11025 6150
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9450 6150 11025 6150 11025 5550 9450 5550 9450 6150
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9450 5850 11025 5850
-4 0 0 50 -1 2 12 0.0000 4 180 1080 9750 5775 AdminRegion\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1425 9525 6075 globalName : String\001
--6
-6 9900 4725 10500 5025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9900 4725 10500 4725 10500 5025 9900 5025 9900 4725
-4 0 0 50 -1 1 12 0.0000 4 180 495 9975 4950 Region\001
--6
-6 11475 4725 12825 5025
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 11475 4725 12825 4725 12825 5025 11475 5025 11475 4725
-4 0 0 50 -1 1 12 0.0000 4 180 1185 11550 4950 RegionAttributes\001
--6
-6 11100 6525 13125 6825
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 11100 6525 13125 6525 13125 6825 11100 6825 11100 6525
-4 0 0 50 -1 2 12 0.0000 4 180 1920 11175 6750 RemoteRegionAttributes\001
--6
-6 4350 5550 6525 6975
-6 4425 6000 6450 6975
-4 0 0 50 -1 -1 12 0.0000 4 180 945 4425 6150 name : String\001
-4 0 0 50 -1 -1 12 0.0000 4 135 450 4425 6390 id : int\001
-4 0 0 50 -1 -1 12 0.0000 4 135 1140 4425 6630 closed : boolean\001
-4 0 0 50 -1 -1 12 0.0000 4 180 1980 4425 6870 rootRegionNames : String[]\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4350 5925 6525 5925
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4350 6975 6525 6975 6525 5550 4350 5550 4350 6975
-4 0 0 50 -1 2 12 0.0000 4 135 1395 4725 5775 RemoteCacheInfo\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6825 2700 6825 7725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9075 2700 9075 7725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 6600 2250 5325 2250
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 7050 5700 6525 5700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 8850 5700 9450 5700
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 10200 5550 10200 5025
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 12075 6525 12075 5025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 10350 6150 11100 6675
-4 0 0 50 -1 -1 12 0.0000 4 75 90 9150 7725 *\001
-4 0 0 50 -1 -1 12 0.0000 4 75 90 6900 7725 *\001
-4 0 0 50 -1 -1 12 0.0000 4 135 675 6075 3000 managers\001
-4 0 0 50 -1 -1 12 0.0000 4 180 450 6075 2175 config\001
-4 0 0 50 -1 -1 12 0.0000 4 75 90 9300 5625 *\001
-4 0 0 50 -1 -1 12 0.0000 4 135 645 9150 3000 members\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.gif
deleted file mode 100644
index 9cef97a..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/admin/doc-files/class-hierarchy.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/BucketAdvisor-state.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/BucketAdvisor-state.png b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/BucketAdvisor-state.png
deleted file mode 100644
index 7f58ca0..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/BucketAdvisor-state.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/eventmatrix.xls
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/eventmatrix.xls b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/eventmatrix.xls
deleted file mode 100644
index 769698a..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/eventmatrix.xls and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.fig
deleted file mode 100644
index 1a33d46..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.fig
+++ /dev/null
@@ -1,159 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 8700 2550 9975 3300
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8700 2550 9975 2550 9975 3300 8700 3300 8700 2550
-4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 3000 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 3225 locations = ...\001
-4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 2775 BucketInfo2\001
--6
-6 8700 3450 9975 4200
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8700 3450 9975 3450 9975 4200 8700 4200 8700 3450
-4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 3900 localDepth = 3\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 4125 locations = ...\001
-4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 3675 BucketInfo3\001
--6
-6 8700 1650 9975 2400
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8700 1650 9975 1650 9975 2400 8700 2400 8700 1650
-4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 2100 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 2325 locations = ...\001
-4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 1875 BucketInfo1\001
--6
-6 8700 750 9975 1500
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8700 750 9975 750 9975 1500 8700 1500 8700 750
-4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 975 BucketInfo0\001
-4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 1200 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 1425 locations = ...\001
--6
-6 900 1875 1800 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1275 2775 1800 2775
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1275 1875 1800 1875 1800 3075 1275 3075 1275 1875
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1275 2175 1800 2175
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1275 2475 1800 2475
-4 0 0 50 -1 0 12 0.0000 4 135 180 900 3000 11\001
-4 0 0 50 -1 0 12 0.0000 4 135 180 900 2700 10\001
-4 0 0 50 -1 0 12 0.0000 4 135 180 900 2400 01\001
-4 0 0 50 -1 0 12 0.0000 4 135 180 900 2100 00\001
--6
-6 2250 2550 3525 3300
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2250 2550 3525 2550 3525 3300 2250 3300 2250 2550
-4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 3000 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 3225 locations = ...\001
-4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 2775 BucketInfo2\001
--6
-6 2250 3450 3525 4200
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2250 3450 3525 3450 3525 4200 2250 4200 2250 3450
-4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 3675 BucketInfo3\001
-4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 3900 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 4125 locations = ...\001
--6
-6 2250 1650 3525 2400
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2250 1650 3525 1650 3525 2400 2250 2400 2250 1650
-4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 1875 BucketInfo1\001
-4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 2100 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 2325 locations = ...\001
--6
-6 2250 750 3525 1500
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2250 750 3525 750 3525 1500 2250 1500 2250 750
-4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 975 BucketInfo0\001
-4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 1200 localDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 1425 locations = ...\001
--6
-6 8700 4350 9975 5100
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8700 4350 9975 4350 9975 5100 8700 5100 8700 4350
-4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 4575 BucketInfo7\001
-4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 4800 localDepth = 3\001
-4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 5025 locations = ...\001
--6
-6 3975 2250 6225 3300
-4 0 0 50 -1 1 12 0.0000 4 135 1980 3975 2400 When Bucket3 reaches the\001
-4 0 0 50 -1 1 12 0.0000 4 180 2190 3975 2625 maximum size, it is split into\001
-4 0 0 50 -1 1 12 0.0000 4 135 1935 3975 2850 two buckets: Bucket3 and\001
-4 0 0 50 -1 1 12 0.0000 4 135 2190 3975 3075 Bucket7.  Three bits are used\001
-4 0 0 50 -1 1 12 0.0000 4 135 1035 3975 3300 to index data.\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 1950 8700 1125
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 2325 8700 2025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 2625 8700 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 2925 8700 3750
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 1800 1950 2250 1125
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 1800 2325 2250 2025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 1800 2625 2250 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 1800 2925 2250 3750
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 2775 8250 2775
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7725 1875 8250 1875 8250 3075 7725 3075 7725 1875
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 2175 8250 2175
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 2475 8250 2475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 3975 8250 3975
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7725 3075 8250 3075 8250 4275 7725 4275 7725 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 3375 8250 3375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7725 3675 8250 3675
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 3225 8700 1200
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 3525 8700 2025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 3825 8700 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 8250 4125 8700 4725
-4 0 0 50 -1 2 12 0.0000 4 180 1365 6825 1275 BucketDirectory\001
-4 0 0 50 -1 0 12 0.0000 4 180 1200 6825 1500 globalDepth = 3\001
-4 0 0 50 -1 2 12 0.0000 4 180 1365 375 1275 BucketDirectory\001
-4 0 0 50 -1 0 12 0.0000 4 180 1200 375 1500 globalDepth = 2\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3000 011\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 2700 010\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 2400 001\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 2100 000\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 4200 111\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3900 110\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3600 101\001
-4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3300 100\001
-4 0 0 50 -1 0 12 0.0000 4 135 405 675 1800 mask\001
-4 0 0 50 -1 0 12 0.0000 4 135 405 7200 1800 mask\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.gif
deleted file mode 100644
index 58366a7..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/extensible-hashing.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.fig
deleted file mode 100644
index d51af17..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.fig
+++ /dev/null
@@ -1,349 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 4275 225 9825 1050
-2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
-	 4275 225 9825 225 9825 1050 4275 1050 4275 225
-4 0 0 50 0 0 13 0.0000 4 150 5085 4441 450 This flowchart describes the series of actions that are taken\001
-4 0 0 50 0 0 13 0.0000 6 210 5220 4441 930 $Id$\001
-4 0 0 50 0 0 13 0.0000 4 195 4170 4441 690 when a value is requested from a JCache region.\001
--6
-6 2025 975 3975 1575
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3975 1575 3975 975 2100 975 2100 1575 3975 1575
-4 1 0 50 0 0 12 0.0000 4 180 1815 3000 1200 User requests the value\001
-4 1 0 50 0 0 12 0.0000 4 180 1425 3000 1440 of a key in a region\001
--6
-6 1350 8325 3750 8625
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3750 8625 3750 8325 1350 8325 1350 8625 3750 8625
-4 1 0 50 0 0 12 0.0000 4 180 2250 2550 8550 Define the entry, if necessary\001
--6
-6 4575 9075 6525 9375
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 4575 9375 4575 9075 6525 9075 6525 9375 4575 9375
-4 1 0 50 0 0 12 0.0000 4 180 1860 5550 9300 Store key/value in region\001
--6
-6 750 3075 2400 3525
-4 1 0 50 0 0 12 0.0000 4 180 1605 1575 3225 [Does entry or region\001
-4 1 0 50 0 0 12 0.0000 4 180 1635 1575 3465 have a cache loader?]\001
--6
-6 2250 4500 3300 5550
-6 2250 4500 3300 4800
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3300 4800 3300 4500 2250 4500 2250 4800 3300 4800
-4 1 0 50 0 0 12 0.0000 4 135 825 2775 4725 Return null\001
--6
-6 2550 4800 3000 5550
-6 2550 5100 3000 5550
-6 2625 5175 2925 5475
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2775 5325 106 106 2775 5325 2881 5325
--6
-1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 2775 5325 168 168 2775 5325 2700 5175
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 2775 4800 2775 5175
--6
--6
-6 600 4500 2100 5025
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 2100 5025 2100 4500 600 4500 600 5025 2100 5025
-4 1 0 50 0 0 12 0.0000 4 135 1425 1350 4725 Invoke the loader's\001
-4 1 0 50 0 0 12 0.0000 4 180 1065 1350 4965 load() method\001
--6
-6 5475 11775 6600 12075
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 6600 12075 6600 11775 5475 11775 5475 12075 6600 12075
-4 0 0 50 0 0 12 0.0000 4 135 960 5550 12000 Return value\001
--6
-6 2775 7725 4425 8025
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 4425 8025 4425 7725 2775 7725 2775 8025 4425 8025
-4 1 0 50 0 0 12 0.0000 4 135 1530 3600 7950 Perform a "net load"\001
--6
-6 2925 6900 4575 7350
-4 1 0 50 0 0 12 0.0000 4 180 1620 3750 7050 [Can another member\001
-4 1 0 50 0 0 12 0.0000 4 180 1185 3750 7290 load the value?]\001
--6
-6 4500 7725 5550 8700
-6 4500 7725 5550 8025
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5550 8025 5550 7725 4500 7725 4500 8025 5550 8025
-4 1 0 50 0 0 12 0.0000 4 135 825 5025 7950 Return null\001
--6
-6 4800 8025 5250 8700
-6 4800 8250 5250 8700
-6 4875 8325 5175 8625
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5025 8475 106 106 5025 8475 5131 8475
--6
-1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5025 8475 168 168 5025 8475 4950 8325
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 5025 8025 5025 8325
--6
--6
-6 3825 5100 5325 5625
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5325 5625 5325 5100 3825 5100 3825 5625 5325 5625
-4 1 0 50 0 0 12 0.0000 4 180 1470 4575 5325 Request value from\001
-4 1 0 50 0 0 12 0.0000 4 135 1125 4575 5565 other members\001
--6
-6 3825 4500 5625 4800
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5625 4800 5625 4500 3825 4500 3825 4800 5625 4800
-4 1 0 50 0 0 12 0.0000 4 135 1725 4725 4725 Perform a "net search"\001
--6
-6 7275 5850 8625 6375
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 8625 6375 8625 5850 7275 5850 7275 6375 8625 6375
-4 1 0 50 0 0 12 0.0000 4 180 1110 7950 6075 Get ownership\001
-4 1 0 50 0 0 12 0.0000 4 180 585 7950 6315 of entry\001
--6
-6 8175 6450 9825 6900
-4 1 0 50 0 0 12 0.0000 4 180 1605 9000 6600 [Does entry or region\001
-4 1 0 50 0 0 12 0.0000 4 180 1635 9000 6840 have a cache loader?]\001
--6
-6 8400 7200 9900 7725
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 9900 7725 9900 7200 8400 7200 8400 7725 9900 7725
-4 1 0 50 0 0 12 0.0000 4 135 1425 9150 7425 Invoke the loader's\001
-4 1 0 50 0 0 12 0.0000 4 180 1065 9150 7665 load() method\001
--6
-6 2700 5850 4500 6300
-4 1 0 50 0 0 12 0.0000 4 180 1725 3600 6000 [Does another member\001
-4 1 0 50 0 0 12 0.0000 4 180 1230 3600 6240 have the value?]\001
--6
-6 6000 5475 6750 5925
-4 1 0 50 0 0 12 0.0000 4 180 720 6375 5625 [Is region\001
-4 1 0 50 0 0 12 0.0000 4 180 585 6375 5865 global?]\001
--6
-6 4275 10575 5925 11100
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5925 11100 5925 10575 4275 10575 4275 11100 5925 11100
-4 1 0 50 0 0 12 0.0000 4 180 1440 5100 10800 Release ownership\001
-4 1 0 50 0 0 12 0.0000 4 180 585 5100 11040 of entry\001
--6
-6 7575 10575 9225 11100
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 7575 11100 7575 10575 9225 10575 9225 11100 7575 11100
-4 1 0 50 0 0 12 0.0000 4 135 1530 8400 10800 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 1110 8400 11040 objectAdded()\001
--6
-6 7425 9750 9375 10200
-6 7425 9750 9375 10200
-4 1 0 50 0 0 12 0.0000 4 180 1680 8400 10140 object event listener?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1815 8400 9900 [Does the entry have an\001
--6
--6
-6 6600 12675 7050 13125
-6 6675 12750 6975 13050
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6825 12900 106 106 6825 12900 6931 12900
--6
-1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6825 12900 168 168 6825 12900 6750 12750
--6
-6 600 8925 2400 9375
-4 1 0 50 0 0 12 0.0000 4 180 1665 1500 9075 [Does the region have\001
-4 1 0 50 0 0 12 0.0000 4 180 1725 1500 9315 an eviction controller?]\001
--6
-6 1500 5175 2400 5625
-4 1 0 50 0 0 12 0.0000 4 180 840 1950 5325 [Did loader\001
-4 1 0 50 0 0 12 0.0000 4 180 900 1950 5565 return null?]\001
--6
-6 675 9900 2475 10500
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 2475 10500 2475 9900 675 9900 675 10500 2475 10500
-4 1 0 50 0 0 12 0.0000 4 180 1560 1575 10125 evict Entries making\001
-4 1 0 50 0 0 12 0.0000 4 180 1710 1575 10365 space for loaded Entry\001
--6
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3000 300 106 106 3000 300 3106 300
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 3000 975 3000 375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2850 2025 3000 1875 3150 2025 3000 2175 2850 2025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2250 2550 2400 2400 2550 2550 2400 2700 2250 2550
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2850 2025 2400 2025 2400 2400
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 3000 1875 3000 1575
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 2250 2550 225 2550 225 11925 5475 11925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2325 9525 2475 9375 2625 9525 2475 9675 2325 9525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2325 9525 1575 9525 1575 9900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2325 10800 2475 10650 2625 10800 2475 10950 2325 10800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 1575 10500 1575 10800 2325 10800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 2625 9525 3000 9525 3000 10800 2625 10800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 120.00 120.00
-	 2475 10950 2475 11250 3675 11250 3675 9225 4575 9225
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 2475 8625 2475 9375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4425 6375 2475 6375 2475 8325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5100 11100 5100 11325 5925 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6225 10275 6600 10275 6600 11325 6225 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5925 11325 6075 11175 6225 11325 6075 11475 5925 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7425 11325 7275 11175 7125 11325 7275 11475 7425 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 8325 11100 8325 11325 7425 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7125 10275 6825 10275 6825 11325 7125 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6600 9675 6600 9825 6075 9825 6075 10125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6825 9675 6825 9825 7275 9825 7275 10125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7275 11475 7275 11775 6900 11775 6900 12525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3225 4125 3375 3975 3525 4125 3375 4275 3225 4125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
-	 2700 3600 3375 3600 3375 3975
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2400 3600 2550 3450 2700 3600 2550 3750 2400 3600
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2400 3600 1350 3600 1350 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 4575 6225 4575 5625
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3525 4125 4125 4125 4125 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3675 3075 5100 3075 5100 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 6525 9225 6750 9225 6750 9675
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6825 12525 6825 12750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 6075 11475 6075 11775
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6075 12075 6075 12225 6675 12225 6675 12525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3375 3075 2550 3075 2550 3450
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4500 7350 4650 7200 4800 7350 4650 7500 4500 7350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4500 7350 3600 7350 3600 7725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4800 7350 5025 7350 5025 7725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 3600 8025 3600 8325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3150 2025 3525 2025 3525 2550
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1200 5700 1350 5550 1500 5700 1350 5850 1200 5700
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 1350 5550 1350 5025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 120.00 120.00
-	 1200 5700 975 5700 975 7725 1875 7725 1875 8325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 4575 4800 4575 5100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 1500 5700 3450 5700 3450 4650 3825 4650
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 7950 6750 7950 6375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 8100 6900 9150 6900 9150 7200
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7800 6900 7950 6750 8100 6900 7950 7050 7800 6900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 9150 8250 7275 8250 7275 6900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 9300 7725 9300 8100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 120.00 120.00
-	 9300 8400 9300 8850 4125 8850 4125 8475 3750 8475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7800 6900 4650 6900 4650 7200
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4425 6375 4575 6225 4725 6375 4575 6525 4425 6375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5550 6075 5700 5925 5850 6075 5700 6225 5550 6075
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5550 6075 5325 6075 5325 6900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 5
-	0 0 1.00 120.00 120.00
-	 5700 5925 5700 5700 5025 5700 5025 6375 4725 6375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 5850 6075 7275 6075
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 9150 8250 9300 8100 9450 8250 9300 8400 9150 8250
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5925 10275 6075 10125 6225 10275 6075 10425 5925 10275
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5925 10275 5100 10275 5100 10575
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7425 10275 7275 10125 7125 10275 7275 10425 7425 10275
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7425 10275 8325 10275 8325 10575
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6450 9675 6975 9675
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6525 12525 7125 12525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3375 3075 3525 2925 3675 3075 3525 3225 3375 3075
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2550 2550 3525 2550 3525 2925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3225 4125 2775 4125 2775 4500
-4 1 0 50 0 0 12 0.0000 4 180 1665 2025 1875 [Is the entry defined?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1695 1500 2325 [Is the value present?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1785 8325 8175 [Did loader return null?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1350 5250 10200 [Is region global?]\001
-4 1 0 50 0 0 12 0.0000 4 180 2070 4650 2925 [Is region globally scoped?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1260 2625 3975 [Is region local?]\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.pdf
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.pdf b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.pdf
deleted file mode 100644
index 5c6a4d0..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-get-flow.pdf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.fig
deleted file mode 100644
index 6f3a5ca..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.fig
+++ /dev/null
@@ -1,359 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 6600 12150 7500 12450
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 7500 12450 7500 12150 6600 12150 6600 12450 7500 12450
-4 1 0 50 0 0 12 0.0000 4 180 705 7050 12375 Entry put\001
--6
-6 6825 12675 7275 13125
-6 6900 12750 7200 13050
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 7050 12900 106 106 7050 12900 7156 12900
--6
-1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7050 12900 168 168 7050 12900 6975 12750
--6
-6 6075 7275 8025 7575
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 8025 7575 8025 7275 6075 7275 6075 7575 8025 7575
-4 1 0 50 0 0 12 0.0000 4 180 1860 7050 7500 Store key/value in region\001
--6
-6 1875 2325 3375 2625
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3375 2625 3375 2325 1875 2325 1875 2625 3375 2625
-4 1 0 50 0 0 12 0.0000 4 180 1440 2625 2550 Define a new entry\001
--6
-6 1125 3750 2475 4350
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 2400 4350 2400 3750 1125 3750 1125 4350 2400 4350
-4 1 0 50 0 0 12 0.0000 4 135 915 1800 3975 Use custom\001
-4 1 0 50 0 0 12 0.0000 4 180 1245 1800 4215 object attributes\001
--6
-6 2700 3750 4425 4350
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 4425 4350 4425 3750 2700 3750 2700 4350 4425 4350
-4 1 0 50 0 0 12 0.0000 4 180 1395 3600 3975 Use default object\001
-4 1 0 50 0 0 12 0.0000 4 180 1635 3600 4215 attributes from region\001
--6
-6 2925 750 4275 1350
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 4275 1350 4275 750 2925 750 2925 1350 4275 1350
-4 1 0 50 0 0 12 0.0000 4 180 1260 3600 1215 pair into a region\001
-4 1 0 50 0 0 12 0.0000 4 180 1155 3600 975 Put a key/value\001
--6
-6 4575 375 10050 1200
-2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
-	 4575 375 10050 375 10050 1200 4575 1200 4575 375
-4 0 0 50 0 0 13 0.0000 4 150 5085 4738 600 This flowchart describes the series of actions that are taken\001
-4 0 0 50 0 0 13 0.0000 4 195 3840 4738 840 when a key/value is place in a JCache region\001
-4 0 0 50 0 0 13 0.0000 6 210 5220 4738 1080 \001
--6
-6 900 2775 2400 3225
-4 1 0 50 0 0 12 0.0000 4 180 1380 1650 3165 object attributes?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1395 1650 2925 [Did caller specify\001
--6
-6 2250 8775 3900 9225
-4 1 0 50 0 0 12 0.0000 4 180 1155 3075 8925 [Was the value\001
-4 1 0 50 0 0 12 0.0000 4 180 1530 3075 9165 previously present?]\001
--6
-6 1875 9750 3825 10275
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3825 10275 3825 9750 1875 9750 1875 10275 3825 10275
-4 1 0 50 0 0 12 0.0000 4 135 1530 2850 9975 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 1830 2850 10215 objectReplaced() mthod\001
--6
-6 4200 9750 6000 10275
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 6000 10275 6000 9750 4200 9750 4200 10275 6000 10275
-4 1 0 50 0 0 12 0.0000 4 135 1530 5100 9975 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 1710 5100 10215 objectAdded() method\001
--6
-6 7425 8925 8925 9225
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 8925 9225 8925 8925 7425 8925 7425 9225 8925 9225
-4 1 0 50 0 0 12 0.0000 4 180 1320 8175 9150 Distribute update\001
--6
-6 8475 10050 9525 10350
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 9525 10350 9525 10050 8475 10050 8475 10350 9525 10350
-4 1 0 50 0 0 12 0.0000 4 135 1035 9000 10275 Wait for acks\001
--6
-6 8325 11325 9975 11850
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 9975 11850 9975 11325 8325 11325 8325 11850 9975 11850
-4 1 0 50 0 0 12 0.0000 4 180 1440 9150 11550 Release ownership\001
-4 1 0 50 0 0 12 0.0000 4 180 585 9150 11790 of entry\001
--6
-6 9150 10500 9900 10950
-4 1 0 50 0 0 12 0.0000 4 180 720 9525 10650 [Is region\001
-4 1 0 50 0 0 12 0.0000 4 180 585 9525 10890 global?]\001
--6
-6 4350 2250 5850 2550
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5850 2550 5850 2250 4350 2250 4350 2550 5850 2550
-4 1 0 50 0 0 12 0.0000 4 180 1275 5100 2475 Replace an entry\001
--6
-6 5175 5100 7125 5700
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5175 5700 5175 5100 7125 5100 7125 5700 5175 5700
-4 1 0 50 0 0 12 0.0000 4 135 1680 6150 5325 Invoke the controller's\001
-4 1 0 50 0 0 12 0.0000 4 180 1635 6150 5565 beforeObjectAdded()\001
--6
-6 7425 5100 9375 5700
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 7425 5700 7425 5100 9375 5100 9375 5700 7425 5700
-4 1 0 50 0 0 12 0.0000 4 180 1845 8400 5565 beforeObjectReplaced()\001
-4 1 0 50 0 0 12 0.0000 4 135 1680 8400 5325 Invoke the controller's\001
--6
-6 4575 2700 7575 3900
-6 5475 3300 7575 3600
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5475 3600 5475 3300 7575 3300 7575 3600 5475 3600
-4 1 0 50 0 0 12 0.0000 4 180 1965 6525 3525 Obtain ownership of entry\001
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5250 3000 5100 2850 4950 3000 5100 3150 5250 3000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5250 3000 6600 3000 6600 3300
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5250 3750 5100 3600 4950 3750 5100 3900 5250 3750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 120.00 120.00
-	 5250 3750 6600 3750 6600 3600
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 4950 3000 4575 3000 4575 3750 4950 3750
-4 1 0 50 0 0 12 0.0000 4 180 1350 6000 2850 [Is region global?]\001
--6
-6 4350 8100 6300 8550
-6 4350 8100 6300 8550
-4 1 0 50 0 0 12 0.0000 4 180 1860 5325 8250 [Does this entry have an\001
-4 1 0 50 0 0 12 0.0000 4 180 1680 5325 8490 object event listener?]\001
--6
--6
-6 300 5550 2400 5850
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 2400 5850 2400 5550 300 5550 300 5850 2400 5850
-4 1 0 50 0 0 12 0.0000 4 180 1965 1350 5775 Obtain ownership of entry\001
--6
-6 525 6300 2325 6750
-4 1 0 50 0 0 12 0.0000 4 180 1635 1425 6690 a eviction controller?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1665 1425 6450 [Does the region have\001
--6
-6 450 7125 2250 7725
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 450 7725 450 7125 2250 7125 2250 7725 450 7725
-4 1 0 50 0 0 12 0.0000 4 180 1800 1350 7350 apply eviction algorithm\001
-4 1 0 50 0 0 12 0.0000 4 135 1560 1350 7590 to accomodate value\001
--6
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3600 300 106 106 3600 300 3706 300
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 6975 7575 6975 7875
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6750 7875 7200 7875
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7350 8625 7500 8475 7650 8625 7500 8775 7350 8625
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7125 7875 7125 8100 7500 8100 7500 8475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7650 8625 8100 8625 8100 8925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7425 11025 7575 10875 7725 11025 7575 11175 7425 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7350 8625 7125 8625 7125 11025 7425 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7575 11175 7575 11400 7125 11400 7125 11775
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6750 11775 7275 11775
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 7050 11775 7050 12150
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 7050 12450 7050 12750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6825 7875 6825 8100 6375 8100 6375 8475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6225 8625 6375 8475 6525 8625 6375 8775 6225 8625
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 6225 8625 4050 8625 4050 9150
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3450 1950 2550 1950 2550 2325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 2550 3150 2550 2625
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2400 4725 2550 4575 2700 4725 2550 4875 2400 4725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2400 3300 2550 3150 2700 3300 2550 3450 2400 3300
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2700 3300 3450 3300 3450 3750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 120.00 120.00
-	 2400 4725 1725 4725 1725 4350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3450 4350 3450 4725 2700 4725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 120.00 120.00
-	 1725 3750 1725 3300 2400 3300
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3450 1950 3600 1800 3750 1950 3600 2100 3450 1950
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 3600 1800 3600 1350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3600 750 3600 375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3750 1950 5100 1950 5100 2250
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3900 9300 4050 9150 4200 9300 4050 9450 3900 9300
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3900 9300 2775 9300 2775 9750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4200 9300 5025 9300 5025 9750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3900 10725 4050 10575 4200 10725 4050 10875 3900 10725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2775 10275 2775 10725 3900 10725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5025 10275 5025 10725 4200 10725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6375 11175 6375 11400 6900 11400 6900 11775
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6225 11025 6375 10875 6525 11025 6375 11175 6225 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6525 8625 6825 8625 6825 11025 6525 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4050 10875 4050 11025 6225 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7950 9750 8100 9600 8250 9750 8100 9900 7950 9750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 8250 9750 9000 9750 9000 10050
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7950 9750 7575 9750 7575 10875
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 8850 11025 9000 10875 9150 11025 9000 11175 8850 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 9000 10350 9000 10875
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 9150 11025 9450 11025 9450 11325
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 8850 11025 7725 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 9075 11850 9075 12375 8100 12375 8100 11025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 5100 2550 5100 2850
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4950 6150 5100 6000 5250 6150 5100 6300 4950 6150
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 120.00 120.00
-	 5250 6150 7275 6150 7275 6075
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4950 4425 5100 4275 5250 4425 5100 4575 4950 4425
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5250 4425 7275 4425 7275 4650
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 4950 4425 4575 4425 4575 6150 4950 6150
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7425 4800 8325 4800 8325 5100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7125 4800 6225 4800 6225 5100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 8325 5700 8325 5925 7425 5925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 6225 5700 6225 5925 7125 5925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7425 5925 7275 5775 7125 5925 7275 6075 7425 5925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7425 4800 7275 4650 7125 4800 7275 4950 7425 4800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 5100 3900 5100 4275
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 5100 6300 5100 6600 6975 6600 6975 7275
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 120.00 120.00
-	 2550 8250 2550 8550 3375 8550 3375 7425 6075 7425
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 2550 4875 2550 5100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2400 5250 2550 5100 2700 5250 2550 5400 2400 5250
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2400 5250 1050 5250 1050 5550
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2400 6000 2550 5850 2700 6000 2550 6150 2400 6000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 120.00 120.00
-	 2400 6000 1050 6000 1050 5850
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 2700 5250 3075 5250 3075 6000 2700 6000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 2550 6150 2550 6675
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2700 6825 2550 6675 2400 6825 2550 6975 2700 6825
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2400 6825 1125 6825 1125 7125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 2700 6825 3150 6825 3150 8100 2700 8100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
-	0 0 1.00 120.00 120.00
-	 2400 8100 1125 8100 1125 7725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2700 8100 2550 7950 2400 8100 2550 8250 2700 8100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 8100 9225 8100 9600
-4 1 0 50 0 0 12 0.0000 4 180 1995 8625 8325 [Is the region distributed?]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 7200 8475 [else]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 6750 8475 [else]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 3150 1800 [else]\001
-4 1 0 50 0 0 12 0.0000 4 180 1665 4725 1800 [Is the entry defined?]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 3000 3225 [else]\001
-4 1 0 50 0 0 12 0.0000 4 180 1230 8925 9600 [Wait for acks?]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 7650 9600 [else]\001
-4 1 0 50 0 0 12 0.0000 4 180 2715 8700 4725 [Was the value previously defined?]\001
-4 1 0 50 0 0 12 0.0000 4 180 3390 6825 4275 [Does the region have a capacity controller?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1350 1650 5100 [Is region global?]\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.pdf
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.pdf b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.pdf
deleted file mode 100644
index 7fa4390..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-put-flow.pdf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.fig
deleted file mode 100644
index 6bbff07..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.fig
+++ /dev/null
@@ -1,334 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 5625 3150 6975 3675
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 5625 3675 5625 3150 6975 3150 6975 3675 5625 3675
-4 1 0 50 0 0 12 0.0000 4 180 1260 6300 3375 Define entry and\001
-4 1 0 50 0 0 12 0.0000 4 180 705 6300 3615 store key\001
--6
-6 6675 4800 8325 5325
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 6675 5325 6675 4800 8325 4800 8325 5325 6675 5325
-4 1 0 50 0 0 12 0.0000 4 135 1530 7500 5025 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 915 7500 5265 keyAdded()\001
--6
-6 6675 3825 8475 4275
-4 1 0 50 0 0 12 0.0000 4 180 1800 7575 3975 [Does the region have a\001
-4 1 0 50 0 0 12 0.0000 4 180 1680 7575 4215 region event listener?]\001
--6
-6 2700 5925 4050 6450
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 4050 6450 4050 5925 2700 5925 2700 6450 4050 6450
-4 1 0 50 0 0 12 0.0000 4 180 645 3375 6390 in region\001
-4 1 0 50 0 0 12 0.0000 4 180 1170 3375 6150 Store key/value\001
--6
-6 3825 11400 4575 11700
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3825 11700 3825 11400 4575 11400 4575 11700 3825 11700
-4 1 0 50 0 0 12 0.0000 4 135 690 4200 11625 Send ack\001
--6
-6 3225 300 4875 1350
-6 3225 825 4875 1350
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 3300 1350 3300 825 4800 825 4800 1350 3300 1350
-4 1 0 50 0 0 12 0.0000 4 180 1215 4050 1050 An entry update\001
-4 1 0 50 0 0 12 0.0000 4 180 1545 4050 1290 message is received\001
--6
-1 3 0 1 0 0 50 0 20 0.000 0 -0.0000 4050 450 106 106 4050 450 3944 450
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4050 825 4050 525
--6
-6 5100 375 10725 1200
-2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
-	 5100 375 9900 375 9900 1200 5100 1200 5100 375
-4 0 0 50 0 0 12 0.0000 4 135 4560 5175 600 This flowchart describes the series of actions that are taken\001
-4 0 0 50 0 0 12 0.0000 6 195 5505 5175 1080 \001
-4 0 0 50 0 0 12 0.0000 4 180 4365 5175 840 when an JCache region entry update message is received.\001
--6
-6 225 4050 2325 4650
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 2325 4650 2325 4050 225 4050 225 4650 2325 4650
-4 1 0 50 0 0 12 0.0000 4 135 1680 1275 4275 Invoke the controller's\001
-4 1 0 50 0 0 12 0.0000 4 180 1845 1275 4515 beforeObjectReplaced()\001
--6
-6 2550 4050 4500 4650
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 4500 4650 4500 4050 2550 4050 2550 4650 4500 4650
-4 1 0 50 0 0 12 0.0000 4 135 1680 3525 4275 Invoke the controller's\001
-4 1 0 50 0 0 12 0.0000 4 180 1635 3525 4515 beforeObjectAdded()\001
--6
-6 6525 6000 7875 6450
-4 1 0 50 0 0 12 0.0000 4 180 1260 7200 6150 [Does the region\001
-4 1 0 50 0 0 12 0.0000 4 180 1125 7200 6390 mirror objects?\001
--6
-6 7500 6600 9150 7050
-4 1 0 50 0 0 12 0.0000 4 180 1515 8325 6750 [Does region have a\001
-4 1 0 50 0 0 12 0.0000 4 180 1500 8325 6990 capacitycontroller?]\001
--6
-6 7725 7500 9750 8025
-6 7875 7575 9675 7725
-4 1 0 50 0 0 12 0.0000 4 135 1680 8775 7725 Invoke the controller's\001
--6
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 9750 8025 9750 7500 7725 7500 7725 8025 9750 8025
-4 1 0 50 0 0 12 0.0000 4 180 1635 8775 7965 beforeObjectAdded()\001
--6
-6 6525 8775 8175 9300
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 6600 9300 6600 8775 8100 8775 8100 9300 6600 9300
-4 1 0 50 0 0 12 0.0000 4 180 1530 7350 9000 (Request and) store\001
-4 1 0 50 0 0 12 0.0000 4 180 1095 7350 9240 value in region\001
--6
-6 4575 12375 5025 13050
-6 4575 12600 5025 13050
-6 4650 12675 4950 12975
-1 3 0 1 0 0 50 0 20 0.000 1 0.0000 4800 12825 106 106 4800 12825 4906 12825
--6
-1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4800 12825 168 168 4800 12825 4725 12675
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4800 12375 4800 12675
--6
-6 6900 9900 9450 12000
-6 7200 10875 9150 11400
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 9150 10875 9150 11400 7200 11400 7200 10875 9150 10875
-4 1 0 50 0 0 12 0.0000 4 135 1530 8175 11100 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 1710 8175 11340 objectAdded() method\001
--6
-6 7500 9900 9450 10350
-6 7500 9900 9450 10350
-4 1 0 50 0 0 12 0.0000 4 180 1860 8475 10050 [Does this entry have an\001
-4 1 0 50 0 0 12 0.0000 4 180 1680 8475 10290 object event listener?]\001
--6
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7575 10425 7425 10275 7275 10425 7425 10575 7575 10425
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7575 10425 8100 10425 8100 10875
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7575 11850 7425 11700 7275 11850 7425 12000 7575 11850
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 8100 11400 8100 11850 7575 11850
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7275 10425 6900 10425 6900 11850 7275 11850
--6
-6 225 7650 1875 8100
-4 1 0 50 0 0 12 0.0000 4 180 1140 1050 7800 [Was the entry\001
-4 1 0 50 0 0 12 0.0000 4 180 1530 1050 8040 previously present?]\001
--6
-6 150 8625 1950 9150
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 1950 9150 1950 8625 150 8625 150 9150 1950 9150
-4 1 0 50 0 0 12 0.0000 4 135 1530 1050 8850 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 1320 1050 9090 objectReplaced()\001
--6
-6 2250 8625 3900 9150
-2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
-	 2250 8625 2250 9150 3900 9150 3900 8625 2250 8625
-4 1 0 50 0 0 12 0.0000 4 135 1530 3075 8850 Invoke the listener's\001
-4 1 0 50 0 0 12 0.0000 4 180 1110 3075 9090 objectAdded()\001
--6
-6 1200 6975 3150 7425
-6 1200 6975 3150 7425
-4 1 0 50 0 0 12 0.0000 4 180 1860 2175 7125 [Does this entry have an\001
-4 1 0 50 0 0 12 0.0000 4 180 1680 2175 7365 object event listener?]\001
--6
--6
-6 3675 10575 4725 11025
-4 1 0 50 0 0 12 0.0000 4 180 960 4200 10725 [Was an ack\001
-4 1 0 50 0 0 12 0.0000 4 180 810 4200 10965 requested]\001
--6
-6 1650 2100 3300 2550
-4 1 0 50 0 0 12 0.0000 4 180 1605 2475 2250 [Does region have an\001
-4 1 0 50 0 0 12 0.0000 4 180 1500 2475 2490 eviction controller?]\001
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3900 2025 3375 2025 3375 2550
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5550 2700 5400 2550 5250 2700 5400 2850 5550 2700
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4200 2025 5400 2025 5400 2550
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5550 2700 6375 2700 6375 3150
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6525 4350 6375 4200 6225 4350 6375 4500 6525 4350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 6525 4350 7500 4350 7500 4800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 6375 4200 6375 3675
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6525 5700 6375 5550 6225 5700 6375 5850 6525 5700
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7500 5325 7500 5700 6525 5700
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 6375 5850 6375 6450
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6225 4350 5850 4350 5850 5700 6225 5700
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 5250 2700 4800 2700 4800 10200
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3525 2700 3375 2550 3225 2700 3375 2850 3525 2700
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3225 2700 2400 2700 2400 3375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 6225 6600 5850 6600 5850 10350 4950 10350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 3375 6825 3375 6450
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4950 10350 4800 10200 4650 10350 4800 10500 4950 10350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 4800 10500 4800 10950
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4950 11100 4800 10950 4650 11100 4800 11250 4950 11100
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4650 11100 4200 11100 4200 11400
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4950 12000 4800 11850 4650 12000 4800 12150 4950 12000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 4200 11700 4200 12000 4650 12000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 4950 11100 5325 11100 5325 12000 4950 12000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3900 2025 4050 1875 4200 2025 4050 2175 3900 2025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 4050 1875 4050 1350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3525 5475 3375 5325 3225 5475 3375 5625 3525 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2550 3525 2400 3375 2250 3525 2400 3675 2550 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2250 3525 1275 3525 1275 4050
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2550 3525 3450 3525 3450 4050
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2550 5025 2400 4875 2250 5025 2400 5175 2550 5025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 1275 4650 1275 5025 2250 5025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3525 4650 3525 5025 2550 5025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 3525 2700 4650 2700 4650 5475 3525 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2400 5175 2400 5475 3225 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 3375 5625 3375 5925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6525 6600 6375 6450 6225 6600 6375 6750 6525 6600
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 6525 6600 7350 6600 7350 6975
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7500 7125 7350 6975 7200 7125 7350 7275 7500 7125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7500 7125 8700 7125 8700 7500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7500 8250 7350 8100 7200 8250 7350 8400 7500 8250
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 8700 8025 8700 8250 7500 8250
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 7200 7125 6900 7125 6900 8250 7200 8250
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 7350 8400 7350 8775
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 7350 9825 7350 9300
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4575 12375 5100 12375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 120.00 120.00
-	 4800 12150 4800 12375
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 7050 9825 7575 9825
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 7425 10275 7425 9825
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 7125 9825 7125 10125 5850 10125
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 4
-	0 0 1.00 120.00 120.00
-	 5025 12375 5025 12150 7425 12150 7425 12000
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
-	0 0 1.00 120.00 120.00
-	 3225 7350 3225 6825
-2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3075 6825 3600 6825
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3075 7500 3225 7350 3375 7500 3225 7650 3075 7500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 3375 7500 4050 7500 4050 9900 3225 9900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1950 8175 2100 8025 2250 8175 2100 8325 1950 8175
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2250 8175 3000 8175 3000 8625
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 1950 8175 1050 8175 1050 8625
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 1050 9150 1050 9375 1950 9375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3000 9150 3000 9375 2250 9375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1950 9375 2100 9225 2250 9375 2100 9525 1950 9375
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 2925 9900 3075 9750 3225 9900 3075 10050 2925 9900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 2100 9525 2100 9900 2925 9900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 120.00 120.00
-	 3450 6825 3450 7125 4350 7125 4350 10350 4650 10350
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
-	0 0 1.00 120.00 120.00
-	 3075 7500 2100 7500 2100 8025
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
-	0 0 1.00 120.00 120.00
-	 3075 10050 3075 12150 4650 12150 4650 12375
-4 1 0 50 0 0 12 0.0000 4 180 1815 6450 2550 [Is the region mirrored?]\001
-4 1 0 50 0 0 12 0.0000 4 180 1665 3000 1800 [Is the entry defined?]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 4500 1800 [else]\001
-4 1 0 50 0 0 12 0.0000 4 180 1680 1350 3375 [Is the entry present?]\001
-4 1 0 50 0 0 12 0.0000 4 180 435 3600 7425 [else]\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.pdf
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.pdf b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.pdf
deleted file mode 100644
index 70c38ff..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/jcache-update-message-flow.pdf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.fig
deleted file mode 100644
index bef603d..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.fig
+++ /dev/null
@@ -1,255 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 8925 1800 11175 4125
-6 9150 2250 10950 3675
-6 9225 2775 9975 3450
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 9225 2775 9975 2775 9975 3450 9225 3450 9225 2775
-4 0 0 50 -1 0 12 0.0000 4 135 615 9300 3000 Bucket0\001
--6
-6 10125 2775 10875 3450
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 10125 2775 10875 2775 10875 3450 10125 3450 10125 2775
-4 0 0 50 -1 0 12 0.0000 4 135 615 10200 3000 Bucket2\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9150 2250 10950 2250 10950 3675 9150 3675 9150 2250
-4 0 0 50 -1 0 12 0.0000 4 135 735 9675 2475 Partition1\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8925 1800 11175 1800 11175 4125 8925 4125 8925 1800
-4 0 0 50 -1 0 12 0.0000 4 135 1350 9225 2025 Cache Server VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 9075 3975 maxPartitionedData = 1000\001
--6
-6 6750 4200 7950 4875
-2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 7875 4800 6825 4800 6825 4275 7875 4275 7875 4800
-4 1 0 50 -1 0 12 0.0000 4 135 855 7350 4500 Distributed\001
-4 1 0 50 -1 0 12 0.0000 4 180 570 7350 4725 System\001
--6
-6 4200 1800 8250 3975
-6 6225 2175 8175 3600
-6 6300 2475 7125 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6525 2775 6825 2775 6825 3225 6525 3225 6525 2775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6675 2775 6675 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 2850 6825 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 2925 6825 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 3000 6825 3000
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 3075 6825 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 3150 6825 3150
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6300 2475 7125 2475 7125 3525 6300 3525 6300 2475
-4 0 0 50 -1 0 12 0.0000 4 135 615 6375 2700 Bucket0\001
-4 0 0 50 -1 0 12 0.0000 4 135 690 6375 3450 size = 20\001
--6
-6 7275 2475 8100 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7500 2775 7800 2775 7800 3225 7500 3225 7500 2775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7650 2775 7650 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 2850 7800 2850
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 2925 7800 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 3000 7800 3000
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 3075 7800 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 3150 7800 3150
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7275 2475 8100 2475 8100 3525 7275 3525 7275 2475
-4 0 0 50 -1 0 12 0.0000 4 135 615 7350 2700 Bucket2\001
-4 0 0 50 -1 0 12 0.0000 4 135 690 7350 3450 size = 45\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6225 2175 8175 2175 8175 3600 6225 3600 6225 2175
-4 0 0 50 -1 0 12 0.0000 4 135 735 6345 2400 Partition1\001
--6
-6 4350 3150 5850 3825
-6 4350 3150 5850 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5100 3525 5100 3750
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4650 3525 5550 3525 5550 3750 4650 3750 4650 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4350 3150 5850 3150 5850 3825 4350 3825 4350 3150
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4875 3525 4875 3750
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5325 3525 5325 3750
-4 0 0 50 -1 0 12 0.0000 4 180 1230 4485 3375 BucketDirectory\001
--6
--6
-6 4800 2325 5250 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4800 2475 5250 2475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4800 2625 5250 2625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4800 2775 5250 2775
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 5025 2325 5025 2925
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4800 2325 5250 2325 5250 2925 4800 2925 4800 2325
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4200 1800 8250 1800 8250 3975 4200 3975 4200 1800
-4 0 0 50 -1 0 12 0.0000 4 180 1200 5550 2025 Application VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 6000 3825 maxPartitionedData = 1000\001
--6
-6 5400 5250 8250 7425
-6 6225 5625 8175 7050
-6 6300 5925 7125 6975
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6525 6225 6825 6225 6825 6675 6525 6675 6525 6225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6675 6225 6675 6675
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 6300 6825 6300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 6375 6825 6375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 6450 6825 6450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 6525 6825 6525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6525 6600 6825 6600
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6300 5925 7125 5925 7125 6975 6300 6975 6300 5925
-4 0 0 50 -1 0 12 0.0000 4 135 615 6375 6150 Bucket1\001
-4 0 0 50 -1 0 12 0.0000 4 135 690 6375 6900 size = 34\001
--6
-6 7275 5925 8100 6975
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7500 6225 7800 6225 7800 6675 7500 6675 7500 6225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7650 6225 7650 6675
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 6300 7800 6300
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 6375 7800 6375
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 6450 7800 6450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 6525 7800 6525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 7500 6600 7800 6600
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7275 5925 8100 5925 8100 6975 7275 6975 7275 5925
-4 0 0 50 -1 0 12 0.0000 4 135 615 7350 6150 Bucket3\001
-4 0 0 50 -1 0 12 0.0000 4 135 690 7350 6900 size = 12\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 6225 5625 8175 5625 8175 7050 6225 7050 6225 5625
-4 0 0 50 -1 0 12 0.0000 4 135 735 6345 5850 Partition2\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5400 5250 8250 5250 8250 7425 5400 7425 5400 5250
-4 0 0 50 -1 0 12 0.0000 4 135 1350 5550 5475 Cache Server VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 6000 7275 maxPartitionedData = 1000\001
--6
-6 2325 4125 4875 5775
-6 3225 4575 4725 5250
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3975 4950 3975 5175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3525 4950 4425 4950 4425 5175 3525 5175 3525 4950
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3225 4575 4725 4575 4725 5250 3225 5250 3225 4575
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3750 4950 3750 5175
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 4200 4950 4200 5175
-4 0 0 50 -1 0 12 0.0000 4 180 1230 3360 4800 BucketDirectory\001
--6
-6 2625 4575 3075 5175
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 4725 3075 4725
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 4875 3075 4875
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 5025 3075 5025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2850 4575 2850 5175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2625 4575 3075 4575 3075 5175 2625 5175 2625 4575
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2325 4125 4875 4125 4875 5775 2325 5775 2325 4125
-4 0 0 50 -1 0 12 0.0000 4 180 1200 2475 4350 Application VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 1800 2550 5550 maxPartitionedData = 0\001
--6
-6 8925 5100 11175 7425
-6 9150 5550 10950 6975
-6 9225 6075 9975 6750
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 9225 6075 9975 6075 9975 6750 9225 6750 9225 6075
-4 0 0 50 -1 0 12 0.0000 4 135 615 9300 6300 Bucket1\001
--6
-6 10125 6075 10875 6750
-2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 10125 6075 10875 6075 10875 6750 10125 6750 10125 6075
-4 0 0 50 -1 0 12 0.0000 4 135 615 10200 6300 Bucket3\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9150 5550 10950 5550 10950 6975 9150 6975 9150 5550
-4 0 0 50 -1 0 12 0.0000 4 135 735 9675 5775 Partition2\001
--6
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8925 5100 11175 5100 11175 7425 8925 7425 8925 5100
-4 0 0 50 -1 0 12 0.0000 4 135 1350 9225 5325 Cache Server VM\001
-4 0 0 50 -1 0 12 0.0000 4 135 2070 9075 7275 maxPartitionedData = 1000\001
--6
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 6825 4500 4875 4500
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7275 4275 7275 3975
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7275 4800 7275 5250
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7875 4350 8925 3825
-2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
-	 7875 4800 8925 5400
-2 1 1 2 0 7 50 -1 -1 4.500 0 0 -1 0 0 2
-	 8475 975 8475 8175
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 3600 6300 2625
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4950 3600 6525 5925
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5400 3600 7650 5925
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5175 3600 7275 2700
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3675 5025 6300 2850
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3825 5100 6300 6825
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4350 5100 7275 6675
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4125 5025 7275 3000
-4 0 0 50 -1 0 12 0.0000 4 135 735 7650 1125 Machine1\001
-4 0 0 50 -1 0 12 0.0000 4 135 735 8625 1125 Machine2\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.gif
deleted file mode 100644
index b3a2baf..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/partitioned-regions.gif and /dev/null differ


[29/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/jcache-get-flow.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/jcache-get-flow.fig b/geode-core/src/main/resources/javadoc-images/jcache-get-flow.fig
new file mode 100644
index 0000000..d51af17
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/jcache-get-flow.fig
@@ -0,0 +1,349 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 4275 225 9825 1050
+2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+	 4275 225 9825 225 9825 1050 4275 1050 4275 225
+4 0 0 50 0 0 13 0.0000 4 150 5085 4441 450 This flowchart describes the series of actions that are taken\001
+4 0 0 50 0 0 13 0.0000 6 210 5220 4441 930 $Id$\001
+4 0 0 50 0 0 13 0.0000 4 195 4170 4441 690 when a value is requested from a JCache region.\001
+-6
+6 2025 975 3975 1575
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3975 1575 3975 975 2100 975 2100 1575 3975 1575
+4 1 0 50 0 0 12 0.0000 4 180 1815 3000 1200 User requests the value\001
+4 1 0 50 0 0 12 0.0000 4 180 1425 3000 1440 of a key in a region\001
+-6
+6 1350 8325 3750 8625
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3750 8625 3750 8325 1350 8325 1350 8625 3750 8625
+4 1 0 50 0 0 12 0.0000 4 180 2250 2550 8550 Define the entry, if necessary\001
+-6
+6 4575 9075 6525 9375
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 4575 9375 4575 9075 6525 9075 6525 9375 4575 9375
+4 1 0 50 0 0 12 0.0000 4 180 1860 5550 9300 Store key/value in region\001
+-6
+6 750 3075 2400 3525
+4 1 0 50 0 0 12 0.0000 4 180 1605 1575 3225 [Does entry or region\001
+4 1 0 50 0 0 12 0.0000 4 180 1635 1575 3465 have a cache loader?]\001
+-6
+6 2250 4500 3300 5550
+6 2250 4500 3300 4800
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3300 4800 3300 4500 2250 4500 2250 4800 3300 4800
+4 1 0 50 0 0 12 0.0000 4 135 825 2775 4725 Return null\001
+-6
+6 2550 4800 3000 5550
+6 2550 5100 3000 5550
+6 2625 5175 2925 5475
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2775 5325 106 106 2775 5325 2881 5325
+-6
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 2775 5325 168 168 2775 5325 2700 5175
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2775 4800 2775 5175
+-6
+-6
+6 600 4500 2100 5025
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 2100 5025 2100 4500 600 4500 600 5025 2100 5025
+4 1 0 50 0 0 12 0.0000 4 135 1425 1350 4725 Invoke the loader's\001
+4 1 0 50 0 0 12 0.0000 4 180 1065 1350 4965 load() method\001
+-6
+6 5475 11775 6600 12075
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 6600 12075 6600 11775 5475 11775 5475 12075 6600 12075
+4 0 0 50 0 0 12 0.0000 4 135 960 5550 12000 Return value\001
+-6
+6 2775 7725 4425 8025
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 4425 8025 4425 7725 2775 7725 2775 8025 4425 8025
+4 1 0 50 0 0 12 0.0000 4 135 1530 3600 7950 Perform a "net load"\001
+-6
+6 2925 6900 4575 7350
+4 1 0 50 0 0 12 0.0000 4 180 1620 3750 7050 [Can another member\001
+4 1 0 50 0 0 12 0.0000 4 180 1185 3750 7290 load the value?]\001
+-6
+6 4500 7725 5550 8700
+6 4500 7725 5550 8025
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5550 8025 5550 7725 4500 7725 4500 8025 5550 8025
+4 1 0 50 0 0 12 0.0000 4 135 825 5025 7950 Return null\001
+-6
+6 4800 8025 5250 8700
+6 4800 8250 5250 8700
+6 4875 8325 5175 8625
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5025 8475 106 106 5025 8475 5131 8475
+-6
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5025 8475 168 168 5025 8475 4950 8325
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 5025 8025 5025 8325
+-6
+-6
+6 3825 5100 5325 5625
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5325 5625 5325 5100 3825 5100 3825 5625 5325 5625
+4 1 0 50 0 0 12 0.0000 4 180 1470 4575 5325 Request value from\001
+4 1 0 50 0 0 12 0.0000 4 135 1125 4575 5565 other members\001
+-6
+6 3825 4500 5625 4800
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5625 4800 5625 4500 3825 4500 3825 4800 5625 4800
+4 1 0 50 0 0 12 0.0000 4 135 1725 4725 4725 Perform a "net search"\001
+-6
+6 7275 5850 8625 6375
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 8625 6375 8625 5850 7275 5850 7275 6375 8625 6375
+4 1 0 50 0 0 12 0.0000 4 180 1110 7950 6075 Get ownership\001
+4 1 0 50 0 0 12 0.0000 4 180 585 7950 6315 of entry\001
+-6
+6 8175 6450 9825 6900
+4 1 0 50 0 0 12 0.0000 4 180 1605 9000 6600 [Does entry or region\001
+4 1 0 50 0 0 12 0.0000 4 180 1635 9000 6840 have a cache loader?]\001
+-6
+6 8400 7200 9900 7725
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 9900 7725 9900 7200 8400 7200 8400 7725 9900 7725
+4 1 0 50 0 0 12 0.0000 4 135 1425 9150 7425 Invoke the loader's\001
+4 1 0 50 0 0 12 0.0000 4 180 1065 9150 7665 load() method\001
+-6
+6 2700 5850 4500 6300
+4 1 0 50 0 0 12 0.0000 4 180 1725 3600 6000 [Does another member\001
+4 1 0 50 0 0 12 0.0000 4 180 1230 3600 6240 have the value?]\001
+-6
+6 6000 5475 6750 5925
+4 1 0 50 0 0 12 0.0000 4 180 720 6375 5625 [Is region\001
+4 1 0 50 0 0 12 0.0000 4 180 585 6375 5865 global?]\001
+-6
+6 4275 10575 5925 11100
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5925 11100 5925 10575 4275 10575 4275 11100 5925 11100
+4 1 0 50 0 0 12 0.0000 4 180 1440 5100 10800 Release ownership\001
+4 1 0 50 0 0 12 0.0000 4 180 585 5100 11040 of entry\001
+-6
+6 7575 10575 9225 11100
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 7575 11100 7575 10575 9225 10575 9225 11100 7575 11100
+4 1 0 50 0 0 12 0.0000 4 135 1530 8400 10800 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 1110 8400 11040 objectAdded()\001
+-6
+6 7425 9750 9375 10200
+6 7425 9750 9375 10200
+4 1 0 50 0 0 12 0.0000 4 180 1680 8400 10140 object event listener?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1815 8400 9900 [Does the entry have an\001
+-6
+-6
+6 6600 12675 7050 13125
+6 6675 12750 6975 13050
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6825 12900 106 106 6825 12900 6931 12900
+-6
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 6825 12900 168 168 6825 12900 6750 12750
+-6
+6 600 8925 2400 9375
+4 1 0 50 0 0 12 0.0000 4 180 1665 1500 9075 [Does the region have\001
+4 1 0 50 0 0 12 0.0000 4 180 1725 1500 9315 an eviction controller?]\001
+-6
+6 1500 5175 2400 5625
+4 1 0 50 0 0 12 0.0000 4 180 840 1950 5325 [Did loader\001
+4 1 0 50 0 0 12 0.0000 4 180 900 1950 5565 return null?]\001
+-6
+6 675 9900 2475 10500
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 2475 10500 2475 9900 675 9900 675 10500 2475 10500
+4 1 0 50 0 0 12 0.0000 4 180 1560 1575 10125 evict Entries making\001
+4 1 0 50 0 0 12 0.0000 4 180 1710 1575 10365 space for loaded Entry\001
+-6
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3000 300 106 106 3000 300 3106 300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 3000 975 3000 375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2850 2025 3000 1875 3150 2025 3000 2175 2850 2025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2250 2550 2400 2400 2550 2550 2400 2700 2250 2550
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2850 2025 2400 2025 2400 2400
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 3000 1875 3000 1575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 2250 2550 225 2550 225 11925 5475 11925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2325 9525 2475 9375 2625 9525 2475 9675 2325 9525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2325 9525 1575 9525 1575 9900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2325 10800 2475 10650 2625 10800 2475 10950 2325 10800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 1575 10500 1575 10800 2325 10800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 2625 9525 3000 9525 3000 10800 2625 10800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
+	0 0 1.00 120.00 120.00
+	 2475 10950 2475 11250 3675 11250 3675 9225 4575 9225
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 2475 8625 2475 9375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4425 6375 2475 6375 2475 8325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5100 11100 5100 11325 5925 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6225 10275 6600 10275 6600 11325 6225 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5925 11325 6075 11175 6225 11325 6075 11475 5925 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7425 11325 7275 11175 7125 11325 7275 11475 7425 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 8325 11100 8325 11325 7425 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7125 10275 6825 10275 6825 11325 7125 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6600 9675 6600 9825 6075 9825 6075 10125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6825 9675 6825 9825 7275 9825 7275 10125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7275 11475 7275 11775 6900 11775 6900 12525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3225 4125 3375 3975 3525 4125 3375 4275 3225 4125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+	 2700 3600 3375 3600 3375 3975
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2400 3600 2550 3450 2700 3600 2550 3750 2400 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2400 3600 1350 3600 1350 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 4575 6225 4575 5625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3525 4125 4125 4125 4125 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3675 3075 5100 3075 5100 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 6525 9225 6750 9225 6750 9675
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6825 12525 6825 12750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 6075 11475 6075 11775
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6075 12075 6075 12225 6675 12225 6675 12525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3375 3075 2550 3075 2550 3450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4500 7350 4650 7200 4800 7350 4650 7500 4500 7350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4500 7350 3600 7350 3600 7725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4800 7350 5025 7350 5025 7725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 3600 8025 3600 8325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3150 2025 3525 2025 3525 2550
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1200 5700 1350 5550 1500 5700 1350 5850 1200 5700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 1350 5550 1350 5025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
+	0 0 1.00 120.00 120.00
+	 1200 5700 975 5700 975 7725 1875 7725 1875 8325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 4575 4800 4575 5100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 1500 5700 3450 5700 3450 4650 3825 4650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 7950 6750 7950 6375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 8100 6900 9150 6900 9150 7200
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7800 6900 7950 6750 8100 6900 7950 7050 7800 6900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 9150 8250 7275 8250 7275 6900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 9300 7725 9300 8100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
+	0 0 1.00 120.00 120.00
+	 9300 8400 9300 8850 4125 8850 4125 8475 3750 8475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7800 6900 4650 6900 4650 7200
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4425 6375 4575 6225 4725 6375 4575 6525 4425 6375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5550 6075 5700 5925 5850 6075 5700 6225 5550 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5550 6075 5325 6075 5325 6900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 5
+	0 0 1.00 120.00 120.00
+	 5700 5925 5700 5700 5025 5700 5025 6375 4725 6375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 5850 6075 7275 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 9150 8250 9300 8100 9450 8250 9300 8400 9150 8250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5925 10275 6075 10125 6225 10275 6075 10425 5925 10275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5925 10275 5100 10275 5100 10575
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7425 10275 7275 10125 7125 10275 7275 10425 7425 10275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7425 10275 8325 10275 8325 10575
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6450 9675 6975 9675
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6525 12525 7125 12525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3375 3075 3525 2925 3675 3075 3525 3225 3375 3075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2550 2550 3525 2550 3525 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3225 4125 2775 4125 2775 4500
+4 1 0 50 0 0 12 0.0000 4 180 1665 2025 1875 [Is the entry defined?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1695 1500 2325 [Is the value present?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1785 8325 8175 [Did loader return null?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1350 5250 10200 [Is region global?]\001
+4 1 0 50 0 0 12 0.0000 4 180 2070 4650 2925 [Is region globally scoped?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1260 2625 3975 [Is region local?]\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/jcache-get-flow.pdf
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/jcache-get-flow.pdf b/geode-core/src/main/resources/javadoc-images/jcache-get-flow.pdf
new file mode 100644
index 0000000..5c6a4d0
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/jcache-get-flow.pdf differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/jcache-put-flow.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/jcache-put-flow.fig b/geode-core/src/main/resources/javadoc-images/jcache-put-flow.fig
new file mode 100644
index 0000000..6f3a5ca
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/jcache-put-flow.fig
@@ -0,0 +1,359 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 6600 12150 7500 12450
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 7500 12450 7500 12150 6600 12150 6600 12450 7500 12450
+4 1 0 50 0 0 12 0.0000 4 180 705 7050 12375 Entry put\001
+-6
+6 6825 12675 7275 13125
+6 6900 12750 7200 13050
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 7050 12900 106 106 7050 12900 7156 12900
+-6
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 7050 12900 168 168 7050 12900 6975 12750
+-6
+6 6075 7275 8025 7575
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 8025 7575 8025 7275 6075 7275 6075 7575 8025 7575
+4 1 0 50 0 0 12 0.0000 4 180 1860 7050 7500 Store key/value in region\001
+-6
+6 1875 2325 3375 2625
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3375 2625 3375 2325 1875 2325 1875 2625 3375 2625
+4 1 0 50 0 0 12 0.0000 4 180 1440 2625 2550 Define a new entry\001
+-6
+6 1125 3750 2475 4350
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 2400 4350 2400 3750 1125 3750 1125 4350 2400 4350
+4 1 0 50 0 0 12 0.0000 4 135 915 1800 3975 Use custom\001
+4 1 0 50 0 0 12 0.0000 4 180 1245 1800 4215 object attributes\001
+-6
+6 2700 3750 4425 4350
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 4425 4350 4425 3750 2700 3750 2700 4350 4425 4350
+4 1 0 50 0 0 12 0.0000 4 180 1395 3600 3975 Use default object\001
+4 1 0 50 0 0 12 0.0000 4 180 1635 3600 4215 attributes from region\001
+-6
+6 2925 750 4275 1350
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 4275 1350 4275 750 2925 750 2925 1350 4275 1350
+4 1 0 50 0 0 12 0.0000 4 180 1260 3600 1215 pair into a region\001
+4 1 0 50 0 0 12 0.0000 4 180 1155 3600 975 Put a key/value\001
+-6
+6 4575 375 10050 1200
+2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+	 4575 375 10050 375 10050 1200 4575 1200 4575 375
+4 0 0 50 0 0 13 0.0000 4 150 5085 4738 600 This flowchart describes the series of actions that are taken\001
+4 0 0 50 0 0 13 0.0000 4 195 3840 4738 840 when a key/value is place in a JCache region\001
+4 0 0 50 0 0 13 0.0000 6 210 5220 4738 1080 \001
+-6
+6 900 2775 2400 3225
+4 1 0 50 0 0 12 0.0000 4 180 1380 1650 3165 object attributes?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1395 1650 2925 [Did caller specify\001
+-6
+6 2250 8775 3900 9225
+4 1 0 50 0 0 12 0.0000 4 180 1155 3075 8925 [Was the value\001
+4 1 0 50 0 0 12 0.0000 4 180 1530 3075 9165 previously present?]\001
+-6
+6 1875 9750 3825 10275
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3825 10275 3825 9750 1875 9750 1875 10275 3825 10275
+4 1 0 50 0 0 12 0.0000 4 135 1530 2850 9975 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 1830 2850 10215 objectReplaced() mthod\001
+-6
+6 4200 9750 6000 10275
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 6000 10275 6000 9750 4200 9750 4200 10275 6000 10275
+4 1 0 50 0 0 12 0.0000 4 135 1530 5100 9975 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 1710 5100 10215 objectAdded() method\001
+-6
+6 7425 8925 8925 9225
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 8925 9225 8925 8925 7425 8925 7425 9225 8925 9225
+4 1 0 50 0 0 12 0.0000 4 180 1320 8175 9150 Distribute update\001
+-6
+6 8475 10050 9525 10350
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 9525 10350 9525 10050 8475 10050 8475 10350 9525 10350
+4 1 0 50 0 0 12 0.0000 4 135 1035 9000 10275 Wait for acks\001
+-6
+6 8325 11325 9975 11850
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 9975 11850 9975 11325 8325 11325 8325 11850 9975 11850
+4 1 0 50 0 0 12 0.0000 4 180 1440 9150 11550 Release ownership\001
+4 1 0 50 0 0 12 0.0000 4 180 585 9150 11790 of entry\001
+-6
+6 9150 10500 9900 10950
+4 1 0 50 0 0 12 0.0000 4 180 720 9525 10650 [Is region\001
+4 1 0 50 0 0 12 0.0000 4 180 585 9525 10890 global?]\001
+-6
+6 4350 2250 5850 2550
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5850 2550 5850 2250 4350 2250 4350 2550 5850 2550
+4 1 0 50 0 0 12 0.0000 4 180 1275 5100 2475 Replace an entry\001
+-6
+6 5175 5100 7125 5700
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5175 5700 5175 5100 7125 5100 7125 5700 5175 5700
+4 1 0 50 0 0 12 0.0000 4 135 1680 6150 5325 Invoke the controller's\001
+4 1 0 50 0 0 12 0.0000 4 180 1635 6150 5565 beforeObjectAdded()\001
+-6
+6 7425 5100 9375 5700
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 7425 5700 7425 5100 9375 5100 9375 5700 7425 5700
+4 1 0 50 0 0 12 0.0000 4 180 1845 8400 5565 beforeObjectReplaced()\001
+4 1 0 50 0 0 12 0.0000 4 135 1680 8400 5325 Invoke the controller's\001
+-6
+6 4575 2700 7575 3900
+6 5475 3300 7575 3600
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5475 3600 5475 3300 7575 3300 7575 3600 5475 3600
+4 1 0 50 0 0 12 0.0000 4 180 1965 6525 3525 Obtain ownership of entry\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5250 3000 5100 2850 4950 3000 5100 3150 5250 3000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5250 3000 6600 3000 6600 3300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5250 3750 5100 3600 4950 3750 5100 3900 5250 3750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
+	0 0 1.00 120.00 120.00
+	 5250 3750 6600 3750 6600 3600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 4950 3000 4575 3000 4575 3750 4950 3750
+4 1 0 50 0 0 12 0.0000 4 180 1350 6000 2850 [Is region global?]\001
+-6
+6 4350 8100 6300 8550
+6 4350 8100 6300 8550
+4 1 0 50 0 0 12 0.0000 4 180 1860 5325 8250 [Does this entry have an\001
+4 1 0 50 0 0 12 0.0000 4 180 1680 5325 8490 object event listener?]\001
+-6
+-6
+6 300 5550 2400 5850
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 2400 5850 2400 5550 300 5550 300 5850 2400 5850
+4 1 0 50 0 0 12 0.0000 4 180 1965 1350 5775 Obtain ownership of entry\001
+-6
+6 525 6300 2325 6750
+4 1 0 50 0 0 12 0.0000 4 180 1635 1425 6690 a eviction controller?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1665 1425 6450 [Does the region have\001
+-6
+6 450 7125 2250 7725
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 450 7725 450 7125 2250 7125 2250 7725 450 7725
+4 1 0 50 0 0 12 0.0000 4 180 1800 1350 7350 apply eviction algorithm\001
+4 1 0 50 0 0 12 0.0000 4 135 1560 1350 7590 to accomodate value\001
+-6
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3600 300 106 106 3600 300 3706 300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 6975 7575 6975 7875
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6750 7875 7200 7875
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7350 8625 7500 8475 7650 8625 7500 8775 7350 8625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7125 7875 7125 8100 7500 8100 7500 8475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7650 8625 8100 8625 8100 8925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7425 11025 7575 10875 7725 11025 7575 11175 7425 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7350 8625 7125 8625 7125 11025 7425 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7575 11175 7575 11400 7125 11400 7125 11775
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6750 11775 7275 11775
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 7050 11775 7050 12150
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 7050 12450 7050 12750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6825 7875 6825 8100 6375 8100 6375 8475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 6225 8625 6375 8475 6525 8625 6375 8775 6225 8625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 6225 8625 4050 8625 4050 9150
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3450 1950 2550 1950 2550 2325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 2550 3150 2550 2625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2400 4725 2550 4575 2700 4725 2550 4875 2400 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2400 3300 2550 3150 2700 3300 2550 3450 2400 3300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2700 3300 3450 3300 3450 3750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
+	0 0 1.00 120.00 120.00
+	 2400 4725 1725 4725 1725 4350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3450 4350 3450 4725 2700 4725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
+	0 0 1.00 120.00 120.00
+	 1725 3750 1725 3300 2400 3300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3450 1950 3600 1800 3750 1950 3600 2100 3450 1950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 3600 1800 3600 1350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3600 750 3600 375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3750 1950 5100 1950 5100 2250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3900 9300 4050 9150 4200 9300 4050 9450 3900 9300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3900 9300 2775 9300 2775 9750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4200 9300 5025 9300 5025 9750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3900 10725 4050 10575 4200 10725 4050 10875 3900 10725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2775 10275 2775 10725 3900 10725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5025 10275 5025 10725 4200 10725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6375 11175 6375 11400 6900 11400 6900 11775
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 6225 11025 6375 10875 6525 11025 6375 11175 6225 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6525 8625 6825 8625 6825 11025 6525 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4050 10875 4050 11025 6225 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7950 9750 8100 9600 8250 9750 8100 9900 7950 9750
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 8250 9750 9000 9750 9000 10050
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7950 9750 7575 9750 7575 10875
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 8850 11025 9000 10875 9150 11025 9000 11175 8850 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 9000 10350 9000 10875
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 9150 11025 9450 11025 9450 11325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 8850 11025 7725 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 9075 11850 9075 12375 8100 12375 8100 11025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 5100 2550 5100 2850
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4950 6150 5100 6000 5250 6150 5100 6300 4950 6150
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
+	0 0 1.00 120.00 120.00
+	 5250 6150 7275 6150 7275 6075
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4950 4425 5100 4275 5250 4425 5100 4575 4950 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5250 4425 7275 4425 7275 4650
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 4950 4425 4575 4425 4575 6150 4950 6150
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7425 4800 8325 4800 8325 5100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7125 4800 6225 4800 6225 5100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 8325 5700 8325 5925 7425 5925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 6225 5700 6225 5925 7125 5925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7425 5925 7275 5775 7125 5925 7275 6075 7425 5925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7425 4800 7275 4650 7125 4800 7275 4950 7425 4800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 5100 3900 5100 4275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 5100 6300 5100 6600 6975 6600 6975 7275
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
+	0 0 1.00 120.00 120.00
+	 2550 8250 2550 8550 3375 8550 3375 7425 6075 7425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 2550 4875 2550 5100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2400 5250 2550 5100 2700 5250 2550 5400 2400 5250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2400 5250 1050 5250 1050 5550
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2400 6000 2550 5850 2700 6000 2550 6150 2400 6000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
+	0 0 1.00 120.00 120.00
+	 2400 6000 1050 6000 1050 5850
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 2700 5250 3075 5250 3075 6000 2700 6000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 2550 6150 2550 6675
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2700 6825 2550 6675 2400 6825 2550 6975 2700 6825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2400 6825 1125 6825 1125 7125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 2700 6825 3150 6825 3150 8100 2700 8100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 3
+	0 0 1.00 120.00 120.00
+	 2400 8100 1125 8100 1125 7725
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2700 8100 2550 7950 2400 8100 2550 8250 2700 8100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 8100 9225 8100 9600
+4 1 0 50 0 0 12 0.0000 4 180 1995 8625 8325 [Is the region distributed?]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 7200 8475 [else]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 6750 8475 [else]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 3150 1800 [else]\001
+4 1 0 50 0 0 12 0.0000 4 180 1665 4725 1800 [Is the entry defined?]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 3000 3225 [else]\001
+4 1 0 50 0 0 12 0.0000 4 180 1230 8925 9600 [Wait for acks?]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 7650 9600 [else]\001
+4 1 0 50 0 0 12 0.0000 4 180 2715 8700 4725 [Was the value previously defined?]\001
+4 1 0 50 0 0 12 0.0000 4 180 3390 6825 4275 [Does the region have a capacity controller?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1350 1650 5100 [Is region global?]\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/jcache-put-flow.pdf
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/jcache-put-flow.pdf b/geode-core/src/main/resources/javadoc-images/jcache-put-flow.pdf
new file mode 100644
index 0000000..7fa4390
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/jcache-put-flow.pdf differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.fig b/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.fig
new file mode 100644
index 0000000..6bbff07
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.fig
@@ -0,0 +1,334 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 5625 3150 6975 3675
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5625 3675 5625 3150 6975 3150 6975 3675 5625 3675
+4 1 0 50 0 0 12 0.0000 4 180 1260 6300 3375 Define entry and\001
+4 1 0 50 0 0 12 0.0000 4 180 705 6300 3615 store key\001
+-6
+6 6675 4800 8325 5325
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 6675 5325 6675 4800 8325 4800 8325 5325 6675 5325
+4 1 0 50 0 0 12 0.0000 4 135 1530 7500 5025 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 915 7500 5265 keyAdded()\001
+-6
+6 6675 3825 8475 4275
+4 1 0 50 0 0 12 0.0000 4 180 1800 7575 3975 [Does the region have a\001
+4 1 0 50 0 0 12 0.0000 4 180 1680 7575 4215 region event listener?]\001
+-6
+6 2700 5925 4050 6450
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 4050 6450 4050 5925 2700 5925 2700 6450 4050 6450
+4 1 0 50 0 0 12 0.0000 4 180 645 3375 6390 in region\001
+4 1 0 50 0 0 12 0.0000 4 180 1170 3375 6150 Store key/value\001
+-6
+6 3825 11400 4575 11700
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3825 11700 3825 11400 4575 11400 4575 11700 3825 11700
+4 1 0 50 0 0 12 0.0000 4 135 690 4200 11625 Send ack\001
+-6
+6 3225 300 4875 1350
+6 3225 825 4875 1350
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 3300 1350 3300 825 4800 825 4800 1350 3300 1350
+4 1 0 50 0 0 12 0.0000 4 180 1215 4050 1050 An entry update\001
+4 1 0 50 0 0 12 0.0000 4 180 1545 4050 1290 message is received\001
+-6
+1 3 0 1 0 0 50 0 20 0.000 0 -0.0000 4050 450 106 106 4050 450 3944 450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4050 825 4050 525
+-6
+6 5100 375 10725 1200
+2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+	 5100 375 9900 375 9900 1200 5100 1200 5100 375
+4 0 0 50 0 0 12 0.0000 4 135 4560 5175 600 This flowchart describes the series of actions that are taken\001
+4 0 0 50 0 0 12 0.0000 6 195 5505 5175 1080 \001
+4 0 0 50 0 0 12 0.0000 4 180 4365 5175 840 when an JCache region entry update message is received.\001
+-6
+6 225 4050 2325 4650
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 2325 4650 2325 4050 225 4050 225 4650 2325 4650
+4 1 0 50 0 0 12 0.0000 4 135 1680 1275 4275 Invoke the controller's\001
+4 1 0 50 0 0 12 0.0000 4 180 1845 1275 4515 beforeObjectReplaced()\001
+-6
+6 2550 4050 4500 4650
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 4500 4650 4500 4050 2550 4050 2550 4650 4500 4650
+4 1 0 50 0 0 12 0.0000 4 135 1680 3525 4275 Invoke the controller's\001
+4 1 0 50 0 0 12 0.0000 4 180 1635 3525 4515 beforeObjectAdded()\001
+-6
+6 6525 6000 7875 6450
+4 1 0 50 0 0 12 0.0000 4 180 1260 7200 6150 [Does the region\001
+4 1 0 50 0 0 12 0.0000 4 180 1125 7200 6390 mirror objects?\001
+-6
+6 7500 6600 9150 7050
+4 1 0 50 0 0 12 0.0000 4 180 1515 8325 6750 [Does region have a\001
+4 1 0 50 0 0 12 0.0000 4 180 1500 8325 6990 capacitycontroller?]\001
+-6
+6 7725 7500 9750 8025
+6 7875 7575 9675 7725
+4 1 0 50 0 0 12 0.0000 4 135 1680 8775 7725 Invoke the controller's\001
+-6
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 9750 8025 9750 7500 7725 7500 7725 8025 9750 8025
+4 1 0 50 0 0 12 0.0000 4 180 1635 8775 7965 beforeObjectAdded()\001
+-6
+6 6525 8775 8175 9300
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 6600 9300 6600 8775 8100 8775 8100 9300 6600 9300
+4 1 0 50 0 0 12 0.0000 4 180 1530 7350 9000 (Request and) store\001
+4 1 0 50 0 0 12 0.0000 4 180 1095 7350 9240 value in region\001
+-6
+6 4575 12375 5025 13050
+6 4575 12600 5025 13050
+6 4650 12675 4950 12975
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 4800 12825 106 106 4800 12825 4906 12825
+-6
+1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4800 12825 168 168 4800 12825 4725 12675
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4800 12375 4800 12675
+-6
+6 6900 9900 9450 12000
+6 7200 10875 9150 11400
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 9150 10875 9150 11400 7200 11400 7200 10875 9150 10875
+4 1 0 50 0 0 12 0.0000 4 135 1530 8175 11100 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 1710 8175 11340 objectAdded() method\001
+-6
+6 7500 9900 9450 10350
+6 7500 9900 9450 10350
+4 1 0 50 0 0 12 0.0000 4 180 1860 8475 10050 [Does this entry have an\001
+4 1 0 50 0 0 12 0.0000 4 180 1680 8475 10290 object event listener?]\001
+-6
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7575 10425 7425 10275 7275 10425 7425 10575 7575 10425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7575 10425 8100 10425 8100 10875
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7575 11850 7425 11700 7275 11850 7425 12000 7575 11850
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 8100 11400 8100 11850 7575 11850
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7275 10425 6900 10425 6900 11850 7275 11850
+-6
+6 225 7650 1875 8100
+4 1 0 50 0 0 12 0.0000 4 180 1140 1050 7800 [Was the entry\001
+4 1 0 50 0 0 12 0.0000 4 180 1530 1050 8040 previously present?]\001
+-6
+6 150 8625 1950 9150
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 1950 9150 1950 8625 150 8625 150 9150 1950 9150
+4 1 0 50 0 0 12 0.0000 4 135 1530 1050 8850 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 1320 1050 9090 objectReplaced()\001
+-6
+6 2250 8625 3900 9150
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 2250 8625 2250 9150 3900 9150 3900 8625 2250 8625
+4 1 0 50 0 0 12 0.0000 4 135 1530 3075 8850 Invoke the listener's\001
+4 1 0 50 0 0 12 0.0000 4 180 1110 3075 9090 objectAdded()\001
+-6
+6 1200 6975 3150 7425
+6 1200 6975 3150 7425
+4 1 0 50 0 0 12 0.0000 4 180 1860 2175 7125 [Does this entry have an\001
+4 1 0 50 0 0 12 0.0000 4 180 1680 2175 7365 object event listener?]\001
+-6
+-6
+6 3675 10575 4725 11025
+4 1 0 50 0 0 12 0.0000 4 180 960 4200 10725 [Was an ack\001
+4 1 0 50 0 0 12 0.0000 4 180 810 4200 10965 requested]\001
+-6
+6 1650 2100 3300 2550
+4 1 0 50 0 0 12 0.0000 4 180 1605 2475 2250 [Does region have an\001
+4 1 0 50 0 0 12 0.0000 4 180 1500 2475 2490 eviction controller?]\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3900 2025 3375 2025 3375 2550
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5550 2700 5400 2550 5250 2700 5400 2850 5550 2700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4200 2025 5400 2025 5400 2550
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5550 2700 6375 2700 6375 3150
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 6525 4350 6375 4200 6225 4350 6375 4500 6525 4350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 6525 4350 7500 4350 7500 4800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 6375 4200 6375 3675
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 6525 5700 6375 5550 6225 5700 6375 5850 6525 5700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7500 5325 7500 5700 6525 5700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 6375 5850 6375 6450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6225 4350 5850 4350 5850 5700 6225 5700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 5250 2700 4800 2700 4800 10200
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3525 2700 3375 2550 3225 2700 3375 2850 3525 2700
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3225 2700 2400 2700 2400 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 6225 6600 5850 6600 5850 10350 4950 10350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 3375 6825 3375 6450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4950 10350 4800 10200 4650 10350 4800 10500 4950 10350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 4800 10500 4800 10950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4950 11100 4800 10950 4650 11100 4800 11250 4950 11100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4650 11100 4200 11100 4200 11400
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4950 12000 4800 11850 4650 12000 4800 12150 4950 12000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 4200 11700 4200 12000 4650 12000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 4950 11100 5325 11100 5325 12000 4950 12000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3900 2025 4050 1875 4200 2025 4050 2175 3900 2025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 4050 1875 4050 1350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3525 5475 3375 5325 3225 5475 3375 5625 3525 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2550 3525 2400 3375 2250 3525 2400 3675 2550 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2250 3525 1275 3525 1275 4050
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2550 3525 3450 3525 3450 4050
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2550 5025 2400 4875 2250 5025 2400 5175 2550 5025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 1275 4650 1275 5025 2250 5025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3525 4650 3525 5025 2550 5025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 3525 2700 4650 2700 4650 5475 3525 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2400 5175 2400 5475 3225 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 3375 5625 3375 5925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 6525 6600 6375 6450 6225 6600 6375 6750 6525 6600
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 6525 6600 7350 6600 7350 6975
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7500 7125 7350 6975 7200 7125 7350 7275 7500 7125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7500 7125 8700 7125 8700 7500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7500 8250 7350 8100 7200 8250 7350 8400 7500 8250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 8700 8025 8700 8250 7500 8250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 7200 7125 6900 7125 6900 8250 7200 8250
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 7350 8400 7350 8775
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 7350 9825 7350 9300
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4575 12375 5100 12375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 4800 12150 4800 12375
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 7050 9825 7575 9825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 7425 10275 7425 9825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 7125 9825 7125 10125 5850 10125
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 4
+	0 0 1.00 120.00 120.00
+	 5025 12375 5025 12150 7425 12150 7425 12000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 3225 7350 3225 6825
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3075 6825 3600 6825
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3075 7500 3225 7350 3375 7500 3225 7650 3075 7500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 3375 7500 4050 7500 4050 9900 3225 9900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1950 8175 2100 8025 2250 8175 2100 8325 1950 8175
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2250 8175 3000 8175 3000 8625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 1950 8175 1050 8175 1050 8625
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 1050 9150 1050 9375 1950 9375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3000 9150 3000 9375 2250 9375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1950 9375 2100 9225 2250 9375 2100 9525 1950 9375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2925 9900 3075 9750 3225 9900 3075 10050 2925 9900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 2100 9525 2100 9900 2925 9900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 5
+	0 0 1.00 120.00 120.00
+	 3450 6825 3450 7125 4350 7125 4350 10350 4650 10350
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3
+	0 0 1.00 120.00 120.00
+	 3075 7500 2100 7500 2100 8025
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4
+	0 0 1.00 120.00 120.00
+	 3075 10050 3075 12150 4650 12150 4650 12375
+4 1 0 50 0 0 12 0.0000 4 180 1815 6450 2550 [Is the region mirrored?]\001
+4 1 0 50 0 0 12 0.0000 4 180 1665 3000 1800 [Is the entry defined?]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 4500 1800 [else]\001
+4 1 0 50 0 0 12 0.0000 4 180 1680 1350 3375 [Is the entry present?]\001
+4 1 0 50 0 0 12 0.0000 4 180 435 3600 7425 [else]\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.pdf
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.pdf b/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.pdf
new file mode 100644
index 0000000..70c38ff
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/jcache-update-message-flow.pdf differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/merge-log-files.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/merge-log-files.fig b/geode-core/src/main/resources/javadoc-images/merge-log-files.fig
new file mode 100644
index 0000000..50dfcc0
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/merge-log-files.fig
@@ -0,0 +1,153 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3000 2775 6075 3600
+6 4725 2775 5325 3075
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4725 2775 5325 2775 5325 3075 4725 3075 4725 2775
+4 0 0 50 0 -1 12 0.0000 4 135 495 4800 3000 Reader\001
+-6
+6 5625 3300 6075 3600
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5625 3300 6075 3300 6075 3600 5625 3600 5625 3300
+4 0 0 50 0 -1 12 0.0000 4 135 270 5700 3525 File\001
+-6
+6 3000 3300 4200 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3150 3300 3150 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3300 3300 3300 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3450 3300 3450 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3600 3300 3600 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3750 3300 3750 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3900 3300 3900 3525
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4050 3300 4050 3525
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3000 3300 4200 3300 4200 3525 3000 3525 3000 3300
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5850 3300 5325 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4725 2925 4200 3375
+-6
+6 3000 3750 6075 4575
+6 4725 3750 5325 4050
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4725 3750 5325 3750 5325 4050 4725 4050 4725 3750
+4 0 0 50 0 -1 12 0.0000 4 135 495 4800 3975 Reader\001
+-6
+6 5625 4275 6075 4575
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5625 4275 6075 4275 6075 4575 5625 4575 5625 4275
+4 0 0 50 0 -1 12 0.0000 4 135 270 5700 4500 File\001
+-6
+6 3000 4275 4200 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3150 4275 3150 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3300 4275 3300 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3450 4275 3450 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3600 4275 3600 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3750 4275 3750 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3900 4275 3900 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4050 4275 4050 4500
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3000 4275 4200 4275 4200 4500 3000 4500 3000 4275
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5850 4275 5325 3900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4725 3900 4200 4350
+-6
+6 3000 4725 6075 5550
+6 4725 4725 5325 5025
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4725 4725 5325 4725 5325 5025 4725 5025 4725 4725
+4 0 0 50 0 -1 12 0.0000 4 135 495 4800 4950 Reader\001
+-6
+6 5625 5250 6075 5550
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5625 5250 6075 5250 6075 5550 5625 5550 5625 5250
+4 0 0 50 0 -1 12 0.0000 4 135 270 5700 5475 File\001
+-6
+6 3000 5250 4200 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3150 5250 3150 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3300 5250 3300 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3450 5250 3450 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3600 5250 3600 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3750 5250 3750 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3900 5250 3900 5475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4050 5250 4050 5475
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3000 5250 4200 5250 4200 5475 3000 5475 3000 5250
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5850 5250 5325 4875
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4725 4875 4200 5325
+-6
+6 1050 4275 1650 4575
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1050 4275 1650 4275 1650 4575 1050 4575 1050 4275
+4 0 0 50 0 -1 12 0.0000 4 135 435 1125 4500 Sorter\001
+-6
+6 900 5700 1950 6000
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 900 5700 1950 5700 1950 6000 900 6000 900 5700
+4 0 0 50 0 -1 12 0.0000 4 180 870 975 5925 Merged File\001
+-6
+6 2325 5925 5400 6375
+4 0 0 50 0 1 12 0.0000 4 180 3045 2325 6315 keep the VM's heap from getting too large.\001
+4 0 0 50 0 1 12 0.0000 4 180 2685 2325 6075 The size of the queues are bounded to\001
+-6
+6 1650 3600 2175 3900
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1650 3600 2175 3600 2175 3900 1650 3900 1650 3600
+4 0 0 50 0 -1 12 0.0000 4 180 390 1725 3825 Entry\001
+-6
+6 3900 2775 4425 3075
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3900 2775 4425 2775 4425 3075 3900 3075 3900 2775
+4 0 0 50 0 -1 12 0.0000 4 180 390 3975 3000 Entry\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3000 3375 1650 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3000 4425 1650 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3000 5325 1650 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 1350 4575 1350 5700

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/merge-log-files.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/merge-log-files.gif b/geode-core/src/main/resources/javadoc-images/merge-log-files.gif
new file mode 100644
index 0000000..59b9ec5
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/merge-log-files.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/partitioned-regions.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/partitioned-regions.fig b/geode-core/src/main/resources/javadoc-images/partitioned-regions.fig
new file mode 100644
index 0000000..bef603d
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/partitioned-regions.fig
@@ -0,0 +1,255 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 8925 1800 11175 4125
+6 9150 2250 10950 3675
+6 9225 2775 9975 3450
+2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+	 9225 2775 9975 2775 9975 3450 9225 3450 9225 2775
+4 0 0 50 -1 0 12 0.0000 4 135 615 9300 3000 Bucket0\001
+-6
+6 10125 2775 10875 3450
+2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+	 10125 2775 10875 2775 10875 3450 10125 3450 10125 2775
+4 0 0 50 -1 0 12 0.0000 4 135 615 10200 3000 Bucket2\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9150 2250 10950 2250 10950 3675 9150 3675 9150 2250
+4 0 0 50 -1 0 12 0.0000 4 135 735 9675 2475 Partition1\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8925 1800 11175 1800 11175 4125 8925 4125 8925 1800
+4 0 0 50 -1 0 12 0.0000 4 135 1350 9225 2025 Cache Server VM\001
+4 0 0 50 -1 0 12 0.0000 4 135 2070 9075 3975 maxPartitionedData = 1000\001
+-6
+6 6750 4200 7950 4875
+2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 7875 4800 6825 4800 6825 4275 7875 4275 7875 4800
+4 1 0 50 -1 0 12 0.0000 4 135 855 7350 4500 Distributed\001
+4 1 0 50 -1 0 12 0.0000 4 180 570 7350 4725 System\001
+-6
+6 4200 1800 8250 3975
+6 6225 2175 8175 3600
+6 6300 2475 7125 3525
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6525 2775 6825 2775 6825 3225 6525 3225 6525 2775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6675 2775 6675 3225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 2850 6825 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 2925 6825 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 3000 6825 3000
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 3075 6825 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 3150 6825 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6300 2475 7125 2475 7125 3525 6300 3525 6300 2475
+4 0 0 50 -1 0 12 0.0000 4 135 615 6375 2700 Bucket0\001
+4 0 0 50 -1 0 12 0.0000 4 135 690 6375 3450 size = 20\001
+-6
+6 7275 2475 8100 3525
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7500 2775 7800 2775 7800 3225 7500 3225 7500 2775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7650 2775 7650 3225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 2850 7800 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 2925 7800 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 3000 7800 3000
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 3075 7800 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 3150 7800 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7275 2475 8100 2475 8100 3525 7275 3525 7275 2475
+4 0 0 50 -1 0 12 0.0000 4 135 615 7350 2700 Bucket2\001
+4 0 0 50 -1 0 12 0.0000 4 135 690 7350 3450 size = 45\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6225 2175 8175 2175 8175 3600 6225 3600 6225 2175
+4 0 0 50 -1 0 12 0.0000 4 135 735 6345 2400 Partition1\001
+-6
+6 4350 3150 5850 3825
+6 4350 3150 5850 3825
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5100 3525 5100 3750
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4650 3525 5550 3525 5550 3750 4650 3750 4650 3525
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4350 3150 5850 3150 5850 3825 4350 3825 4350 3150
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4875 3525 4875 3750
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5325 3525 5325 3750
+4 0 0 50 -1 0 12 0.0000 4 180 1230 4485 3375 BucketDirectory\001
+-6
+-6
+6 4800 2325 5250 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4800 2475 5250 2475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4800 2625 5250 2625
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4800 2775 5250 2775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5025 2325 5025 2925
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4800 2325 5250 2325 5250 2925 4800 2925 4800 2325
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4200 1800 8250 1800 8250 3975 4200 3975 4200 1800
+4 0 0 50 -1 0 12 0.0000 4 180 1200 5550 2025 Application VM\001
+4 0 0 50 -1 0 12 0.0000 4 135 2070 6000 3825 maxPartitionedData = 1000\001
+-6
+6 5400 5250 8250 7425
+6 6225 5625 8175 7050
+6 6300 5925 7125 6975
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6525 6225 6825 6225 6825 6675 6525 6675 6525 6225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6675 6225 6675 6675
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 6300 6825 6300
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 6375 6825 6375
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 6450 6825 6450
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 6525 6825 6525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6525 6600 6825 6600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6300 5925 7125 5925 7125 6975 6300 6975 6300 5925
+4 0 0 50 -1 0 12 0.0000 4 135 615 6375 6150 Bucket1\001
+4 0 0 50 -1 0 12 0.0000 4 135 690 6375 6900 size = 34\001
+-6
+6 7275 5925 8100 6975
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7500 6225 7800 6225 7800 6675 7500 6675 7500 6225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7650 6225 7650 6675
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 6300 7800 6300
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 6375 7800 6375
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 6450 7800 6450
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 6525 7800 6525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 6600 7800 6600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7275 5925 8100 5925 8100 6975 7275 6975 7275 5925
+4 0 0 50 -1 0 12 0.0000 4 135 615 7350 6150 Bucket3\001
+4 0 0 50 -1 0 12 0.0000 4 135 690 7350 6900 size = 12\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6225 5625 8175 5625 8175 7050 6225 7050 6225 5625
+4 0 0 50 -1 0 12 0.0000 4 135 735 6345 5850 Partition2\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5400 5250 8250 5250 8250 7425 5400 7425 5400 5250
+4 0 0 50 -1 0 12 0.0000 4 135 1350 5550 5475 Cache Server VM\001
+4 0 0 50 -1 0 12 0.0000 4 135 2070 6000 7275 maxPartitionedData = 1000\001
+-6
+6 2325 4125 4875 5775
+6 3225 4575 4725 5250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3975 4950 3975 5175
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3525 4950 4425 4950 4425 5175 3525 5175 3525 4950
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3225 4575 4725 4575 4725 5250 3225 5250 3225 4575
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3750 4950 3750 5175
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4200 4950 4200 5175
+4 0 0 50 -1 0 12 0.0000 4 180 1230 3360 4800 BucketDirectory\001
+-6
+6 2625 4575 3075 5175
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4725 3075 4725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 4875 3075 4875
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2625 5025 3075 5025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2850 4575 2850 5175
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2625 4575 3075 4575 3075 5175 2625 5175 2625 4575
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2325 4125 4875 4125 4875 5775 2325 5775 2325 4125
+4 0 0 50 -1 0 12 0.0000 4 180 1200 2475 4350 Application VM\001
+4 0 0 50 -1 0 12 0.0000 4 135 1800 2550 5550 maxPartitionedData = 0\001
+-6
+6 8925 5100 11175 7425
+6 9150 5550 10950 6975
+6 9225 6075 9975 6750
+2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+	 9225 6075 9975 6075 9975 6750 9225 6750 9225 6075
+4 0 0 50 -1 0 12 0.0000 4 135 615 9300 6300 Bucket1\001
+-6
+6 10125 6075 10875 6750
+2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+	 10125 6075 10875 6075 10875 6750 10125 6750 10125 6075
+4 0 0 50 -1 0 12 0.0000 4 135 615 10200 6300 Bucket3\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9150 5550 10950 5550 10950 6975 9150 6975 9150 5550
+4 0 0 50 -1 0 12 0.0000 4 135 735 9675 5775 Partition2\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8925 5100 11175 5100 11175 7425 8925 7425 8925 5100
+4 0 0 50 -1 0 12 0.0000 4 135 1350 9225 5325 Cache Server VM\001
+4 0 0 50 -1 0 12 0.0000 4 135 2070 9075 7275 maxPartitionedData = 1000\001
+-6
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 6825 4500 4875 4500
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7275 4275 7275 3975
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7275 4800 7275 5250
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7875 4350 8925 3825
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7875 4800 8925 5400
+2 1 1 2 0 7 50 -1 -1 4.500 0 0 -1 0 0 2
+	 8475 975 8475 8175
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4725 3600 6300 2625
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4950 3600 6525 5925
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5400 3600 7650 5925
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5175 3600 7275 2700
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3675 5025 6300 2850
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3825 5100 6300 6825
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4350 5100 7275 6675
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4125 5025 7275 3000
+4 0 0 50 -1 0 12 0.0000 4 135 735 7650 1125 Machine1\001
+4 0 0 50 -1 0 12 0.0000 4 135 735 8625 1125 Machine2\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/partitioned-regions.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/partitioned-regions.gif b/geode-core/src/main/resources/javadoc-images/partitioned-regions.gif
new file mode 100644
index 0000000..b3a2baf
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/partitioned-regions.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/turks.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/turks.fig b/geode-core/src/main/resources/javadoc-images/turks.fig
new file mode 100644
index 0000000..f45177c
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/turks.fig
@@ -0,0 +1,128 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3825 2025 5025 3225
+6 4050 2625 4800 3150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4050 3150 4800 3150 4800 2625 4050 2625 4050 3150
+4 1 0 50 -1 -1 12 0.0000 4 135 540 4425 2850 Current\001
+4 1 0 50 -1 -1 12 0.0000 4 135 555 4425 3090 Grantor\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3825 2025 5025 2025 5025 3225 3825 3225 3825 2025
+4 0 0 50 -1 -1 12 0.0000 4 180 945 3975 2250 pippin:12002\001
+-6
+6 5625 2025 6825 3225
+6 5925 2550 6525 3000
+4 1 0 50 -1 -1 12 0.0000 4 180 495 6225 2700 Young\001
+4 1 0 50 -1 -1 12 0.0000 4 135 480 6225 2940 Turk 1\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5850 2475 6600 2475 6600 3075 5850 3075 5850 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5625 2025 6825 2025 6825 3225 5625 3225 5625 2025
+4 0 0 50 -1 -1 12 0.0000 4 180 945 5775 2250 pippin:12003\001
+-6
+6 7425 2025 8625 3225
+6 7725 2550 8325 3000
+4 1 0 50 -1 -1 12 0.0000 4 180 495 8025 2700 Young\001
+4 1 0 50 -1 -1 12 0.0000 4 135 480 8025 2940 Turk 2\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7650 2475 8400 2475 8400 3075 7650 3075 7650 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7425 2025 8625 2025 8625 3225 7425 3225 7425 2025
+4 0 0 50 -1 -1 12 0.0000 4 180 945 7575 2250 pippin:12004\001
+-6
+6 9225 2025 10425 3225
+6 9525 2550 10125 3000
+4 1 0 50 -1 -1 12 0.0000 4 180 495 9825 2700 Young\001
+4 1 0 50 -1 -1 12 0.0000 4 135 480 9825 2940 Turk 3\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9450 2475 10200 2475 10200 3075 9450 3075 9450 2475
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9225 2025 10425 2025 10425 3225 9225 3225 9225 2025
+4 0 0 50 -1 -1 12 0.0000 4 180 945 9375 2250 pippin:12005\001
+-6
+6 1050 2100 3075 2925
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1050 2925 3075 2925 3075 2100 1050 2100 1050 2925
+4 0 0 50 -1 -1 12 0.0000 4 180 1860 1125 2850 "locks1" -> pippin:12005\001
+4 0 0 50 -1 -1 16 0.0000 4 165 510 1725 2400 Elder\001
+-6
+6 3825 4125 5025 5325
+6 4050 4725 4800 5250
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4050 5250 4800 5250 4800 4725 4050 4725 4050 5250
+4 1 0 50 -1 -1 12 0.0000 4 135 540 4425 4950 Current\001
+4 1 0 50 -1 -1 12 0.0000 4 135 555 4425 5190 Grantor\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3825 4125 5025 4125 5025 5325 3825 5325 3825 4125
+4 0 0 50 -1 -1 12 0.0000 4 180 945 3975 4350 pippin:12002\001
+-6
+6 5625 4125 6825 5325
+6 5925 4650 6525 5100
+4 1 0 50 -1 -1 12 0.0000 4 180 495 6225 4800 Young\001
+4 1 0 50 -1 -1 12 0.0000 4 135 480 6225 5040 Turk 1\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5850 4575 6600 4575 6600 5175 5850 5175 5850 4575
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 5625 4125 6825 4125 6825 5325 5625 5325 5625 4125
+4 0 0 50 -1 -1 12 0.0000 4 180 945 5775 4350 pippin:12003\001
+-6
+6 9225 4125 10425 5325
+6 9525 4650 10125 5100
+4 1 0 50 -1 -1 12 0.0000 4 180 495 9825 4800 Young\001
+4 1 0 50 -1 -1 12 0.0000 4 135 480 9825 5040 Turk 3\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9450 4575 10200 4575 10200 5175 9450 5175 9450 4575
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9225 4125 10425 4125 10425 5325 9225 5325 9225 4125
+4 0 0 50 -1 -1 12 0.0000 4 180 945 9375 4350 pippin:12005\001
+-6
+6 1050 4200 3075 5025
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1050 5025 3075 5025 3075 4200 1050 4200 1050 5025
+4 0 0 50 -1 -1 12 0.0000 4 180 1860 1125 4950 "locks1" -> pippin:12005\001
+4 0 0 50 -1 -1 16 0.0000 4 165 510 1725 4500 Elder\001
+-6
+6 7500 4425 8550 4875
+4 1 0 50 -1 1 12 0.0000 4 180 960 8025 4575 pippin:12004\001
+4 1 0 50 -1 1 12 0.0000 4 135 555 8025 4815 crashes\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
+	 5475 1950 5475 1800 8775 1800 8775 1950
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5850 2850 4800 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 7650 2850 6600 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 9450 2850 8400 2850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5850 4950 4800 4950
+2 1 0 5 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 975 3675 10650 3675
+4 0 0 50 -1 1 12 0.0000 4 180 3045 5625 1650 Have given up dreams of bcoming grantor\001
+4 0 0 50 -1 -1 12 0.0000 4 135 285 5175 2700 xfer\001
+4 0 0 50 -1 -1 12 0.0000 4 135 285 7050 2700 xfer\001
+4 0 0 50 -1 -1 12 0.0000 4 135 285 8775 2700 xfer\001
+4 0 0 50 -1 -1 12 0.0000 4 135 285 5175 4800 xfer\001
+4 0 0 50 -1 1 12 0.0000 4 180 1245 5775 5700 Stops xfer. knows\001
+4 0 0 50 -1 1 12 0.0000 4 135 1035 5775 5940 it will never be\001
+4 0 0 50 -1 1 12 0.0000 4 150 555 5775 6180 grantor\001
+4 0 0 50 -1 1 12 0.0000 4 180 1275 9300 5700 Initiates recovery,\001
+4 0 0 50 -1 1 12 0.0000 4 180 1215 9300 5940 becomes grantor\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/turks.jpg
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/turks.jpg b/geode-core/src/main/resources/javadoc-images/turks.jpg
new file mode 100644
index 0000000..5c66385
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/turks.jpg differ


[05/45] incubator-geode git commit: GEODE-982: refactor off-heap

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkJUnitTest.java
deleted file mode 100644
index 9271b53..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkJUnitTest.java
+++ /dev/null
@@ -1,902 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.gemstone.gemfire.internal.offheap;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.LogWriter;
-import com.gemstone.gemfire.compression.Compressor;
-import com.gemstone.gemfire.internal.DSCODE;
-import com.gemstone.gemfire.internal.HeapDataOutputStream;
-import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BytesAndBitsForCompactor;
-import com.gemstone.gemfire.internal.cache.CachePerfStats;
-import com.gemstone.gemfire.internal.cache.EntryEventImpl;
-import com.gemstone.gemfire.internal.cache.RegionEntryContext;
-import com.gemstone.gemfire.internal.offheap.MemoryBlock.State;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class ObjectChunkJUnitTest extends AbstractStoredObjectTestBase {
-
-  private MemoryAllocator ma;
-
-  static {
-    ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
-  }
-
-  @Before
-  public void setUp() {
-    OutOfOffHeapMemoryListener ooohml = mock(OutOfOffHeapMemoryListener.class);
-    OffHeapMemoryStats stats = mock(OffHeapMemoryStats.class);
-    LogWriter lw = mock(LogWriter.class);
-
-    ma = SimpleMemoryAllocatorImpl.create(ooohml, stats, lw, 3, OffHeapStorage.MIN_SLAB_SIZE * 3, OffHeapStorage.MIN_SLAB_SIZE);
-  }
-
-  @After
-  public void tearDown() {
-    SimpleMemoryAllocatorImpl.freeOffHeapMemory();
-  }
-
-  @Override
-  public Object getValue() {
-    return Long.valueOf(Long.MAX_VALUE);
-  }
-
-  @Override
-  public byte[] getValueAsByteArray() {
-    return convertValueToByteArray(getValue());
-  }
-
-  private byte[] convertValueToByteArray(Object value) {
-    return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong((Long) value).array();
-  }
-
-  @Override
-  public Object convertByteArrayToObject(byte[] valueInByteArray) {
-    return ByteBuffer.wrap(valueInByteArray).getLong();
-  }
-
-  @Override
-  public Object convertSerializedByteArrayToObject(byte[] valueInSerializedByteArray) {
-    return EntryEventImpl.deserialize(valueInSerializedByteArray);
-  }
-
-  @Override
-  public ObjectChunk createValueAsUnserializedStoredObject(Object value) {
-    byte[] valueInByteArray;
-    if (value instanceof Long) {
-      valueInByteArray = convertValueToByteArray(value);
-    } else {
-      valueInByteArray = (byte[]) value;
-    }
-
-    boolean isSerialized = false;
-    boolean isCompressed = false;
-
-    return createChunk(valueInByteArray, isSerialized, isCompressed);
-  }
-
-  @Override
-  public ObjectChunk createValueAsSerializedStoredObject(Object value) {
-    byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
-
-    boolean isSerialized = true;
-    boolean isCompressed = false;
-
-    return createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
-  }
-
-  private ObjectChunk createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(v, isSerialized, isCompressed);
-    return chunk;
-  }
-
-  @Test
-  public void chunkCanBeCreatedFromAnotherChunk() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    ObjectChunk newChunk = new ObjectChunk(chunk);
-
-    assertNotNull(newChunk);
-    assertThat(newChunk.getMemoryAddress()).isEqualTo(chunk.getMemoryAddress());
-
-    chunk.release();
-  }
-
-  @Test
-  public void chunkCanBeCreatedWithOnlyMemoryAddress() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    ObjectChunk newChunk = new ObjectChunk(chunk.getMemoryAddress());
-
-    assertNotNull(newChunk);
-    assertThat(newChunk.getMemoryAddress()).isEqualTo(chunk.getMemoryAddress());
-
-    chunk.release();
-  }
-
-  @Test
-  public void chunkSliceCanBeCreatedFromAnotherChunk() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    int position = 1;
-    int end = 2;
-
-    ObjectChunk newChunk = (ObjectChunk) chunk.slice(position, end);
-
-    assertNotNull(newChunk);
-    assertThat(newChunk.getClass()).isEqualTo(ObjectChunkSlice.class);
-    assertThat(newChunk.getMemoryAddress()).isEqualTo(chunk.getMemoryAddress());
-
-    chunk.release();
-  }
-
-  @Test
-  public void fillSerializedValueShouldFillWrapperWithSerializedValueIfValueIsSerialized() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    // mock the things
-    BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
-
-    byte userBits = 0;
-    byte serializedUserBits = 1;
-    chunk.fillSerializedValue(wrapper, userBits);
-
-    verify(wrapper, times(1)).setChunkData(chunk, serializedUserBits);
-
-    chunk.release();
-  }
-
-  @Test
-  public void fillSerializedValueShouldFillWrapperWithDeserializedValueIfValueIsNotSerialized() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    // mock the things
-    BytesAndBitsForCompactor wrapper = mock(BytesAndBitsForCompactor.class);
-
-    byte userBits = 1;
-    chunk.fillSerializedValue(wrapper, userBits);
-
-    verify(wrapper, times(1)).setChunkData(chunk, userBits);
-
-    chunk.release();
-  }
-
-  @Test
-  public void getShortClassNameShouldReturnShortClassName() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.getShortClassName()).isEqualTo("ObjectChunk");
-
-    chunk.release();
-  }
-
-  @Test
-  public void chunksAreEqualsOnlyByAddress() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    ObjectChunk newChunk = new ObjectChunk(chunk.getMemoryAddress());
-    assertThat(chunk.equals(newChunk)).isTrue();
-
-    ObjectChunk chunkWithSameValue = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.equals(chunkWithSameValue)).isFalse();
-
-    Object someObject = getValue();
-    assertThat(chunk.equals(someObject)).isFalse();
-
-    chunk.release();
-    chunkWithSameValue.release();
-  }
-
-  @Test
-  public void chunksShouldBeComparedBySize() {
-    ObjectChunk chunk1 = createValueAsSerializedStoredObject(getValue());
-
-    ObjectChunk chunk2 = chunk1;
-    assertThat(chunk1.compareTo(chunk2)).isEqualTo(0);
-
-    ObjectChunk chunkWithSameValue = createValueAsSerializedStoredObject(getValue());
-    assertThat(chunk1.compareTo(chunkWithSameValue)).isEqualTo(Long.signum(chunk1.getMemoryAddress() - chunkWithSameValue.getMemoryAddress()));
-
-    ObjectChunk chunk3 = createValueAsSerializedStoredObject(Long.MAX_VALUE);
-    ObjectChunk chunk4 = createValueAsSerializedStoredObject(Long.MAX_VALUE);
-
-    int newSizeForChunk3 = 2;
-    int newSizeForChunk4 = 3;
-
-    assertThat(chunk3.compareTo(chunk4)).isEqualTo(Integer.signum(newSizeForChunk3 - newSizeForChunk4));
-
-    chunk1.release();
-    chunk4.release();
-  }
-
-  @Test
-  public void setSerializedShouldSetTheSerializedBit() {
-    Object regionEntryValue = getValue();
-    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
-
-    boolean isSerialized = false;
-    boolean isCompressed = false;
-
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
-
-    int headerBeforeSerializedBitSet = UnsafeMemoryChunk.readAbsoluteIntVolatile(chunk.getMemoryAddress() + ObjectChunk.REF_COUNT_OFFSET);
-
-    assertThat(chunk.isSerialized()).isFalse();
-
-    chunk.setSerialized(true); // set to true
-
-    assertThat(chunk.isSerialized()).isTrue();
-
-    int headerAfterSerializedBitSet = UnsafeMemoryChunk.readAbsoluteIntVolatile(chunk.getMemoryAddress() + ObjectChunk.REF_COUNT_OFFSET);
-
-    assertThat(headerAfterSerializedBitSet).isEqualTo(headerBeforeSerializedBitSet | ObjectChunk.IS_SERIALIZED_BIT);
-
-    chunk.release();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void setSerialziedShouldThrowExceptionIfChunkIsAlreadyReleased() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.release();
-    chunk.setSerialized(true);
-
-    chunk.release();
-  }
-
-  @Test
-  public void setCompressedShouldSetTheCompressedBit() {
-    Object regionEntryValue = getValue();
-    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
-
-    boolean isSerialized = false;
-    boolean isCompressed = false;
-
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
-
-    int headerBeforeCompressedBitSet = UnsafeMemoryChunk.readAbsoluteIntVolatile(chunk.getMemoryAddress() + ObjectChunk.REF_COUNT_OFFSET);
-
-    assertThat(chunk.isCompressed()).isFalse();
-
-    chunk.setCompressed(true); // set to true
-
-    assertThat(chunk.isCompressed()).isTrue();
-
-    int headerAfterCompressedBitSet = UnsafeMemoryChunk.readAbsoluteIntVolatile(chunk.getMemoryAddress() + ObjectChunk.REF_COUNT_OFFSET);
-
-    assertThat(headerAfterCompressedBitSet).isEqualTo(headerBeforeCompressedBitSet | ObjectChunk.IS_COMPRESSED_BIT);
-
-    chunk.release();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void setCompressedShouldThrowExceptionIfChunkIsAlreadyReleased() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.release();
-    chunk.setCompressed(true);
-
-    chunk.release();
-  }
-
-  @Test
-  public void setDataSizeShouldSetTheDataSizeBits() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    int beforeSize = chunk.getDataSize();
-
-    chunk.setDataSize(2);
-
-    int afterSize = chunk.getDataSize();
-
-    assertThat(afterSize).isEqualTo(2);
-    assertThat(afterSize).isNotEqualTo(beforeSize);
-
-    chunk.release();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void setDataSizeShouldThrowExceptionIfChunkIsAlreadyReleased() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.release();
-    chunk.setDataSize(1);
-
-    chunk.release();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void initializeUseCountShouldThrowIllegalStateExceptionIfChunkIsAlreadyRetained() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.retain();
-    chunk.initializeUseCount();
-
-    chunk.release();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void initializeUseCountShouldThrowIllegalStateExceptionIfChunkIsAlreadyReleased() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.release();
-    chunk.initializeUseCount();
-
-    chunk.release();
-  }
-
-  @Test
-  public void isSerializedPdxInstanceShouldReturnTrueIfItsPDXInstance() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    byte[] serailizedValue = chunk.getSerializedValue();
-    serailizedValue[0] = DSCODE.PDX;
-    chunk.setSerializedValue(serailizedValue);
-
-    assertThat(chunk.isSerializedPdxInstance()).isTrue();
-
-    serailizedValue = chunk.getSerializedValue();
-    serailizedValue[0] = DSCODE.PDX_ENUM;
-    chunk.setSerializedValue(serailizedValue);
-
-    assertThat(chunk.isSerializedPdxInstance()).isTrue();
-
-    serailizedValue = chunk.getSerializedValue();
-    serailizedValue[0] = DSCODE.PDX_INLINE_ENUM;
-    chunk.setSerializedValue(serailizedValue);
-
-    assertThat(chunk.isSerializedPdxInstance()).isTrue();
-
-    chunk.release();
-  }
-
-  @Test
-  public void isSerializedPdxInstanceShouldReturnFalseIfItsNotPDXInstance() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    assertThat(chunk.isSerializedPdxInstance()).isFalse();
-
-    chunk.release();
-  }
-
-  @Test
-  public void checkDataEqualsByChunk() {
-    ObjectChunk chunk1 = createValueAsSerializedStoredObject(getValue());
-    ObjectChunk sameAsChunk1 = chunk1;
-
-    assertThat(chunk1.checkDataEquals(sameAsChunk1)).isTrue();
-
-    ObjectChunk unserializedChunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk1.checkDataEquals(unserializedChunk)).isFalse();
-
-    ObjectChunk chunkDifferBySize = createValueAsSerializedStoredObject(getValue());
-    chunkDifferBySize.setSize(0);
-    assertThat(chunk1.checkDataEquals(chunkDifferBySize)).isFalse();
-
-    ObjectChunk chunkDifferByValue = createValueAsSerializedStoredObject(Long.MAX_VALUE - 1);
-    assertThat(chunk1.checkDataEquals(chunkDifferByValue)).isFalse();
-
-    ObjectChunk newChunk1 = createValueAsSerializedStoredObject(getValue());
-    assertThat(chunk1.checkDataEquals(newChunk1)).isTrue();
-
-    chunk1.release();
-    unserializedChunk.release();
-    chunkDifferBySize.release();
-    chunkDifferByValue.release();
-    newChunk1.release();
-  }
-
-  @Test
-  public void checkDataEqualsBySerializedValue() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    assertThat(chunk.checkDataEquals(new byte[1])).isFalse();
-
-    ObjectChunk chunkDifferByValue = createValueAsSerializedStoredObject(Long.MAX_VALUE - 1);
-    assertThat(chunk.checkDataEquals(chunkDifferByValue.getSerializedValue())).isFalse();
-
-    ObjectChunk newChunk = createValueAsSerializedStoredObject(getValue());
-    assertThat(chunk.checkDataEquals(newChunk.getSerializedValue())).isTrue();
-
-    chunk.release();
-    chunkDifferByValue.release();
-    newChunk.release();
-  }
-
-  @Test
-  public void getDecompressedBytesShouldReturnDecompressedBytesIfCompressed() {
-    Object regionEntryValue = getValue();
-    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
-
-    boolean isSerialized = true;
-    boolean isCompressed = true;
-
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
-
-    RegionEntryContext regionContext = mock(RegionEntryContext.class);
-    CachePerfStats cacheStats = mock(CachePerfStats.class);
-    Compressor compressor = mock(Compressor.class);
-
-    long startTime = 10000L;
-
-    // mock required things
-    when(regionContext.getCompressor()).thenReturn(compressor);
-    when(compressor.decompress(regionEntryValueAsBytes)).thenReturn(regionEntryValueAsBytes);
-    when(regionContext.getCachePerfStats()).thenReturn(cacheStats);
-    when(cacheStats.startDecompression()).thenReturn(startTime);
-
-    // invoke the thing
-    byte[] bytes = chunk.getDecompressedBytes(regionContext);
-
-    // verify the thing happened
-    verify(cacheStats, atLeastOnce()).startDecompression();
-    verify(compressor, times(1)).decompress(regionEntryValueAsBytes);
-    verify(cacheStats, atLeastOnce()).endDecompression(startTime);
-
-    assertArrayEquals(regionEntryValueAsBytes, bytes);
-
-    chunk.release();
-  }
-
-  @Test
-  public void incSizeShouldIncrementSize() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    int beforeSize = chunk.getSize();
-
-    chunk.incSize(1);
-    assertThat(chunk.getSize()).isEqualTo(beforeSize + 1);
-
-    chunk.incSize(2);
-    assertThat(chunk.getSize()).isEqualTo(beforeSize + 1 + 2);
-
-    chunk.release();
-  }
-
-  @Test
-  public void readyForFreeShouldResetTheRefCount() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    int refCountBeforeFreeing = chunk.getRefCount();
-    assertThat(refCountBeforeFreeing).isEqualTo(1);
-
-    chunk.readyForFree();
-
-    int refCountAfterFreeing = chunk.getRefCount();
-    assertThat(refCountAfterFreeing).isEqualTo(0);
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void readyForAllocationShouldThrowExceptionIfAlreadyAllocated() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    // chunk is already allocated when we created it, so calling readyForAllocation should throw exception.
-    chunk.readyForAllocation();
-
-    chunk.release();
-  }
-
-  @Test
-  public void checkIsAllocatedShouldReturnIfAllocated() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    chunk.checkIsAllocated();
-
-    chunk.release();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void checkIsAllocatedShouldThrowExceptionIfNotAllocated() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    chunk.release();
-    chunk.checkIsAllocated();
-
-    chunk.release();
-  }
-
-  @Test
-  public void sendToShouldWriteSerializedValueToDataOutputIfValueIsSerialized() throws IOException {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    ObjectChunk spyChunk = spy(chunk);
-
-    HeapDataOutputStream dataOutput = mock(HeapDataOutputStream.class);
-    ByteBuffer directByteBuffer = ByteBuffer.allocate(1024);
-
-    doReturn(directByteBuffer).when(spyChunk).createDirectByteBuffer();
-    doNothing().when(dataOutput).write(directByteBuffer);
-
-    spyChunk.sendTo(dataOutput);
-
-    verify(dataOutput, times(1)).write(directByteBuffer);
-
-    chunk.release();
-  }
-
-  @Test
-  public void sendToShouldWriteUnserializedValueToDataOutputIfValueIsUnserialized() throws IOException {
-    byte[] regionEntryValue = getValueAsByteArray();
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(regionEntryValue);
-
-    // writeByte is a final method and cannot be mocked, so creating a real one
-    HeapDataOutputStream dataOutput = new HeapDataOutputStream(Version.CURRENT);
-
-    chunk.sendTo(dataOutput);
-
-    byte[] actual = dataOutput.toByteArray();
-
-    byte[] expected = new byte[regionEntryValue.length + 2];
-    expected[0] = DSCODE.BYTE_ARRAY;
-    expected[1] = (byte) regionEntryValue.length;
-    System.arraycopy(regionEntryValue, 0, expected, 2, regionEntryValue.length);
-
-    assertNotNull(dataOutput);
-    assertThat(actual).isEqualTo(expected);
-
-    chunk.release();
-  }
-
-  @Test
-  public void sendAsByteArrayShouldWriteValueToDataOutput() throws IOException {
-    byte[] regionEntryValue = getValueAsByteArray();
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(regionEntryValue);
-
-    // writeByte is a final method and cannot be mocked, so creating a real one
-    HeapDataOutputStream dataOutput = new HeapDataOutputStream(Version.CURRENT);
-
-    chunk.sendAsByteArray(dataOutput);
-
-    byte[] actual = dataOutput.toByteArray();
-
-    byte[] expected = new byte[regionEntryValue.length + 1];
-    expected[0] = (byte) regionEntryValue.length;
-    System.arraycopy(regionEntryValue, 0, expected, 1, regionEntryValue.length);
-
-    assertNotNull(dataOutput);
-    assertThat(actual).isEqualTo(expected);
-
-    chunk.release();
-  }
-
-  @Test
-  public void createDirectByteBufferShouldCreateAByteBuffer() {
-    byte[] regionEntryValue = getValueAsByteArray();
-
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(regionEntryValue);
-
-    ByteBuffer buffer = chunk.createDirectByteBuffer();
-
-    byte[] actual = new byte[regionEntryValue.length];
-    buffer.get(actual);
-
-    assertArrayEquals(regionEntryValue, actual);
-
-    chunk.release();
-  }
-
-  @Test
-  public void getDirectByteBufferShouldCreateAByteBuffer() {
-    byte[] regionEntryValue = getValueAsByteArray();
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(regionEntryValue);
-
-    ByteBuffer buffer = chunk.createDirectByteBuffer();
-    long bufferAddress = ObjectChunk.getDirectByteBufferAddress(buffer);
-
-    // returned address should be starting of the value (after skipping HEADER_SIZE bytes)
-    assertEquals(chunk.getMemoryAddress() + ObjectChunk.OFF_HEAP_HEADER_SIZE, bufferAddress);
-
-    chunk.release();
-  }
-
-  @Test(expected = AssertionError.class)
-  public void getAddressForReadingShouldFailIfItsOutsideOfChunk() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    chunk.getAddressForReading(0, chunk.getDataSize() + 1);
-
-    chunk.release();
-  }
-
-  @Test
-  public void getAddressForReadingShouldReturnDataAddressFromGivenOffset() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    int offset = 1;
-    long requestedAddress = chunk.getAddressForReading(offset, 1);
-
-    assertThat(requestedAddress).isEqualTo(chunk.getBaseDataAddress() + offset);
-
-    chunk.release();
-  }
-
-  @Test
-  public void getSizeInBytesShouldReturnSize() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    assertThat(chunk.getSizeInBytes()).isEqualTo(chunk.getSize());
-
-    chunk.release();
-  }
-
-  @Test(expected = AssertionError.class)
-  public void getUnsafeAddressShouldFailIfOffsetIsNegative() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    chunk.getUnsafeAddress(-1, 1);
-
-    chunk.release();
-  }
-
-  @Test(expected = AssertionError.class)
-  public void getUnsafeAddressShouldFailIfSizeIsNegative() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    chunk.getUnsafeAddress(1, -1);
-
-    chunk.release();
-  }
-
-  @Test(expected = AssertionError.class)
-  public void getUnsafeAddressShouldFailIfItsOutsideOfChunk() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-    chunk.getUnsafeAddress(0, chunk.getDataSize() + 1);
-
-    chunk.release();
-  }
-
-  @Test
-  public void getUnsafeAddressShouldReturnUnsafeAddress() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    int offset = 1;
-    long unsafeAddress = chunk.getUnsafeAddress(offset, 1);
-
-    assertThat(unsafeAddress).isEqualTo(chunk.getBaseDataAddress() + offset);
-
-    chunk.release();
-  }
-
-  @Test(expected = AssertionError.class)
-  public void readByteAndWriteByteShouldFailIfOffsetIsOutside() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    chunk.readByte(chunk.getDataSize() + 1);
-
-    chunk.writeByte(chunk.getDataSize() + 1, Byte.MAX_VALUE);
-
-    chunk.release();
-  }
-
-  @Test
-  public void writeByteShouldWriteAtCorrectLocation() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    byte valueBeforeWrite = chunk.readByte(2);
-
-    Byte expected = Byte.MAX_VALUE;
-    chunk.writeByte(2, expected);
-
-    Byte actual = chunk.readByte(2);
-
-    assertThat(actual).isNotEqualTo(valueBeforeWrite);
-    assertThat(actual).isEqualTo(expected);
-
-    chunk.release();
-  }
-
-  @Test
-  public void retainShouldIncrementRefCount() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.getRefCount()).isEqualTo(1);
-
-    chunk.retain();
-    assertThat(chunk.getRefCount()).isEqualTo(2);
-
-    chunk.retain();
-    assertThat(chunk.getRefCount()).isEqualTo(3);
-
-    chunk.release();
-    chunk.release();
-    chunk.release();
-    boolean retainAfterRelease = chunk.retain();
-
-    assertThat(retainAfterRelease).isFalse();
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void retainShouldThrowExceptionAfterMaxNumberOfTimesRetained() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    // loop though and invoke retain for MAX_REF_COUNT-1 times, as create chunk above counted as one reference
-    for (int i = 0; i < ObjectChunk.MAX_REF_COUNT - 1; i++)
-      chunk.retain();
-
-    // invoke for the one more time should throw exception
-    chunk.retain();
-  }
-
-  @Test
-  public void releaseShouldDecrementRefCount() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.getRefCount()).isEqualTo(1);
-
-    chunk.retain();
-    chunk.retain();
-    assertThat(chunk.getRefCount()).isEqualTo(3);
-
-    chunk.release();
-    assertThat(chunk.getRefCount()).isEqualTo(2);
-
-    chunk.release();
-    assertThat(chunk.getRefCount()).isEqualTo(1);
-
-    chunk.retain();
-    chunk.release();
-    assertThat(chunk.getRefCount()).isEqualTo(1);
-
-    chunk.release();
-    assertThat(chunk.getRefCount()).isEqualTo(0);
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void releaseShouldThrowExceptionIfChunkIsAlreadyReleased() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.release();
-    chunk.release();
-  }
-
-  @Test
-  public void testToStringForOffHeapByteSource() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    String expected = ":<dataSize=" + chunk.getDataSize() + " refCount=" + chunk.getRefCount() + " addr=" + Long.toHexString(chunk.getMemoryAddress()) + ">";
-    assertThat(chunk.toStringForOffHeapByteSource()).endsWith(expected);
-
-    // test toString
-    ObjectChunk spy = spy(chunk);
-    spy.toString();
-    verify(spy, times(1)).toStringForOffHeapByteSource();
-
-    chunk.release();
-  }
-
-  @Test
-  public void getStateShouldReturnAllocatedIfRefCountIsGreaterThanZero() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertEquals(State.ALLOCATED, chunk.getState());
-
-    chunk.release();
-  }
-
-  @Test
-  public void getStateShouldReturnDeallocatedIfRefCountIsZero() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.release();
-    assertEquals(State.DEALLOCATED, chunk.getState());
-  }
-
-  @Test(expected = UnsupportedOperationException.class)
-  public void getNextBlockShouldThrowUnSupportedOperationException() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.getNextBlock();
-
-    chunk.release();
-  }
-
-  @Test
-  public void getBlockSizeShouldBeSameSameGetSize() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertEquals(chunk.getSize(), chunk.getBlockSize());
-
-    chunk.release();
-  }
-
-  @Test(expected = UnsupportedOperationException.class)
-  public void copyBytesShouldThrowUnSupportedOperationException() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.copyBytes(1, 2, 1);
-
-    chunk.release();
-  }
-
-  @Test(expected = UnsupportedOperationException.class)
-  public void getSlabIdShouldThrowUnSupportedOperationException() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    chunk.getSlabId();
-
-    chunk.release();
-  }
-
-  @Test
-  public void getFreeListIdShouldReturnMinusOne() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.getFreeListId()).isEqualTo(-1);
-
-    chunk.release();
-  }
-
-  @Test
-  public void getDataTypeShouldReturnNull() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.getDataType()).isNull();
-
-    chunk.release();
-  }
-
-  @Test
-  public void getDataDataShouldReturnNull() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    assertThat(chunk.getDataValue()).isNull();
-  }
-
-  @Test(expected = UnsupportedOperationException.class)
-  public void getRawBytesShouldThrowExceptionIfValueIsCompressed() {
-    Object regionEntryValue = getValue();
-    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
-
-    boolean isSerialized = true;
-    boolean isCompressed = true;
-
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
-
-    chunk.getRawBytes();
-
-    chunk.release();
-  }
-
-  @Test
-  public void getSerializedValueShouldSerializeTheValue() {
-    Object regionEntryValue = getValue();
-    byte[] regionEntryValueAsBytes = convertValueToByteArray(regionEntryValue);
-
-    boolean isSerialized = false;
-    boolean isCompressed = false;
-
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(regionEntryValueAsBytes, isSerialized, isCompressed);
-
-    byte[] serializedValue = chunk.getSerializedValue();
-
-    assertThat(serializedValue).isEqualTo(EntryEventImpl.serialize(regionEntryValueAsBytes));
-
-    chunk.release();
-  }
-
-  @Test
-  public void fillShouldFillTheChunk() {
-    boolean isSerialized = false;
-    boolean isCompressed = false;
-
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(new byte[100], isSerialized, isCompressed);
-
-    // first fill the unused part with FILL_PATTERN
-    ObjectChunk.fill(chunk.getMemoryAddress());
-
-    // Validate that it is filled
-    chunk.validateFill();
-
-    chunk.release();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSliceJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSliceJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSliceJUnitTest.java
deleted file mode 100644
index fe55910..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkSliceJUnitTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.gemstone.gemfire.internal.offheap;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class ObjectChunkSliceJUnitTest extends ObjectChunkJUnitTest {
-
-  @Test
-  public void sliceShouldHaveAValidDataSize() {
-    int position = 1;
-    int end = 2;
-
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    ObjectChunkSlice slice = (ObjectChunkSlice) chunk.slice(position, end);
-
-    assertNotNull(slice);
-    assertEquals(ObjectChunkSlice.class, slice.getClass());
-
-    assertEquals(end - position, slice.getDataSize());
-  }
-
-  @Test
-  public void sliceShouldHaveAValidBaseDataAddress() {
-    int position = 1;
-    int end = 2;
-
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    ObjectChunkSlice slice = (ObjectChunkSlice) chunk.slice(position, end);
-
-    assertNotNull(slice);
-    assertEquals(ObjectChunkSlice.class, slice.getClass());
-
-    assertEquals(chunk.getBaseDataAddress() + position, slice.getBaseDataAddress());
-  }
-
-  @Test
-  public void sliceShouldHaveAValidBaseOffset() {
-    int position = 1;
-    int end = 2;
-
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-    ObjectChunkSlice slice = (ObjectChunkSlice) chunk.slice(position, end);
-
-    assertNotNull(slice);
-    assertEquals(ObjectChunkSlice.class, slice.getClass());
-
-    assertEquals(chunk.getBaseDataOffset() + position, slice.getBaseDataOffset());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapFormJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapFormJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapFormJUnitTest.java
deleted file mode 100644
index 4486845..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/ObjectChunkWithHeapFormJUnitTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.gemstone.gemfire.internal.offheap;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-@Category(UnitTest.class)
-public class ObjectChunkWithHeapFormJUnitTest extends ObjectChunkJUnitTest {
-
-  @Test
-  public void getRawBytesShouldReturnCachedHeapForm() {
-    ObjectChunk chunk = createValueAsUnserializedStoredObject(getValue());
-
-    byte[] valueInBytes = getValueAsByteArray();
-    ObjectChunkWithHeapForm heapForm = new ObjectChunkWithHeapForm(chunk, valueInBytes);
-
-    assertNotNull(heapForm);
-
-    assertSame(valueInBytes, heapForm.getRawBytes());
-  }
-
-  @Test
-  public void getChunkWithoutHeapFormShouldReturnGemFireChunk() {
-    ObjectChunk chunk = createValueAsSerializedStoredObject(getValue());
-
-    byte[] valueInBytes = getValueAsByteArray();
-    ObjectChunkWithHeapForm heapForm = new ObjectChunkWithHeapForm(chunk, valueInBytes);
-
-    ObjectChunk chunkWithOutHeapForm = heapForm.getChunkWithoutHeapForm();
-
-    assertNotNull(chunkWithOutHeapForm);
-    assertEquals(ObjectChunk.class, chunkWithOutHeapForm.getClass());
-
-    assertEquals(chunk, heapForm.getChunkWithoutHeapForm());
-
-    assertEquals(chunk.getMemoryAddress(), chunkWithOutHeapForm.getMemoryAddress());
-    assertArrayEquals(chunk.getRawBytes(), chunkWithOutHeapForm.getRawBytes());
-    assertNotSame(valueInBytes, chunkWithOutHeapForm.getRawBytes());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
index b1e3af0..989abfc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapHelperJUnitTest.java
@@ -38,7 +38,7 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
 @Category(UnitTest.class)
 public class OffHeapHelperJUnitTest extends AbstractStoredObjectTestBase {
 
-  private MemoryChunkWithRefCount storedObject                 = null;
+  private StoredObject storedObject                 = null;
   private Object                  deserializedRegionEntryValue = null;
   private byte[]                  serializedRegionEntryValue   = null;
   private MemoryAllocator         ma;
@@ -102,7 +102,7 @@ public class OffHeapHelperJUnitTest extends AbstractStoredObjectTestBase {
   }
 
   @Override
-  protected MemoryChunkWithRefCount createValueAsUnserializedStoredObject(Object value) {
+  protected StoredObject createValueAsUnserializedStoredObject(Object value) {
     byte[] valueInByteArray;
     if (value instanceof Long) {
       valueInByteArray = convertValueToByteArray(value);
@@ -113,23 +113,23 @@ public class OffHeapHelperJUnitTest extends AbstractStoredObjectTestBase {
     boolean isSerialized = false;
     boolean isCompressed = false;
 
-    MemoryChunkWithRefCount createdObject = createChunk(valueInByteArray, isSerialized, isCompressed);
+    StoredObject createdObject = createChunk(valueInByteArray, isSerialized, isCompressed);
     return createdObject;
   }
 
   @Override
-  protected MemoryChunkWithRefCount createValueAsSerializedStoredObject(Object value) {
+  protected StoredObject createValueAsSerializedStoredObject(Object value) {
     byte[] valueInSerializedByteArray = EntryEventImpl.serialize(value);
 
     boolean isSerialized = true;
     boolean isCompressed = false;
 
-    MemoryChunkWithRefCount createdObject = createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
+    StoredObject createdObject = createChunk(valueInSerializedByteArray, isSerialized, isCompressed);
     return createdObject;
   }
 
-  private ObjectChunk createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(v, isSerialized, isCompressed);
+  private OffHeapStoredObject createChunk(byte[] v, boolean isSerialized, boolean isCompressed) {
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(v, isSerialized, isCompressed);
     return chunk;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionBase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionBase.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionBase.java
index 8de0406..ae1b35d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionBase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionBase.java
@@ -92,7 +92,7 @@ public abstract class OffHeapRegionBase {
       assertNotNull(ma);
       final long offHeapSize = ma.getFreeMemory();
       assertEquals(0, ma.getUsedMemory());
-      MemoryChunk mc1 = ma.allocate(64);
+      StoredObject mc1 = ma.allocate(64);
       assertEquals(64+perObjectOverhead(), ma.getUsedMemory());
       assertEquals(offHeapSize-(64+perObjectOverhead()), ma.getFreeMemory());
       mc1.release();
@@ -123,7 +123,7 @@ public abstract class OffHeapRegionBase {
       assertNotNull(ma);
       final long offHeapSize = ma.getFreeMemory();
       assertEquals(0, ma.getUsedMemory());
-      MemoryChunk mc1 = ma.allocate(64);
+      StoredObject mc1 = ma.allocate(64);
       assertEquals(64+perObjectOverhead(), ma.getUsedMemory());
       assertEquals(offHeapSize-(64+perObjectOverhead()), ma.getFreeMemory());
       mc1.release();
@@ -163,11 +163,11 @@ public abstract class OffHeapRegionBase {
       final long offHeapSize = ma.getFreeMemory();
       assertEquals(0, ma.getUsedMemory());
       byte[] data = new byte[] {1,2,3,4,5,6,7,8};
-      MemoryChunk mc1 = (MemoryChunk)ma.allocateAndInitialize(data, false, false);
+      StoredObject mc1 = (StoredObject)ma.allocateAndInitialize(data, false, false);
       assertEquals(data.length+perObjectOverhead(), ma.getUsedMemory());
       assertEquals(offHeapSize-(data.length+perObjectOverhead()), ma.getFreeMemory());
       byte[] data2 = new byte[data.length];
-      mc1.readBytes(0, data2);
+      mc1.readDataBytes(0, data2);
       assertTrue(Arrays.equals(data, data2));
       mc1.release();
       assertEquals(offHeapSize, ma.getFreeMemory());
@@ -540,11 +540,11 @@ public abstract class OffHeapRegionBase {
     @Released(OffHeapIdentifier.TEST_OFF_HEAP_REGION_BASE_LISTENER)
     @Override
     public void close() {
-      if (this.ohOldValue instanceof ObjectChunk) {
-        ((ObjectChunk)this.ohOldValue).release();
+      if (this.ohOldValue instanceof OffHeapStoredObject) {
+        ((OffHeapStoredObject)this.ohOldValue).release();
       }
-      if (this.ohNewValue instanceof ObjectChunk) {
-        ((ObjectChunk)this.ohNewValue).release();
+      if (this.ohNewValue instanceof OffHeapStoredObject) {
+        ((OffHeapStoredObject)this.ohNewValue).release();
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
index 5d53109..540bba5 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapRegionEntryHelperJUnitTest.java
@@ -54,7 +54,7 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
 @Category(UnitTest.class)
 @RunWith(PowerMockRunner.class)
 @PowerMockIgnore("*.UnitTest")
-@PrepareForTest({ ObjectChunk.class, OffHeapRegionEntryHelper.class })
+@PrepareForTest({ OffHeapStoredObject.class, OffHeapRegionEntryHelper.class })
 public class OffHeapRegionEntryHelperJUnitTest {
 
   private static final Long VALUE_IS_NOT_ENCODABLE = 0L;
@@ -75,13 +75,13 @@ public class OffHeapRegionEntryHelperJUnitTest {
     SimpleMemoryAllocatorImpl.freeOffHeapMemory();
   }
 
-  private ObjectChunk createChunk(Object value) {
+  private OffHeapStoredObject createChunk(Object value) {
     byte[] v = EntryEventImpl.serialize(value);
 
     boolean isSerialized = true;
     boolean isCompressed = false;
 
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(v, isSerialized, isCompressed);
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(v, isSerialized, isCompressed);
 
     return chunk;
   }
@@ -294,8 +294,8 @@ public class OffHeapRegionEntryHelperJUnitTest {
 
   @Test
   public void isOffHeapShouldReturnTrueIfAddressIsOnOffHeap() {
-    ObjectChunk value = createChunk(Long.MAX_VALUE);
-    assertThat(OffHeapRegionEntryHelper.isOffHeap(value.getMemoryAddress())).isTrue();
+    OffHeapStoredObject value = createChunk(Long.MAX_VALUE);
+    assertThat(OffHeapRegionEntryHelper.isOffHeap(value.getAddress())).isTrue();
   }
 
   @Test
@@ -327,28 +327,28 @@ public class OffHeapRegionEntryHelperJUnitTest {
     long oldAddress = 1L;
 
     // testing when the newValue is a chunk
-    ObjectChunk newValue = createChunk(Long.MAX_VALUE);
+    OffHeapStoredObject newValue = createChunk(Long.MAX_VALUE);
     // mock region entry methods required for test
     when(re.getAddress()).thenReturn(oldAddress);
-    when(re.setAddress(oldAddress, newValue.getMemoryAddress())).thenReturn(Boolean.TRUE);
+    when(re.setAddress(oldAddress, newValue.getAddress())).thenReturn(Boolean.TRUE);
 
     // invoke the method under test
     OffHeapRegionEntryHelper.setValue(re, newValue);
 
     // verify oldAddress is replaced with newAddress
-    verify(re, times(1)).setAddress(oldAddress, newValue.getMemoryAddress());
+    verify(re, times(1)).setAddress(oldAddress, newValue.getAddress());
     // resetting the spy in-order to re-use
     reset(re);
 
     // testing when the newValue is DataAsAddress
-    DataAsAddress newAddress1 = new DataAsAddress(2L);
+    TinyStoredObject newAddress1 = new TinyStoredObject(2L);
     // mock region entry methods required for test
     when(re.getAddress()).thenReturn(oldAddress);
-    when(re.setAddress(oldAddress, newAddress1.getEncodedAddress())).thenReturn(Boolean.TRUE);
+    when(re.setAddress(oldAddress, newAddress1.getAddress())).thenReturn(Boolean.TRUE);
     OffHeapRegionEntryHelper.setValue(re, newAddress1);
 
     // verify oldAddress is replaced with newAddress
-    verify(re, times(1)).setAddress(oldAddress, newAddress1.getEncodedAddress());
+    verify(re, times(1)).setAddress(oldAddress, newAddress1.getAddress());
     reset(re);
 
     // Testing when newValue is Token Objects
@@ -440,27 +440,27 @@ public class OffHeapRegionEntryHelperJUnitTest {
     // mock region entry
     OffHeapRegionEntry re = mock(OffHeapRegionEntry.class);
 
-    ObjectChunk oldValue = createChunk(Long.MAX_VALUE);
-    ObjectChunk newValue = createChunk(Long.MAX_VALUE - 1);
+    OffHeapStoredObject oldValue = createChunk(Long.MAX_VALUE);
+    OffHeapStoredObject newValue = createChunk(Long.MAX_VALUE - 1);
 
     // mock Chunk static methods - in-order to verify that release is called
-    PowerMockito.spy(ObjectChunk.class);
-    PowerMockito.doNothing().when(ObjectChunk.class);
-    ObjectChunk.release(oldValue.getMemoryAddress());
+    PowerMockito.spy(OffHeapStoredObject.class);
+    PowerMockito.doNothing().when(OffHeapStoredObject.class);
+    OffHeapStoredObject.release(oldValue.getAddress());
 
     // mock region entry methods required for test
-    when(re.getAddress()).thenReturn(oldValue.getMemoryAddress());
-    when(re.setAddress(oldValue.getMemoryAddress(), newValue.getMemoryAddress())).thenReturn(Boolean.TRUE);
+    when(re.getAddress()).thenReturn(oldValue.getAddress());
+    when(re.setAddress(oldValue.getAddress(), newValue.getAddress())).thenReturn(Boolean.TRUE);
 
     // invoke the method under test
     OffHeapRegionEntryHelper.setValue(re, newValue);
 
     // verify oldAddress is changed to newAddress
-    verify(re, times(1)).setAddress(oldValue.getMemoryAddress(), newValue.getMemoryAddress());
+    verify(re, times(1)).setAddress(oldValue.getAddress(), newValue.getAddress());
 
     // verify oldAddress is released
     PowerMockito.verifyStatic();
-    ObjectChunk.release(oldValue.getMemoryAddress());
+    OffHeapStoredObject.release(oldValue.getAddress());
   }
 
   @Test
@@ -472,26 +472,26 @@ public class OffHeapRegionEntryHelperJUnitTest {
     long oldAddress = OffHeapRegionEntryHelper.encodeDataAsAddress(oldData, false, false);
 
     byte[] newData = ByteBuffer.allocate(Integer.SIZE / Byte.SIZE).putInt((Integer) Integer.MAX_VALUE - 1).array();
-    DataAsAddress newAddress = new DataAsAddress(OffHeapRegionEntryHelper.encodeDataAsAddress(newData, false, false));
+    TinyStoredObject newAddress = new TinyStoredObject(OffHeapRegionEntryHelper.encodeDataAsAddress(newData, false, false));
 
     // mock Chunk static methods - in-order to verify that release is never called
-    PowerMockito.spy(ObjectChunk.class);
-    PowerMockito.doNothing().when(ObjectChunk.class);
-    ObjectChunk.release(oldAddress);
+    PowerMockito.spy(OffHeapStoredObject.class);
+    PowerMockito.doNothing().when(OffHeapStoredObject.class);
+    OffHeapStoredObject.release(oldAddress);
 
     // mock region entry methods required for test
     when(re.getAddress()).thenReturn(oldAddress);
-    when(re.setAddress(oldAddress, newAddress.getEncodedAddress())).thenReturn(Boolean.TRUE);
+    when(re.setAddress(oldAddress, newAddress.getAddress())).thenReturn(Boolean.TRUE);
 
     // invoke the method under test
     OffHeapRegionEntryHelper.setValue(re, newAddress);
 
     // verify oldAddress is changed to newAddress
-    verify(re, times(1)).setAddress(oldAddress, newAddress.getEncodedAddress());
+    verify(re, times(1)).setAddress(oldAddress, newAddress.getAddress());
 
     // verify that release is never called as the old address is not on offheap
     PowerMockito.verifyStatic(never());
-    ObjectChunk.release(oldAddress);
+    OffHeapStoredObject.release(oldAddress);
   }
 
   @Test
@@ -505,9 +505,9 @@ public class OffHeapRegionEntryHelperJUnitTest {
     long newAddress = OffHeapRegionEntryHelper.REMOVED_PHASE2_ADDRESS;
 
     // mock Chunk static methods - in-order to verify that release is never called
-    PowerMockito.spy(ObjectChunk.class);
-    PowerMockito.doNothing().when(ObjectChunk.class);
-    ObjectChunk.release(oldAddress);
+    PowerMockito.spy(OffHeapStoredObject.class);
+    PowerMockito.doNothing().when(OffHeapStoredObject.class);
+    OffHeapStoredObject.release(oldAddress);
 
     // mock region entry methods required for test
     when(re.getAddress()).thenReturn(oldAddress);
@@ -521,7 +521,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
 
     // verify that release is never called as the old address is not on offheap
     PowerMockito.verifyStatic(never());
-    ObjectChunk.release(oldAddress);
+    OffHeapStoredObject.release(oldAddress);
   }
 
   @Test(expected = IllegalStateException.class)
@@ -541,10 +541,10 @@ public class OffHeapRegionEntryHelperJUnitTest {
     // mock region entry
     OffHeapRegionEntry re = mock(OffHeapRegionEntry.class);
 
-    ObjectChunk chunk = createChunk(Long.MAX_VALUE);
+    OffHeapStoredObject chunk = createChunk(Long.MAX_VALUE);
 
     // mock region entry methods required for test
-    when(re.getAddress()).thenReturn(chunk.getMemoryAddress());
+    when(re.getAddress()).thenReturn(chunk.getAddress());
     Token token = OffHeapRegionEntryHelper.getValueAsToken(re);
 
     assertThat(token).isEqualTo(Token.NOT_A_TOKEN);
@@ -627,10 +627,10 @@ public class OffHeapRegionEntryHelperJUnitTest {
 
   @Test
   public void addressToObjectShouldReturnValueFromChunk() {
-    ObjectChunk expected = createChunk(Long.MAX_VALUE);
-    Object actual = OffHeapRegionEntryHelper.addressToObject(expected.getMemoryAddress(), false, null);
+    OffHeapStoredObject expected = createChunk(Long.MAX_VALUE);
+    Object actual = OffHeapRegionEntryHelper.addressToObject(expected.getAddress(), false, null);
 
-    assertThat(actual).isInstanceOf(ObjectChunk.class);
+    assertThat(actual).isInstanceOf(OffHeapStoredObject.class);
     assertThat(actual).isEqualTo(expected);
   }
 
@@ -640,7 +640,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
     boolean isSerialized = true;
     boolean isCompressed = true;
 
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(data, isSerialized, isCompressed);
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(data, isSerialized, isCompressed);
 
     // create the mock context
     RegionEntryContext regionContext = mock(RegionEntryContext.class);
@@ -655,7 +655,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
     when(regionContext.getCachePerfStats()).thenReturn(cacheStats);
     when(cacheStats.startDecompression()).thenReturn(startTime);
 
-    Object actual = OffHeapRegionEntryHelper.addressToObject(chunk.getMemoryAddress(), true, regionContext);
+    Object actual = OffHeapRegionEntryHelper.addressToObject(chunk.getAddress(), true, regionContext);
 
     assertThat(actual).isInstanceOf(VMCachedDeserializable.class);
 
@@ -669,7 +669,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
     boolean isSerialized = false;
     boolean isCompressed = true;
 
-    ObjectChunk chunk = (ObjectChunk) ma.allocateAndInitialize(data, isSerialized, isCompressed);
+    OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocateAndInitialize(data, isSerialized, isCompressed);
 
     // create the mock context
     RegionEntryContext regionContext = mock(RegionEntryContext.class);
@@ -684,7 +684,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
     when(regionContext.getCachePerfStats()).thenReturn(cacheStats);
     when(cacheStats.startDecompression()).thenReturn(startTime);
 
-    Object actual = OffHeapRegionEntryHelper.addressToObject(chunk.getMemoryAddress(), true, regionContext);
+    Object actual = OffHeapRegionEntryHelper.addressToObject(chunk.getAddress(), true, regionContext);
 
     assertThat(actual).isInstanceOf(byte[].class);
     assertThat(actual).isEqualTo(data);
@@ -695,10 +695,10 @@ public class OffHeapRegionEntryHelperJUnitTest {
     byte[] data = ByteBuffer.allocate(Integer.SIZE / Byte.SIZE).putInt(Integer.MAX_VALUE).array();
     long address = OffHeapRegionEntryHelper.encodeDataAsAddress(data, false, false);
 
-    DataAsAddress expected = new DataAsAddress(address);
+    TinyStoredObject expected = new TinyStoredObject(address);
     Object actual = OffHeapRegionEntryHelper.addressToObject(address, false, null);
 
-    assertThat(actual).isInstanceOf(DataAsAddress.class);
+    assertThat(actual).isInstanceOf(TinyStoredObject.class);
     assertThat(actual).isEqualTo(expected);
   }
 
@@ -795,7 +795,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
     boolean isCompressed = true;
 
     long address = OffHeapRegionEntryHelper.encodeDataAsAddress(data, isSerialized, isCompressed);
-    DataAsAddress daa = new DataAsAddress(address);
+    TinyStoredObject daa = new TinyStoredObject(address);
 
     int actualLength = OffHeapRegionEntryHelper.getSerializedLengthFromDataAsAddress(daa);
 
@@ -804,7 +804,7 @@ public class OffHeapRegionEntryHelperJUnitTest {
 
   @Test
   public void getSerializedLengthFromDataAsAddressShouldReturnZeroForNonEncodedAddress() {
-    DataAsAddress nonEncodedAddress = new DataAsAddress(100000L);
+    TinyStoredObject nonEncodedAddress = new TinyStoredObject(100000L);
     int actualLength = OffHeapRegionEntryHelper.getSerializedLengthFromDataAsAddress(nonEncodedAddress);
     assertThat(actualLength).isZero();
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/3087c86f/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
new file mode 100644
index 0000000..8040bf7
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStoredObjectAddressStackJUnitTest.java
@@ -0,0 +1,289 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.offheap;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.mockito.listeners.InvocationListener;
+import org.mockito.listeners.MethodInvocationReport;
+
+import com.gemstone.gemfire.LogWriter;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class OffHeapStoredObjectAddressStackJUnitTest {
+  static {
+    ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
+  }
+
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception {
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception {
+  }
+
+  @Before
+  public void setUp() throws Exception {
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public void addressZeroCausesStackToBeEmpty() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack(0L);
+    assertEquals(true, stack.isEmpty());
+  }
+
+  @Test
+  public void defaultStackIsEmpty() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+    assertEquals(true, stack.isEmpty());
+  }
+
+  @Test
+  public void defaultStackReturnsZeroFromTop() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+    assertEquals(0L, stack.getTopAddress());
+  }
+  
+  @Test
+  public void defaultStackReturnsZeroFromPoll() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+    assertEquals(0L, stack.poll());
+  }
+  
+  @Test
+  public void defaultStackReturnsZeroFromClear() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+    assertEquals(0L, stack.clear());
+    assertEquals(true, stack.isEmpty());
+  }
+  
+  @Test
+  public void defaultStackLogsNothing() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+    LogWriter lw = mock(LogWriter.class, withSettings().invocationListeners(new InvocationListener() {
+      @Override
+      public void reportInvocation(MethodInvocationReport methodInvocationReport) {
+        fail("Unexpected invocation");
+      }
+    }));
+    stack.logSizes(lw, "should not be used");
+  }
+  
+  @Test
+  public void defaultStackComputeSizeIsZero() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+    assertEquals(0L, stack.computeTotalSize());
+  }
+  
+  @Test
+  public void stackCreatedWithAddressIsNotEmpty() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack(chunk.getAddress());
+      assertEquals(false, stack.isEmpty());
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+  @Test
+  public void stackWithChunkIsNotEmpty() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+      stack.offer(chunk.getAddress());
+      assertEquals(false, stack.isEmpty());
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+  @Test
+  public void stackWithChunkTopEqualsAddress() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+
+      long addr = chunk.getAddress();
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+      stack.offer(addr);
+      assertEquals(addr, stack.getTopAddress());
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+  @Test
+  public void addressZeroOfferCausesFailedAssertion() {
+    OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack(0L);
+    try {
+      stack.offer(0);
+      fail("expected AssertionError");
+    } catch (AssertionError expected) {
+    }
+  }
+
+
+  @Test
+  public void stackWithChunkClearReturnsAddressAndEmptiesStack() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+
+      long addr = chunk.getAddress();
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+      stack.offer(addr);
+      long clearAddr = stack.clear();
+      assertEquals(addr, clearAddr);
+      assertEquals(true, stack.isEmpty());
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+  @Test
+  public void stackWithChunkPollReturnsAddressAndEmptiesStack() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+
+      long addr = chunk.getAddress();
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+      stack.offer(addr);
+      long pollAddr = stack.poll();
+      assertEquals(addr, pollAddr);
+      assertEquals(true, stack.isEmpty());
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+  @Test
+  public void stackWithChunkTotalSizeIsChunkSize() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+      int chunkSize = chunk.getSize();
+
+      long addr = chunk.getAddress();
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+      stack.offer(addr);
+      assertEquals(chunkSize, stack.computeTotalSize());
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+
+  @Test
+  public void stackWithChunkLogShowsMsgAndSize() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+      int chunkSize = chunk.getSize();
+
+      long addr = chunk.getAddress();
+      OffHeapStoredObjectAddressStack stack = new OffHeapStoredObjectAddressStack();
+      stack.offer(addr);
+      LogWriter lw = mock(LogWriter.class);
+      stack.logSizes(lw, "foo");
+      verify(lw).info("foo"+chunkSize);
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+  
+  private class TestableSyncChunkStack extends OffHeapStoredObjectAddressStack {
+    public boolean doConcurrentMod = true;
+    public int chunk2Size;
+    private SimpleMemoryAllocatorImpl ma;
+    TestableSyncChunkStack(SimpleMemoryAllocatorImpl ma) {
+      this.ma = ma;
+    }
+    @Override
+    protected void testHookDoConcurrentModification() {
+      if (doConcurrentMod) {
+        doConcurrentMod = false;
+        OffHeapStoredObject chunk2 = (OffHeapStoredObject) ma.allocate(50);
+        this.chunk2Size = chunk2.getSize();
+        this.offer(chunk2.getAddress());
+      }
+    }
+  }
+  @Test
+  public void stackWithChunkTotalSizeIsChunkSizeWithConcurrentMod() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+      int chunkSize = chunk.getSize();
+
+      long addr = chunk.getAddress();
+      TestableSyncChunkStack stack = new TestableSyncChunkStack(ma);
+      stack.offer(addr);
+      long totalSize = stack.computeTotalSize();
+      assertEquals("chunkSize=" + chunkSize + " chunk2Size=" + stack.chunk2Size, chunkSize + stack.chunk2Size, totalSize);
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+
+
+  @Test
+  public void stackWithChunkLogShowsMsgAndSizeWithConcurrentMod() {
+    SlabImpl slab = new SlabImpl(1024);
+    try {
+      SimpleMemoryAllocatorImpl ma = SimpleMemoryAllocatorImpl.createForUnitTest(new NullOutOfOffHeapMemoryListener(), new NullOffHeapMemoryStats(), new SlabImpl[]{slab});
+      OffHeapStoredObject chunk = (OffHeapStoredObject) ma.allocate(100);
+      int chunkSize = chunk.getSize();
+
+      long addr = chunk.getAddress();
+      TestableSyncChunkStack stack = new TestableSyncChunkStack(ma);
+      stack.offer(addr);
+      LogWriter lw = mock(LogWriter.class);
+      stack.logSizes(lw, "foo");
+      verify(lw).info("foo"+chunkSize);
+      verify(lw).info("foo"+stack.chunk2Size);
+    } finally {
+      SimpleMemoryAllocatorImpl.freeOffHeapMemory();
+    }
+  }
+}


[33/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
deleted file mode 100755
index 1cd1b72..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
+++ /dev/null
@@ -1,3937 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<html>
-<head>
-<title>GemFire System Properties</title>
-</head>
-<body>
-<h1>Introduction</h1>
-Please edit this file by hand in order to facilitate merges!
-<p>
-Please keep entries in this file in alphabetical order in order to
-facilitate merging!
-<h1>Java Methods Swept</h1>
-These are the methods that I have found that reference the system properties
-table.  If you can think of others I have missed, add them (alphabetically)
-to this list, perform the sweep using Eclipse and add your results.
-<p>
-<ul>
-<li><code>Boolean#getBoolean(String)</code></li>
-<li><code>Integer#getInteger(String)</code></li>
-<li><code>Integer#getInteger(String, Integer)</code></li>
-<li><code>Integer#getInteger(String, int)</code></li>
-<li><code>Long#getLong(String)</code></li>
-<li><code>Long#getLong(String, Long)</code></li>
-<li><code>Long#getLong(String, long)</code></li>
-<li><code>System#getProperties</code></li>
-<li><code>System#getProperty(String)</code></li>
-<li><code>System#getProperty(String, String)</code></li>
-</ul>
-
-<h1>Miscellaneous</h1>
-
-DistributionConfigImpl constructor prepends <code>gemfire.</code> to each
-valid attribute name, then looks for a System property with that value.  If
-such a property name exists, it overrides any read from a property file or
-any properties passed into the caller.
-<p>
-<code>com.gemstone.gemfire.internal.cache.Oplog</code> looks for properties
-of the form:
-<ul>
-
-<li>fullRegionName + <code>_UNIT_BUFF_SIZE</code></li> -- <em>Integer</em>;
-"Asif: The minimum unit size of the Pool created. The ByteBuffer pools
-present at different indexes will be multiple of this size. Default unit
-buffer size is 1024"
-
-<li>fullRegionName + <code>_MAX_POOL_SIZE</code></li> -- <em>Integer</em>;
-"The initial pool size . Default pool size is zero"
-
-<li>fullRegionName + <code>_WAIT_TIME</code></li> -- <em>Integer</em>;
-"Asif: MAX time in milliseconds for which a thread will wait for a buffer to
-get freed up. If not available in that duration a buffer will be created on
-the fly. The timeout has no meaning if the max pool size is -1( no upper
-bound)"
-</ul>
-<p>
-
-<h1>Properties, in Alphabetical Order</h1>
-
-
-<dl>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>AdminDistributedSystemImpl.TIMEOUT_MS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 60000)
-<p>
-See <code>com.gemstone.gemfire.admin.internal.AdminDistributedSystemImpl#TIMEOUT_MS</code>.
-<p>
-TBA
-</dd>
-
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>AvailablePort.fastRandom</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.AvailablePort</code>.
-<p>
-If true, an instance of <code>java.util.Random</code> is used instead of
-<code>java.security.SecureRandom</code> to randomly select a port.
-<p>
-This property is available in case there is a performance issue involved
-with random port selection.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>AvailablePort.timeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 2000)
-<p>
-See <code>com.gemstone.gemfire.internal.AvailablePort#isPortAvailable</code>.
-<p>
-When establishing a JGroups locator, this sets the <code>SO_TIMEOUT</code>
-characteristic on the UDP port that we attempt to test.
-<p>
-Units are in milliseconds.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Bridge.VERBOSE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-See <code>com.gemstone.gemfire.internal.cache.BridgeServerImpl.#VERBOSE</code>.
-<p>
-Enable verbose logging in the BridgeServer
-<p>
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.HANDSHAKE_POOL_SIZE</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>Integer</em> (default is 4)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#HANDSHAKE_POOL_SIZE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.MAXIMUM_CHUNK_SIZE</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>Integer</em> (default is 100)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#maximumChunkSize</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.MAX_INCOMING_DATA</strong></dt>
-<dd>
-<em>Public:</em> yes?
-<p>
-<em>Integer</em> (default is -1)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#MAX_INCOMING_DATA</code>.
-<p>
-<pre>
-   Maximum number of concurrent incoming client message bytes that a bridge server will allow.
-   Once a server is working on this number additional incoming client messages
-   will wait until one of them completes or fails.
-   The bytes are computed based in the size sent in the incoming msg header.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.MAX_INCOMING_MSGS</strong></dt>
-<dd>
-<em>Public:</em> yes?
-<p>
-<em>Integer</em> (default is -1)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#MAX_INCOMING_MSGS</code>.
-<p>
-<pre>
-   Maximum number of concurrent incoming client messages that a bridge server will allow.
-   Once a server is working on this number additional incoming client messages
-   will wait until one of them completes or fails.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.SELECTOR</strong></dt>
-<dd>
-<em>Public:</em> jpmc-cbb
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#DEPRECATED_SELECTOR</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.SELECTOR_POOL_SIZE</strong></dt>
-<dd>
-<em>Public:</em> jpmc-cbb
-<p>
-<em>Integer</em> (default is 16)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#DEPRECATED_SELECTOR_POOL_SIZE</code>.
-<p>
-<pre>
-   This system property is only used if max-threads == 0.
-   This is for 5.0.2 backwards compatibility.
-   @deprecated since 5.1 use cache-server max-threads instead
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.SOCKET_BUFFER_SIZE</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>Integer</em> (default is 32768)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientNotifier#socketBufferSize</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientUpdater#CacheClietnUpdater(String, EndpointImpl, List, LogWriter, boolean, DistributedSystem)</code>.
-<p>
-<pre>
-   The size of the server-to-client communication socket buffers. This can be
-   modified using the BridgeServer.SOCKET_BUFFER_SIZE system property.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.acceptTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 2900)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#acceptTimeout</code>.
-<p>
-Units are in milliseconds.
-<p>
-<pre>
-  Test value for accept timeout
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.backlog</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl</code>
-constructor.
-<p>
-This is the TCP accept backlog for the acceptor thread's listening socket.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>BridgeServer.handShakeTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 59000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl#handShakeTimeout</code>.
-<p>
-<pre>
-  Test value for handshake timeout
-</pre>
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>CacheServerLauncher.PRINT_LAUNCH_COMMAND</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.CacheServerLauncher#PRINT_LAUNCH_COMMAND</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DataSerializer.DEBUG</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.DataSerializer#DEBUG</code>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DataSerializer.DUMP_SERIALIZED</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.DataSerializer#DUMP_SERIALIZED</code>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributedLockService.VERBOSE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockLogWriter#VERBOSE</code>.
-<p>
-Enables logging for this class.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.DEBUG_JAVAGROUPS</strong></dt>
-<dd>
-<em>Public:</em> yes (general debugging)
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager</code>.
-<p>
-See <code>com.gemstone.org.jgroups.stack.Protocol#trace/<code>.
-<p>
-Enables JGroups-package debug logging.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.DISCONNECT_WAIT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 10 * 1000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.InternalDistributedSystem#MAX_DISCONNECT_WAIT</code>.
-<p>
-<pre>
-   This is how much time, in milliseconds to allow a disconnect listener
-   to run before we interrupt it.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.INCOMING_QUEUE_LIMIT</strong></dt>
-<dd>
-<em>Public:</em> jpmc-cbb
-<p>
-<em>Integer</em> (default is 80000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#INCOMING_QUEUE_LIMIT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.INCOMING_QUEUE_THROTTLE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is INCOMING_QUEUE_LIMIT * .75)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#INCOMING_QUEUE_THROTTLE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.JAVAGROUPS_CONFIG</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-If multicast is enabled, the default is com/gemstone/gemfire/distributed/internal/javagroups-mcast.txt.
-<p>
-If multicast is not enabled, the default is com/gemstone/gemfire/distributed/internal/javagroups-config.txt.
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-<pre>
-   The system property that specifies the name of a file from which to read
-   Jgroups configuration information
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.MAX_FE_THREADS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer:</em> (default is 16)
-<p>
-Maximum function execution threads.
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_FE_THREADS</code>.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.MAX_PR_THREADS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_PR_THREADS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.MAX_SERIAL_QUEUE_THREAD</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_SERIAL_QUEUE_THREAD</code>.
-<p>
-<pre>
-  Max number of serial Queue executors, in case of multi-serial-queue executor
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.MAX_THREADS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 100)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_THREADS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.MAX_WAITING_THREADS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is Integer.MAX_VALUE)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MAX_WAITING_THREADS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.OptimizedUpdateByteLimit</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 2000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.SearchLoadAndWriteProcessor#SMALL_BLOB_SIZE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.PUSHER_QUEUE_SIZE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 4096)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#PUSHER_QUEUE_SIZE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.PUSHER_THREADS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 50)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#PUSHER_THREADS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.SERIAL_QUEUE_BYTE_LIMIT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 40 * 1024 * 1024)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SERIAL_QUEUE_BYTE_LIMIT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.SERIAL_QUEUE_SIZE_LIMIT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SERIAL_QUEUE_SIZE_LIMIT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.SERIAL_QUEUE_SIZE_THROTTLE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is SERIAL_QUEUE_SIZE_LIMIT * THROTTLE_PERCENT)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SERIAL_QUEUE_THROTTLE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.SERIAL_QUEUE_THROTTLE_PERCENT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 75)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#THROTTLE_PERCENT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.STARTUP_TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 15000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#STARTUP_TIMEOUT</code>.
-<p>
-Units are in milliseconds.  This is how long a Startup message waits before
-it declares the peer to be nonresponsive.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is -1)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#TIMEOUT</code>.
-<p>
-<pre>
-  The number of milliseconds to wait for distribution-related
-  things to happen */
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.TOTAL_SERIAL_QUEUE_BYTE_LIMIT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 80 * 1024 * 1024)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#TOTAL_SERIAL_QUEUE_BYTE_LIMIT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.TOTAL_SERIAL_QUEUE_THROTTLE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is SERIAL_QUEUE_BYTE_LIMIT * THROTTLE_PERCENT)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#TOTAL_SERIAL_QUEUE_THROTTLE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.VERBOSE</strong></dt>
-<dd>
-<em>Public:</em> yes (general debugging)
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#VERBOSE</code>.
-<p>
-Enables certain additional (fine-level?) logging.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.VERBOSE_VIEWS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#VERBOSE_VIEWS</code>.
-<p>
-Enables additional info-level logging
-(see <code>#addShunnedMember</code> and <code>#addSurpriseMember</code>).
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.enqueueOrderedMessages</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#INLINE_PROCESS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.requireAllStartupResponses</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#sendStartupMessage</code>.
-<p>
-Fail distributed system join unless a startup response is received from
-<em>all</em> peers.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.singleSerialExecutor</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#MULTI_SERIAL_EXECUTORS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DistributionManager.syncEvents</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionManager#SYNC_EVENTS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DynamicRegionFactory.disablePersistence</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.cache.DynamicRegionFactory#DISABLE_PERSIST_BACKUP</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DynamicRegionFactory.disableRegisterInterest</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.cache.DynamicRegionFactory#DISABLE_REGISTER_INTEREST</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>DynamicRegionFactory.msDelay</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 250)
-<p>
-See <code>com.gemstone.gemfire.cache.DynamicRegionFactory#regionCreateSleepMillis</code>.
-<p>
-<pre>
-   This controls the delay introduced to try and avoid any race conditions
-   between propagation of newly created Dynamic Regions
-   and the Entries put into them.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Gateway.EVENT_TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 5 * 60 * 1000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.EventWrapper#EVENT_TIMEOUT</code>.
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Gateway.MAXIMUM_SHUTDOWN_PEEKS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.#MAXIMUM_SHUTDOWN_PEEKS</code>.
-<p>
-<pre>
-  The number of times to peek on shutdown before giving up and shutting down.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Gateway.QUEUE_SIZE_THRESHOLD</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 5000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.#QUEUE_SIZE_THRESHOLD</code>.
-<p>
-<pre>
-  The queue size threshold used to warn the user. If the queue reaches this
-  size, log a warning.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Gateway.TOKEN_TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 15000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayImpl.#TOKEN_TIMEOUT</code>.
-<p>
-<pre>
-  Timeout tokens in the unprocessedEvents map after this many milliseconds.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>GetInitialImage.chunkSize</strong></dt>
-<dd>
-<em>Public:</em> ml-rio
-<p>
-<em>Integer</em> (default is 500 * 1024)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.InitialImageOperation#CHUNK_SIZE_IN_BYTES</code>.
-<p>
-<pre>
-   maximum number of bytes to put in a single message
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>GrantorRequestProcessor.ELDER_CHANGE_SLEEP</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 100)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.GrantorRequestProcessor#ELDER_CHANGE_SLEEP</code>.
-<p>
-<pre>
-   The number of milliseconds to sleep for elder change if current elder
-   is departing (and already sent shutdown msg) but is still in the View.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>JGroups.SHUN_SUNSET</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 90)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#isShunned</code>.
-<p>
-This is the length of time during which incoming messages from a departed peer
-are regarded as out-of-order messages and are hence ignored (shunned).
-<p>
-Units are in seconds.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Locator.forceAdminDMType</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.InternalLocator#FORCE_ADMIN_DM_TYPE</code>.
-<p>
-No longer exists as of 7.0.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Locator.forceLocatorDMType</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-Used internally by the locator. It sets it to true to tell other code
-that the member type should be LOCATOR.
-As of 7.0.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>Locator.inhibitDMBanner</strong></dt>
-<dd>
-<em>Public:</em> ml-rio
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.InternalLocator#INHIBIT_DM_BANNER</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>MAX_WAIT_FOR_SPACE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.ComplexDiskRegion#MAX_WAIT_FOR_SPACE</code>.
-<p>
-Units are in seconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>StatArchiveReader.dump</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.StatArchiveReader(File[], ValueFilter[], boolean)</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.StatArchiveReader#dump(PrintWriter)</code>.
-<p>
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>StatArchiveReader.dumpall</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.StatArchiveReader(File[], ValueFilter[], boolean)</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>StateFlushOperation.DEBUG</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-<em>Boolean</em>
-<p>
-See <code>com.gemstone.gemfire.internal.cache.StateFlushOperation#DEBUG</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>ack-threshold-exception</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.ReplyProcessor21#THROW_EXCEPTION_ON_TIMEOUT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>bind.address</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em> (See <code>InetAddress.getByName</code>)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.FD_SOCK#setProperties(Properties)</code>.
-<p>
-See <code>com.gemstone.org.jgroups.protocols.MPING#setProperties(Properties)</code>.
-<p>
-See <code>com.gemstone.org.jgroups.protocols.TP#setProperties(Properties)</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>java.util.concurrent.NanoTimerProvider</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-Default is <code>java.util.concurrent.NanoTimerProvider</code>.
-<p>
-See java.util.concurrent.Utils#providerProp</code>.
-<p>
-This is the name of a class that implements the
-<code>java.util.concurrent.helpers.NanoTimer</code>
-interface.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>com.gemstone.gemfire.internal.OSProcess.trace</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.internal.OSProcess#bgexec(String[], File, File, boolean)</code>.
-<p>
-If this property exists and has non-zero length, additional information about
-the executed command is printed to <code>System.out</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>com.gemstone.gemfire.internal.cache.PartitionedRegion-logging</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#initPrInternals</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore-logging (constructor)</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore.PartitionedRegionDataStore(PartitionedRegion)</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>disable-intelligent-msg</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionAdvisor#disabled</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>enable_canonicalization</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.org.jgroups.Message#DISABLE_CANONICALIZATION</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>force.properties</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.org.jgroups.conf.ConfiguratorFactory class init</code>.
-<p>
-A JGroups configuration string?
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>GemFire.ALWAYS_REPLICATE_UPDATES</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If true then non-replicate regions will turn a remote update they receive
-on an entry they do not have into a local create.
-By default these updates would have been ignored.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.ALLOW_PERSISTENT_TRANSACTIONS</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If true then transactions on persistent regions are allowed.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.artificialGatewayDelay</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> -1
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayEventRemoteDispatcher#ARTIFICIAL_DELAY</code>
-<p>
-Introduce artificial delay (in ms) before batch sending to simulate a real WAN link
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.ASCII_STRINGS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.MsgStreamer#ASCII_STRINGS</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.HeapDataOutputStream#ASCII_STRINGS</code>.
-<p>
-Causes GemFire's implementation of writeUTF to only work for Strings that use the ASCII
-character set. So Strings that use the international characters will be serialized incorrectly.
-If you know your Strings only use ASCII setting this to true can improve your performance if
-you are using writeUTF frequently. Most Strings are serialized using DataSerializer.writeString
-which does not use writeUTF.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.AutoSerializer.SAFE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If set to true forces the ReflectionBasedAutoSerializer to not use the
-sun.misc.Unsafe code. Using Unsafe optimizes performance but reduces
-portablity.
-By default ReflectionBasedAutoSerializer will attempt to use Unsafe but
-silently not use it if it is not available.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.AutoSerializer.UNSAFE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If set to true then the ReflectionBasedAutoSerializer will throw
-an exception if it is not able to use the sun.misc.Unsafe code.
-Using Unsafe optimizes performance but reduces portablity.
-By default ReflectionBasedAutoSerializer will attempt to use Unsafe but
-silently not use it if it is not available.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.BUCKET_RECOVERY_DELAY</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 2)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PRHAFailureAndRecoveryPRovider#BUCKET_RECOVERY_DELAY</code>.
-<p>
-Mean amount of time, in seconds, to delay before starting to
-recover a bucket.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.BUCKET_RECOVERY_JITTER</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 200)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PRHAFailureAndRecoveryPRovider#BUCKET_RECOVERY_JITTER</code>.
-<p>
-<pre>
-   Maximum additional amount of time, in milliseconds, to skew bucket creation, 
-   to stagger recovery and creation in a starting system. 
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.BucketAdvisor.getPrimaryTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 1000 * 60)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.BucketAdvisor#GET_PRIMARY_TIMEOUT</code>.
-<p>
-<pre>
-   Specifies the timeout to wait for a primary when calling {@link 
-   #getPrimary()} 
-</pre>
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.ASYNC_EVENT_LISTENERS</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCache#ASYNC_EVENT_LISTENERS</code>.
-<p>
-If true then cache event listeners will be invoked by a background thread.
-By default they are invoked by the same thread that is doing the cache operation.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.EVENT_QUEUE_LIMIT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 4096)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCache#EVENT_QUEUE_LIMIT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.defaultLockLease</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 120)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCache#DEFAULT_LOCK_LEASE</code>.
-<p>
-<pre>
-  The default duration (in seconds) of a lease on a distributed lock
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.defaultLockTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 60)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCache#DEFAULT_LOCK_TIMEOUT</code>.
-<p>
-<pre>
-  The default number of seconds to wait for a distributed lock
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.defaultSearchTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 300)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCache#DEFAULT_SEARCH_TIMEOUT</code>.
-<p>
-<pre>
-  The default amount of time to wait for a <code>netSearch</code> to
-  complete
-</pre>
-<p>
-Units are in seconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.startSerialNumber</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is Integer.MAX_VALUE - 10)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCache#START_SERIAL_NUMBER</code>.
-<p>
-<pre>
-  Specifies the starting serial number for the {@link #serialNumberSequencer
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.CacheServerLauncher.assignBucketsToPartitions</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.CacheServerLauncher.ASSIGN_BUCKETS</code>.
-<p>
-If a cache server is started using that CacheServerLauncher and this property is set to true, the cache
-server will create all of the buckets when it is started.
-<p>
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.CacheDistributionAdvisor.rolloverThreshold</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor#ROLLOVER_THRESHOLD</code>.
-<p>
-<pre>
-  Used to compare profile versioning numbers against 
-  {@link Integer#MAX_VALUE} and {@link Integer#MIN_VALUE} to determine
-  if a rollover has occurred.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Capacity</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 230000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.ha.HARegionQueueAttributes#BLOCKING_QUEUE_CAPACITY</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DEBUG_EXPIRATION</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.ExpirationScheduler#DEBUG</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DEFAULT_MAX_OPLOG_SIZE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 1024 * 1024 * 1024)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.DiskWriteAttributesImpl#DEFAULT_MAX_OPLOG_SIZE</code>.
-<p>
-<pre>
-  default max in bytes
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.automateFreeResources</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See com.gemstone.gemfire.distributed.internal.locks.DLockService.DLockService(String, DistributedSystem, boolean, boolean, boolean).
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.LockGrantorId.rolloverMargin</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 10000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.LockGrantorId#ROLLOVER_MARGIN</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.debug.disallowLockRequestLoop</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_LOCK_REQUEST_LOOP</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.debug.disallowLockRequestLoopCount</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_LOCK_REQUEST_LOOP_COUNT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.debug.disallowNotHolder</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_DISALLOW_NOT_HOLDER</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.debug.enforceSafeExit</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_ENFORCE_SAFE_EXIT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.debug.nonGrantorDestroyLoop</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_NONGRANTOR_DESTROY_LOOP</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.debug.nonGrantorDestroyLoopCount</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#DEBUG_NONGRANTOR_DESTROY_LOOP_COUNT</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DLockService.notGrantorSleep</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 2000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#NOT_GRANTOR_SLEEP</code>.
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DistributedLockService.startSerialNumber</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is Integer.MAX_VALUE - 10)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.locks.DLockService#START_SERIAL_NUMBER</code>.
-<p>
-<pre>
-  Specifies the starting serial number for the {@link #serialNumberSequencer}
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DO_EXPENSIVE_VALIDATIONS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.LocalRegion#DO_EXPENSIVE_VALIDATIONS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DistributionAdvisor.startVersionNumber</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is Integer.MAX_VALUE - 10)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionAdvisor#START_VERSION_NUMBER</code>.
-<p>
-<pre>
-   Specifies the starting version number for the {@link 
-   #profileVersionSequencer}.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.EXPIRY_THREADS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 0)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.ExpiryTask class init</code>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.EXPIRY_UNITS_MS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.LocalRegion#EXPIRY_UNITS_MS</code>.
-<p>
-<pre>
-   Used by unit tests to set expiry to milliseconds instead of the default
-   seconds. Used in ExpiryTask.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.FD_TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 0)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-If <code>gemfire.useFD</code> is true or this property's value is non-zero,
-the <code>FD</code> protocol is inserted on the JGroups stack.
-<p>
-Furthermore, the <code>MEMBER_TIMEOUT</code> string is substituted with this
-value in the JGroups default config, which in turn sets the
-<code>timeout</code> property in the <code>VERIFY_SUSPECT</code> protocol,
-which otherwise defaults to 2000 milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.IDLE_THREAD_TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 15000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.PooledExecutorWithDMStats#PooledExecutorWithDMStats(BlockingQueue, int, PoolStatHelper, ThreadFactory)</code>.
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.isDedicatedServer</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.CacheServerLauncher.#isDedicatedCacheServer</code>
-<p>
-Tell admin API whether the member is a dedicated cache server
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.memoryEventTolerance</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default for Sun/Oracle is 1 and for others 5)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.control.InternalResourceManager.#MEMORY_EVENT_TOLERANCE</code>
-<p>
-Number of memory events that ResourceManager will tolerate before throwing a LME. Useful with JVM 1.7
-</dd>
-
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.MAX_PENDING_CANCELS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 10000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.ExpirationScheduler#MAX_PENDING_CANCELS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.MIN_BUCKET_SIZE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.partitioned.SizedBasedLoadProbe.#MIN_BUCKET_SIZE</code>
-<p>
-Allows setting the minimum bucket size to be used during rebalance
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.DISABLE_MOVE_PRIMARIES_ON_STARTUP</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If true then pr primary buckets will not be balanced when a new member is started.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.MessageTimeToLive</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 180)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.ha.HARegionQueue#REGION_ENTRY_EXPIRY_TIME</code>.
-<p>
-<pre>
-   Constant used to set region entry expiry time using system property.
-</pre>
-<p>
-Units are in seconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.ON_DISCONNECT_CLEAR_PDXTYPEIDS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.cache.client.internal.PoolImpl</code>
-<p>
-Clear pdxType ids when client disconnects from servers
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PRDebug</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.admin.GemFireMonitorService#processGetValCommand</code>.
-<p>
-See <code>com.gemstone.gemfire.admin.remote.RemoteCacheInfo.RemoteCacheInfo(GemFireCache)</code>.
-<p>
-See <code>com.gemstone.gemfire.admin.remote.RootRegionResponse#create(DistributionManager, InternalDistributedMember)</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore#createBucketRegion(int)</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionHelper#getPRConfigRegion(Region, Cache)</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PREFER_DESERIALIZED</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.CachedDeserializableFactory#PREFER_DESERIALIZED</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PREFER_SERIALIZED</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<P>
-See <code>com.gemstone.gemfire.internal.cache.CachedDeserializableFactory.#PREFER_DESERIALIZED</code>
-<p>
-Enable storing the values in serialized form
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PRSanityCheckDisabled</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.partitioned.PRSanityCheckMessage#schedule</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PRSanityCheckInterval</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 5000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.partitioned.PRSanityCheckMessage#schedule</code>.
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PartitionedRegionRandomSeed</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (defaults to NanoTimer.getTime())
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#rand</code>.
-<p>
-Seed for the random number generator in this class.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Query.COMPILED_QUERY_CLEAR_TIME</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (defaults to 10 * 60 * 1000)
-<p>
-See <code>com.gemstone.gemfire.cache.query.internal.DefaultQuery.#COMPILED_QUERY_CLEAR_TIME</code>
-<p>
-Frequency of clean up compiled queries
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Query.VERBOSE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<p>
-See <code>com.gemstone.gemfire.cache.query.internal.DefaultQuery.#QUERY_VERBOSE</code><em>Boolean</em> (defaults to false)
-<p>
-Enable verbose logging in the query execution
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.QueryService.QueryHeterogeneousObjects</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (defaults to true)
-<p>
-See <code>com.gemstone.gemfire.cache.query.internal.DefaultQueryService.#QUERY_HETEROGENEOUS_OBJECTS</code>
-<p>
-Allow query on region with heterogeneous objects
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.randomizeOnMember</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (defaults to false)
-<p>
-See <code>com.gemstone.gemfire.cache.execute.internal.FunctionServiceManager.#RANDOM_onMember</code>
-<p>
-When set, onMember execution will be executed on a random member.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.RegionAdvisor.volunteeringThreadCount</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.partitioned.RegionAdvisor#VOLUNTERING_THREAD_COUNT</code>.
-<p>
-<pre>
-  Number of threads allowed to concurrently volunteer for bucket primary.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.VIEW_BUNDLING_WAIT_TIME</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 150)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.pbcast.GMS#BUNDLE_WAITTIME</code>.
-<p>
-<pre>
-     GemStoneAddition - amount of time to wait for additional join/leave
-     requests before processing.  Set gemfire.VIEW_BUNDLING_WAIT_TIME to
-     the number of milliseconds.  Defaults to 150ms.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.VM_OWNERSHIP_WAIT_TIME</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is Long.MAX_VALUE)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#VM_OWNERSHIP_WAIT_TIME</code>
-<p>
-<pre>
-  Time to wait for for acquiring distributed lock ownership
-</pre>
-<p>
-Time is specified in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.asynchronous-gateway-distribution-enabled</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayHubImpl#USE_ASYNCHRONOUS_DISTRIBUTION</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.bridge.disableShufflingOfEndpoints</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ConnectionProxyImpl#disableShufflingOfEndpoints</code>.
-<p>
-<pre>
-   A debug flag, which can be toggled by tests to disable/enable shuffling of
-   the endpoints list
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.bridge.suppressIOExceptionLogging</strong></dt>
-<dd>
-<em>Public:</em> jpmc-jets
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>ConnectionProxyImpl</code>,
-<code>ServerConnection</code>, and
-<code>ServerMonitor</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.BridgeServer.FORCE_LOAD_UPDATE_FREQUENCY</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> 10
-<p>
-See <code>com.gemstone.gemfire.internal.cache.BridgeServerImpl.#FORCE_LOAD_UPDATE_FREQUENCY</code>
-<p>
-How often to force a BridgeServer load message to be sent
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.BucketRegion.alwaysFireLocalListeners</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> default is false
-<p>
-See <code>com.gemstone.gemfire.internal.cache.BucketRegion.#FORCE_LOCAL_LISTENERS_INVOCATION</code>
-<p>
-Enable invocation of listeners in both primary and secondary buckets
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.Cache.MAX_QUERY_EXECUTION_TIME</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Integer</em> default is -1
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GemFireCacheImpl.#MAX_QUERY_EXECUTION_TIME</code>
-<p>
-Limit the max query execution time (ms)
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.CLIENT_FUNCTION_TIMEOUT</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> default is 0
-<p>
-See <code>com.gemstone.gemfire.cache.client.internal.ConnectioImpl.#CLIENT_FUNCTION_TIMEOUT</code>
-<p>
-Timeout to set for client function execution
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.clientMonitorLogFile</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em> (default is unset, to use System.out)
-<p>
-See <code>com.gemstone.gemfire.admin.GemFireClientAdminTool#logFileName</code>.
-<p>
-This is a file name.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.clientSocketFactory</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.internal.SocketCreator</code>
-<p>
-Non-standard Socket creator
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.cq.EXECUTE_QUERY_DURING_INIT</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> true
-<p>
-See <code>com.gemstone.gemfire.cache.query.internal.CqService.#EXECUTE_QUERY_DURING_INIT</code>
-<p>
-When set to false, avoid query execution during CQ when initial results are not required
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.debug</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.SharedLibrary#getName</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.debug-frag2</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.FRAG2#DEBUG_FRAG2</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disableAccessTimeUpdateOnPut</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.AbstractRegionEntry.#DISABLE_ACCESS_TIME_UPDATE_ON_PUT</code>
-<p>
-Disable access time updates on put event
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disable-event-old-value</strong></dt>
-<dd>
-<em>Public:</em> jpmc-cbb
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.EntryEventImpl#EVENT_OLD_VALUE</code>.
-<p>
-Discussing EVENT_OLD_VALUE = !Boolean.getBoolean():
-<pre>
-   If true (the default) then preserve old values in events.
-   If false then mark non-null values as being NOT_AVAILABLE.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disablePartitionedRegionBucketAck</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion.#DISABLE_SECONDARY_BUCKET_ACK</code>
-<p>
-Enable no-ack replication in bucket regions
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disable-udp-direct-ack</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.DistributedCacheOperation#UDP_DISABLE_DIRECT_ACK</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disableNotificationWarnings</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientProxy#LOG_DROPPED_MSGS</code>.
-<p>
-Discussing LOG_DROPPED_MSGS = !Boolean.getBoolean():
-<pre>
-   Defaults to true; meaning do some logging of dropped client notification
-   messages. Set the system property to true to cause dropped messages to NOT
-   be logged.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disableShutdownHook</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If true then the shutdown hooks of the DistributedSystem, Locator, and Agent
-are not run on shutdown. This was added for bug 38407.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disallowMcastDefaults</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-Used by unit tests to make sure the GemFire mcast-port has been configured
-to a non-default value.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.disk.recoverValues</strong></dt>
-<dd>
-<em>Public:</em> jpmc-cbb
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.SimpleDiskRegion</code>.
-<p>
-<pre>
-  Whether to get the values from disk to memory on recovery
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.EXPIRATIONS_CAUSE_CONFLICTS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.LocalRegion.#EXPIRATIONS_CAUSE_CONFLICTS</code>
-<p>
-Allow expirations to be done by multiple threads, avoiding the 
-pendingExpires list (set in conjunction with gemfire.EXPIRY_THREADS)
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.enableCpuTime</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-This property causes the per thread stats to also measure cpu time.
-This property is ignored unless "gemfire.enableThreadStats" is also set to true.
-See java.lang.management.ThreadMXBean.setThreadCpuTimeEnabled(boolean)
-for more information.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.enableContentionTime</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-This property causes the per thread stats to also measure contention.
-This property is ignored unless "gemfire.enableThreadStats" is also set to true.
-See java.lang.management.ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-for more information.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.enableThreadStats</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-This property causes the per thread stats to be collected.
-See java.lang.management.ThreadMXBean
-for more information.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.fast-member-timeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1000)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.VERIFY_SUSPECT#suspect</code>.
-<p>
-<pre>
-  artificially age the entry for faster processing
-</pre>
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.gateway-conserve-sockets-allowed</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.GatewayHubImpl#ALLOW_CONSERVE_SOCKETS</code>.
-<p>
-<pre>
-   A boolean that defines whether the value of the conserve-sockets property
-   in the gemfire.properties file is preserved. By default, the value in
-   gemfire.properties is overridden so that queue ordering is preserved. If
-   ALLOW_CONSERVE_SOCKETS=true, then the conserve-sockets property is
-   used and queue ordering may not be preserved. This property can be set
-   using the System property called 'gemfire.gateway-conserve-sockets-allowed'.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.gateway-queue-no-ack</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.SingleWriteSingleReadRegionQueue#NO_ACK</code>.
-<p>
-<pre>
-   Whether the <code>Gateway</code> queue should be no-ack instead of ack.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.GatewayReceiver.ApplyRestries</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-If true causes the GatewayReceiver will apply batches it has already received.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.gateway.ApplyRetries</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection#APPLY_RETRIES</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.GetInitialImage.CHUNK_PERMITS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 16)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.InitialImageOperation.#CHUNK_PERMITS</code>
-<p>
-Allowed number of in-flight initial image chunks. This property controls how many requests for GII chunks can be handled simultaneously.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.GetInitialImage.MAX_PARALLEL_GIIS</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Integer</em> (default is 5)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.InitialImageOperation.#MAX_PARALLEL_GIIS </code>
-<p>
-Allowed number of GIIs in parallel. This property controls how many regions can do GII simultaneously. Each replicated region and partitioned region bucket counts against this number.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.haltOnAssertFailure</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.Assert#debug</code>.
-<p>
-Causes VM to hang on assertion failure (to allow a debugger to be attached)
-instead of exiting the process.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.jg-can_bind_to_mcast_addr</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-On OSes that support it bind to the mcast_addr to prevent traffic on 
-different addresses, but on the same port.
-Setting to true can avoid cross address chatter.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.launcher.registerSignalHandlers</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-Causes the code used by gfsh to launch a server or locator to install
-signal handlers using sun.misc.Signal.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.lightLocators</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.gui.RemoteCommandManager#getLocatorStart</code>.
-<p>
-Adds the "-lightweight" argument when creating the locator.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.loadLibrary.debug</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.PureJavaMode#debug</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.locatorXms</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.internal.gui.RemoteCommandManager#getLocatorStart</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.gui.StartStopManager#startLocalLocator</code>.
-<p>
-A JVM property, esp. "-Xms150m".
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.locatorXmx</strong></dt>
-<em>String</em>
-<p>
-<dd>
-<em>Public:</em> false
-<p>
-See <code>com.gemstone.gemfire.internal.gui.RemoteCommandManager#getLocatorStart</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.gui.StartStopManager#startLocalLocator</code>.
-<p>
-A JVM property, esp. "-Xmx400m"
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.locators</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See the constructor for <code>com.gemstone.gemfire.distributed.internal.InternalLocator</code>.
-<p>
-If this property is not found in gemfire.properties, the system property
-of the same name is used.
-</dd>
-
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.lru.maxSearchEntries</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is -1)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.lru.NewLRUClockHand#maxEntries</code>.
-<p>
-This is the maximum number of "good enough" entries to pass over for eviction
-before settling on the next acceptable entry.  This prevents excessive cache
-processing to find a candidate for eviction.
-<p>
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.order-pr-gets</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.partitioned.GetMessage#ORDER_PR_GETS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.partitionedRegionRetryTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 60 * 60 * 1000)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegion#retryTimeout</code>
-<p>
-<pre>
-  The maximum milliseconds for retrying operations
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.PRQueryProcessor.numThreads</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> 1+ (default is 2)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PRQueryProcessor#executeQuery</code>
-<p>
-<pre>
-  The number of concurrent threads to use within a single VM to execute queries
-  on a Partitioned Region. If set to 1 (or less) then queries are run
-  sequentially with a single thread.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.pureJavaMode</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.PureJavaMode class init</code>.
-<p>
-Force use of "pure" Java mode (native libraries will not be loaded)
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.SPECIAL_DURABLE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.cache.client.internal.PoolImpl.#SPECIAL_DURABLE</code>
-<p>
-Makes multiple durable subscriptions from same client unique. on java client ensures only a single server proxy is created but will limit the client to a single active client pool at a time
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.statsDisabled</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.InternalDistributedSystem#statsDisabled</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.statusPollingDelay</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 5000)
-<p>
-See <code>com.gemstone.gemfire.admin.GemFireClientAdminTool#_statusPollingDelay</code>.
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.syncWrites</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em>
-<p>
-See <code>com.gemstone.gemfire.internal.cache.Oplog#SYNC_WRITES</code>.
-<p>
-<pre>
-   This system property instructs that writes be synchronously written to disk
-   and not to file system. (Use rwd instead of rw - RandomAccessFile property)
-</pre>
-<p>
-TBA
-</dd>
-	
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.TcpServer.MAX_POOL_SIZE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em>
-<p>
-<pre>
-   This property limits the number of threads that the locator will
-	use for processing gossip messages and server location
-	requests.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.useFD</strong></dt>
-<dd>
-<em>Public:</em> true
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.validateMessageSize</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionConfig#VALIDATE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfire.validateMessageSizeCeiling</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 8 * 1024 * 1024)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.DistributionConfig#VALIDATE_CEILING</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemfirePropertyFile</strong></dt>
-<dd>
-<em>Public:</em> yes
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.distributed.DistributedSystem#PROPERTY_FILE</code>.
-<p>
-<pre>
-     The <code>PROPERTY_FILE</code> is the name of the
-     property file that the connect method will check for when
-     it looks for a property file.
-     The file will be searched for, in order, in the following directories:
-     <ol>
-     <li> the current directory
-     <li> the home directory
-     <li> the class path
-     </ol>
-     Only the first file found will be used.
-     <p>
-     The default value of PROPERTY_FILE is
-     <code>"gemfire.properties"</code>.  However if the
-     "gemfirePropertyFile" system property is set then its value is
-     the value of PROPERTY_FILE. If this value is a relative file
-     system path then the above search is done.  If it is an absolute
-     file system path then that file must exist; no search for it is
-     done.
-     @since 5.0
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gemstone.MAX_BUCKET_GRAB_ATTEMPTS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 20)
-<p>
-See <code>com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore.BucketRecoverer#grabBuckets</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gfAgentDebug</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em>
-<p>
-See <code>com.gemstone.gemfire.admin.jmx.internal.AgentImpl#checkDebug</code>.
-<p>
-<pre>
-  Enables mx4j tracing if Agent debugging is enabled.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gfAgentPropertyFile</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.admin.jmx.internal.AgentConfigImpl#retrievePropertyFile</code>.
-<p>
-<pre>
-   The <code>propertyFile</code> is the name of the property file that will 
-   be loaded on startup of the Agent.
-   <p>
-   The file will be searched for, in order, in the following directories:
-   <ol>
-   <li> the current directory
-   <li> the home directory
-   <li> the class path
-   </ol>
-   Only the first file found will be used.
-   <p>
-   The default value of propertyFile is <code>"agent.properties"</code>. However 
-   if the "gfAgentPropertyFile" system property is set then its value is the 
-   value of propertyFile. If this value is a relative file system path then 
-   the above search is done. If its an absolute file system path then that 
-   file must exist; no search for it is done.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gfc.propertyfile.init</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.internal.gui.Service#initProps()</code>.
-<p>
-This is name of a <code>Properties</code> file read at startup.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>gfc.propertyfile.onclose</strong></dt>
-<em>String</em>
-<p>
-See <code>com.gemstone.gemfire.internal.gui.Service#saveProps</code>.
-<dd>
-<em>Public:</em> false
-<p>
-This is the name of a <code>Properties</code> file to which some properties
-are saved a close.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>ignore.bind.address</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.MPING#setProperties(Properties)</code>.
-<p>
-See <code>com.gemstone.org.jgroups.util.Util#isBindAddressPropertyIgnored</code>.
-<p>
-If <code>true</code>, the value of the
-<code>bind.address</code> property is ignored.
-<p>
-This is used in MPING, FD_SOCK, and TP.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>install</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.gui.NavigationPane#NavigationPane()</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.gui.Service#Service()</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>java.net.preferIPv6Addresses</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.org.jgroups.util.Util#getFirstNonLoopbackAddress</code>.
-<p>
-TBA
-<p>
-Is this a standard Java property?
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>jboss.partition.udpGroup</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em> (See <code>InetAddress.getByName</code>)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.UDP#setProperties</code>.
-<p>
-<pre>
-  The multicast address used for sending and receiving packets 
-</pre>
-If you manage to get here without setting mcast_addr_name, the default
-is 228.8.8.8.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>jboss.partition.udpPort</strong></dt>
-<em>Integer</em>
-<p>
-See <code>com.gemstone.org.jgroups.protocols.UDP#setProperties</code>.
-<dd>
-<em>Public:</em> false
-<p>
-<p>
-<pre>
-  The multicast port used for sending and receiving packets
-</pre>
-<p>
-If you manage to get here without setting mcast_port, the default value is 7600.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>jta.VERBOSE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em>
-<p>
-See <code>com.gemstone.gemfire.internal.jta.GlobalTransaction#VERBOSE</code>.
-<p>
-See <code>com.gemstone.gemfire.internal.jta.TransactionManagerImpl#VERBOSE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>jta.defaultTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 600)
-<p>
-See <code>com.gemstone.gemfire.internal.jta.TransactionManagerImpl#DEFAULT_TRANSACTION_TIMEOUT</code>.
-<p>
-Units are in seconds.
-<p>
-TBA Is this a standard JTA property?
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>local_addr.timeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 30000)
-<p>
-See <code>com.gemstone.org.jgroups.JChannel#LOCAL_ADDR_TIMEOUT</code>.
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>mergelogs.TRIM_TIMESTAMPS</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.LogFileParser#TRIM_TIMESTAMPS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>org.apache.commons.logging.log</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em> (default is org.apache.commons.logging.impl.SimpleLog)
-<p>
-See <code>com.gemstone.gemfire.admin.jmx.internal.AgentImpl class init</code>.
-<p>
-This is the name of a class.
-<p>
-This property is also used by commons-logging.jar (and
-discussed below).  It is called out here
-because of its explicit use in the JMX Agent.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>osStatsDisabled</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.GemFireStatSampler#osStatsDisabled</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.DEBUG</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#DEBUG</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.DEBUG_FAIL_FIRST</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.pbcast.ClientGmsImpl#join(Address)</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.VERBOSE</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#QUIET</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.ackSenderThread</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.UNICAST#start</code>.
-<p>
-Creates an <code>AckSender</code> thread.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.backlog</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 50)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#BACKLOG</code>.
-<p>
-<pre>
-  backlog is the "accept" backlog configuration parameter all
-  conduits server socket */
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.batchBufferSize</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 1024 * 1024)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.Connection#BATCH_BUFFER_SIZE</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.batchFlushTime</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> in JGroups, <em>Integer</em> in Connection.
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code> (default is 20).
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.Connection#BATCH_FLUSH_MS</code>.
-(Default is 50)
-<p>
-Replaces <code>BUNDLING_TIMEOUT</code> in the JGroups config template.
-This in turn sets the <code>max_bundle_timeout</code> property in the
-<code>TP</code> JGroups protocol:
-<p>
-<pre>
-    Max number of milliseconds until queued messages are sent. Messages are
-    sent when max_bundle_size or
-    max_bundle_timeout has been exceeded (whichever occurs faster)
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.batchSends</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.Connection#BATCH_SENDS</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.debugConnect</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.defaultConcurrencyLevel</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is the number of processors on current machine,
-but no less than 2)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.direct.DirectChannel#DEFAULT_CONCURRENCY_LEVEL</code>.
-<p>
-<pre>
-   Return how many concurrent operations should be allowed by default.
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.defaultLogLevel</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>String</em> (one of "config", "fine", "finer", or "finest")
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.TCPConduit#getLogger</code>.
-<p>
-Used only if this class needs to create a logger.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.directAckTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 15000)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.DirAck#DIRACK_TIMEOUT</code>.
-<p>
-<pre>
-  warning timer period for log message while waiting for acks
-</pre>
-<p>
-Units are in milliseconds.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.disableBatching</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (default is false)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-If true, sets <code>ENABLE_BUNDLING</code> to false and
-<code>BUNDLING_TIMEOUT</code> to 30 in the JGroups config template; otherwise
-it sets <code>ENABLE_BUNDLING</code> to true and <code>BUNDLING_TIMEOUT</code>
-to <code>p2p.batchFlushTime</code> (30 if not set).
-<p>
-<code>ENABLE_BUNDLING</code> maps to the <code>enable_bundling</code> property
-in <code>UDP</code>, and <code>BUNDLING_TIMEOUT</code> maps to the 
-<code>max_bundle_timeout</code> property in <code>UDP</code>.
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.disableDirAckBypass</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (defaults to false)
-<p>
-See <code>com.gemstone.org.jgroups.protocols.DirAck#DIRACK_BYPASS</code>.
-<p>
-See <code>com.gemstone.org.jgroups.protocols.TP#dirackBypass</code>.
-<p>
-<pre>
-   set -Dp2p.disableDirAckBypass=true to disengage bypassing most of the stack
-   on outgoing messages
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.disableSocketWrite</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Boolean</em> (defaults to false)
-<p>
-See <code>com.gemstone.gemfire.internal.tcp.Connection#SOCKET_WRITE_DISABLED</code>.
-<p>
-<pre>
-  use to test message prep overhead (no socket write).
-  WARNING: turning this on completely disables distribution of batched sends
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.disconnectDelay</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 3000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#destroyMember</code>.
-<p>
-TBA Workaround for bug 34010: small pause inserted before closing
-reader threads for a departed member.
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.discoveryProbes</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Integer</em> (default is 2)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-This substitutes the <code>NUM_PING_REQUESTS</code> field in the JGroups
-config template, which in turn sets the <code>num_ping_requests</code> property
-in the <code>Discovery</code> protocol.
-<p>
-<pre>
-Number of GET_MBRS_REQ messages to be sent (min=1), distributed over timeout ms
-</pre>
-<p>
-TBA
-</dd>
-
-<!-- -------------------------------------------------------  -->
-<dt><strong>p2p.discoveryTimeout</strong></dt>
-<dd>
-<em>Public:</em> false
-<p>
-<em>Long</em> (default is 1000)
-<p>
-See <code>com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager#createChannel</code>.
-<p>
-Sets the <code>DISCOVERY_TIMEOUT</code> field in the JGroups template, which
-in turn sets the <code>time

<TRUNCATED>


[30/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
deleted file mode 100644
index b334ebb..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
+++ /dev/null
@@ -1,158 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 9000 2175 10200 2925
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9000 2550 10200 2550
-# HREF="../Acceptor.html" ALT="Acceptor"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9000 2175 10200 2175 10200 2925 9000 2925 9000 2175
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 9000 2475 10200 2475
-4 0 0 50 -1 0 12 0.0000 4 135 945 9150 2775 ServerSocket\001
-4 0 0 50 -1 0 12 0.0000 4 180 645 9300 2400 Acceptor\001
--6
-6 7350 2475 8775 2775
-# HREF="ServerConnection.html" ALT="ServerConnection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7350 2475 8775 2475 8775 2775 7350 2775 7350 2475
-4 0 0 50 -1 0 12 0.0000 4 135 1275 7425 2700 ServerConnection\001
--6
-6 7350 3375 8775 3675
-# HREF="ServerConnection.html" ALT="ServerConnection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7350 3375 8775 3375 8775 3675 7350 3675 7350 3375
-4 0 0 50 -1 0 12 0.0000 4 135 1275 7425 3600 ServerConnection\001
--6
-6 7350 2925 8775 3225
-# HREF="ServerConnection.html" ALT="ServerConnection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7350 2925 8775 2925 8775 3225 7350 3225 7350 2925
-4 0 0 50 -1 0 12 0.0000 4 135 1275 7425 3150 ServerConnection\001
--6
-6 2850 2475 5475 3675
-6 2850 2925 3675 3225
-# HREF="../Endpoint.html" ALT="Endpoint"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2850 2925 3675 2925 3675 3225 2850 3225 2850 2925
-4 0 0 50 -1 0 12 0.0000 4 180 645 2925 3150 Endpoint\001
--6
-6 4500 3375 5475 3675
-# HREF="../Connection.html" ALT="Connection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 3375 5475 3375 5475 3675 4500 3675 4500 3375
-4 0 0 50 -1 0 12 0.0000 4 135 810 4575 3600 Connection\001
--6
-6 4500 2925 5475 3225
-# HREF="../Connection.html" ALT="Connection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 2925 5475 2925 5475 3225 4500 3225 4500 2925
-4 0 0 50 -1 0 12 0.0000 4 135 810 4575 3150 Connection\001
--6
-6 4500 2475 5475 2775
-# HREF="../Connection.html" ALT="Connection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 2475 5475 2475 5475 2775 4500 2775 4500 2475
-4 0 0 50 -1 0 12 0.0000 4 135 810 4575 2700 Connection\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3675 3075 4500 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3675 3075 4500 2625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3675 3075 4500 3525
--6
-6 2850 4650 5475 5850
-6 2850 5100 3675 5400
-# HREF="../Endpoint.html" ALT="EndPoint"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2850 5100 3675 5100 3675 5400 2850 5400 2850 5100
-4 0 0 50 -1 0 12 0.0000 4 180 645 2925 5325 Endpoint\001
--6
-6 4500 5550 5475 5850
-# HREF="../Connection.html" ALT="Connection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 5550 5475 5550 5475 5850 4500 5850 4500 5550
-4 0 0 50 -1 0 12 0.0000 4 135 810 4575 5775 Connection\001
--6
-6 4500 5100 5475 5400
-# HREF="../Connection.html" ALT="Connection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 5100 5475 5100 5475 5400 4500 5400 4500 5100
-4 0 0 50 -1 0 12 0.0000 4 135 810 4575 5325 Connection\001
--6
-6 4500 4650 5475 4950
-# HREF="../Connection.html" ALT="Connection"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4500 4650 5475 4650 5475 4950 4500 4950 4500 4650
-4 0 0 50 -1 0 12 0.0000 4 135 810 4575 4875 Connection\001
--6
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3675 5250 4500 5250
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3675 5250 4500 4800
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3675 5250 4500 5700
--6
-6 10650 2175 12375 3075
-4 0 0 50 -1 16 12 0.0000 4 180 1710 10650 2325 The Acceptor Thread\001
-4 0 0 50 -1 16 12 0.0000 4 180 1620 10650 2565 services requests to\001
-4 0 0 50 -1 16 12 0.0000 4 120 1275 10650 2805 create a remote\001
-4 0 0 50 -1 16 12 0.0000 4 135 990 10650 3045 Connection.\001
--6
-6 450 3675 1950 4650
-6 600 4200 1800 4500
-# HREF="ServerMonitor.html" ALT="ServerMonitor"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 600 4200 1800 4200 1800 4500 600 4500 600 4200
-4 0 0 50 -1 0 12 0.0000 4 135 1050 675 4425 ServerMonitor\001
--6
-# HREF="../ConnectionProxy.html" ALT="ConnectionProxy"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 450 3675 1950 3675 1950 4650 450 4650 450 3675
-4 0 0 50 -1 0 12 0.0000 4 180 1245 600 3900 ConnectionProxy\001
--6
-6 600 2775 1725 3075
-# HREF="../../../../cache/client/Pool.html" ALT="ClientPool"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 600 2775 1725 2775 1725 3075 600 3075 600 2775
-4 0 0 50 -1 -1 12 0.0000 4 180 975 675 3000 ClientPool\001
--6
-2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
-	 6450 375 6450 6750
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7200 3825 10425 3825 10425 1650 7200 1650 7200 3825
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
-	 5475 2625 7350 2625
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
-	 5475 3525 7350 3525
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
-	 5475 3075 7350 3075
-# HREF="../../../../cache/util/CacheServer.html" ALT="CacheServer"
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8025 4500 9675 4500 9675 5850 8025 5850 8025 4500
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1950 4125 2850 3075
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1950 4125 2850 5250
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
-	 5475 4800 8025 4800
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
-	 5475 5250 8025 5250
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
-	 5475 5700 8025 5700
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1125 3075 1125 3675
-4 0 0 50 -1 0 16 0.0000 4 165 615 8775 825 Server\001
-4 0 0 50 -1 0 12 0.0000 4 180 945 8400 1875 CacheServer\001
-4 0 0 50 -1 0 12 0.0000 4 135 480 6225 2550 Socket\001
-4 0 0 50 -1 0 12 0.0000 4 135 480 6225 3450 Socket\001
-4 0 0 50 -1 0 12 0.0000 4 135 480 6225 3000 Socket\001
-4 0 0 50 -1 0 16 0.0000 4 165 570 2700 825 Client\001
-4 0 0 50 -1 0 12 0.0000 4 180 945 8400 4725 CacheServer\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.gif
deleted file mode 100644
index 3ecc5c4..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.fig
deleted file mode 100644
index 2d615a6..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.fig
+++ /dev/null
@@ -1,150 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-# Describes how direct shared
-# objects are mapped into JOM
-1200 2
-6 1125 1650 5625 3975
-6 1725 2400 2325 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 2550 2325 2550
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 2700 2325 2700
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 2850 2325 2850
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 3000 2325 3000
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 2025 2400 2025 3150
-2 2 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1725 2400 2325 2400 2325 3150 1725 3150 1725 2400
--6
-6 3075 2775 3900 3675
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3300 2775 3450 2775 3450 2925 3300 2925 3300 2775
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3075 3150 3225 3150 3225 3300 3075 3300 3075 3150
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3525 3150 3675 3150 3675 3300 3525 3300 3525 3150
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3300 3525 3450 3525 3450 3675 3300 3675 3300 3525
-2 1 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3450 2925 3600 3150
-2 1 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3525 3300 3375 3525
-2 1 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3300 2925 3150 3150
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3750 3525 3900 3525 3900 3675 3750 3675 3750 3525
-2 1 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3675 3300 3825 3525
--6
-6 4575 2400 5175 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4575 2550 5175 2550
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4575 2700 5175 2700
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4575 2850 5175 2850
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4575 3000 5175 3000
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4875 2400 4875 3150
-2 2 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4575 2400 5175 2400 5175 3150 4575 3150 4575 2400
--6
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2475 3300 2775
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2625 3525 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2775 3075 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2925 3750 3525
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 2475 3450 2775
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 2625 3225 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 2775 3675 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 2925 3450 3525
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 3075 3300 3525
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 3075 3900 3525
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1125 1650 5625 1650 5625 3975 1125 3975 1125 1650
-4 0 2 50 0 0 12 0.0000 4 180 705 1725 2250 objIdMap\001
-4 0 1 50 0 0 12 0.0000 4 135 660 1275 1875 Java VM\001
-4 0 2 50 0 0 12 0.0000 4 180 810 4500 2250 specialMap\001
--6
-6 5625 2550 7650 3000
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 5625 2550 7650 2550
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 5625 3000 7650 3000
-4 0 4 50 0 0 12 0.0000 4 135 1440 5925 2850 GemFireConnection\001
--6
-6 7650 1950 9375 3675
-6 8025 2550 8850 3450
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 8250 2550 8400 2550 8400 2700 8250 2700 8250 2550
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 8025 2925 8175 2925 8175 3075 8025 3075 8025 2925
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 8475 2925 8625 2925 8625 3075 8475 3075 8475 2925
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 8250 3300 8400 3300 8400 3450 8250 3450 8250 3300
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 8700 3300 8850 3300 8850 3450 8700 3450 8700 3300
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 8250 2700 8100 2925
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 8400 2700 8550 2925
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 8475 3075 8325 3300
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 8625 3075 8775 3300
--6
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7650 1950 9375 1950 9375 3675 7650 3675 7650 1950
-4 0 4 50 0 0 12 0.0000 4 180 1155 7800 2175 Shared Memory\001
--6
-6 1125 4200 7875 4650
-4 0 0 50 0 1 12 0.0000 4 180 6750 1125 4350 Unlike direct shared objects that are enhanced to know their object id, the "special object map"\001
-4 0 0 50 0 1 12 0.0000 4 180 6195 1125 4590 is required to keep track of the id of the JOM representation of the copy shared objects.\001
--6
-6 6450 4950 9450 6150
-6 6450 4950 9450 6150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 6600 5475 7275 5475
-2 1 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6600 5700 7275 5700
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6600 5925 7275 5925
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6450 4950 9450 4950 9450 6150 6450 6150 6450 4950
-4 0 0 50 0 -1 12 0.0000 4 135 1515 7500 5550 Weak JOM reference\001
-4 0 0 50 0 -1 12 0.0000 4 180 1590 7500 5775 Strong JOM reference\001
-4 0 0 50 0 -1 12 0.0000 4 180 1815 7500 6000 Shared memory reference\001
-4 0 0 50 0 2 12 0.0000 4 180 570 6600 5175 Legend\001
--6
--6
-4 0 0 50 0 2 12 0.0000 4 180 1650 5100 1275 Copy Shared Objects\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.gif
deleted file mode 100644
index dce7de3..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/cs-maps.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.fig
deleted file mode 100644
index 6456b56..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.fig
+++ /dev/null
@@ -1,105 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-# Describes how direct shared
-# objects are mapped into JOM
-1200 2
-6 1125 1650 3975 3975
-6 1725 2400 2325 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 2550 2325 2550
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 2700 2325 2700
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 2850 2325 2850
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 1725 3000 2325 3000
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 2025 2400 2025 3150
-2 2 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1725 2400 2325 2400 2325 3150 1725 3150 1725 2400
--6
-6 3075 2775 3675 3675
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3300 2775 3450 2775 3450 2925 3300 2925 3300 2775
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3075 3150 3225 3150 3225 3300 3075 3300 3075 3150
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3525 3150 3675 3150 3675 3300 3525 3300 3525 3150
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3300 3525 3450 3525 3450 3675 3300 3675 3300 3525
--6
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2475 3300 2775
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2625 3525 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2775 3075 3150
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 2175 2925 3300 3525
-2 2 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1125 1650 3975 1650 3975 3975 1125 3975 1125 1650
-4 0 2 50 0 0 12 0.0000 4 180 705 1725 2250 objIdMap\001
-4 0 1 50 0 0 12 0.0000 4 135 660 1275 1875 Java VM\001
--6
-6 6000 1950 7725 3675
-6 6375 2550 7200 3450
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6600 2550 6750 2550 6750 2700 6600 2700 6600 2550
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6375 2925 6525 2925 6525 3075 6375 3075 6375 2925
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6825 2925 6975 2925 6975 3075 6825 3075 6825 2925
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6600 3300 6750 3300 6750 3450 6600 3450 6600 3300
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 7050 3300 7200 3300 7200 3450 7050 3450 7050 3300
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6600 2700 6450 2925
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6750 2700 6900 2925
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6825 3075 6675 3300
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 6975 3075 7125 3300
--6
-2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 6000 1950 7725 1950 7725 3675 6000 3675 6000 1950
-4 0 4 50 0 0 12 0.0000 4 180 1155 6150 2175 Shared Memory\001
--6
-6 1350 4200 6900 4650
-4 0 0 50 0 1 12 0.0000 4 180 5130 1350 4350 The objIdMap maps the id of a shared object to its JOM representation.\001
-4 0 0 50 0 1 12 0.0000 4 180 5550 1350 4590 Note that JOM objects are created lazily when the shared object is referenced.\001
--6
-6 4725 5025 7725 6225
-6 4725 5025 7725 6225
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4875 5550 5550 5550
-2 1 0 1 1 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4875 5775 5550 5775
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4875 6000 5550 6000
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4725 5025 7725 5025 7725 6225 4725 6225 4725 5025
-4 0 0 50 0 -1 12 0.0000 4 135 1515 5775 5625 Weak JOM reference\001
-4 0 0 50 0 -1 12 0.0000 4 180 1590 5775 5850 Strong JOM reference\001
-4 0 0 50 0 -1 12 0.0000 4 180 1815 5775 6075 Shared memory reference\001
-4 0 0 50 0 2 12 0.0000 4 180 570 4875 5250 Legend\001
--6
--6
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3975 2550 6000 2550
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3975 3000 6000 3000
-4 0 0 50 0 2 12 0.0000 4 180 1695 4125 1125 Direct Shared Objects\001
-4 0 4 50 0 0 12 0.0000 4 135 1440 4275 2850 GemFireConnection\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.gif
deleted file mode 100644
index a712b52..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/ds-map.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.fig
deleted file mode 100644
index 50dfcc0..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.fig
+++ /dev/null
@@ -1,153 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 3000 2775 6075 3600
-6 4725 2775 5325 3075
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4725 2775 5325 2775 5325 3075 4725 3075 4725 2775
-4 0 0 50 0 -1 12 0.0000 4 135 495 4800 3000 Reader\001
--6
-6 5625 3300 6075 3600
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5625 3300 6075 3300 6075 3600 5625 3600 5625 3300
-4 0 0 50 0 -1 12 0.0000 4 135 270 5700 3525 File\001
--6
-6 3000 3300 4200 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3150 3300 3150 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3300 3300 3300 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3450 3300 3450 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3600 3300 3600 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3750 3300 3750 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3900 3300 3900 3525
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4050 3300 4050 3525
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3000 3300 4200 3300 4200 3525 3000 3525 3000 3300
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5850 3300 5325 2925
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 2925 4200 3375
--6
-6 3000 3750 6075 4575
-6 4725 3750 5325 4050
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4725 3750 5325 3750 5325 4050 4725 4050 4725 3750
-4 0 0 50 0 -1 12 0.0000 4 135 495 4800 3975 Reader\001
--6
-6 5625 4275 6075 4575
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5625 4275 6075 4275 6075 4575 5625 4575 5625 4275
-4 0 0 50 0 -1 12 0.0000 4 135 270 5700 4500 File\001
--6
-6 3000 4275 4200 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3150 4275 3150 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3300 4275 3300 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3450 4275 3450 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3600 4275 3600 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3750 4275 3750 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3900 4275 3900 4500
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4050 4275 4050 4500
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3000 4275 4200 4275 4200 4500 3000 4500 3000 4275
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5850 4275 5325 3900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 3900 4200 4350
--6
-6 3000 4725 6075 5550
-6 4725 4725 5325 5025
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 4725 4725 5325 4725 5325 5025 4725 5025 4725 4725
-4 0 0 50 0 -1 12 0.0000 4 135 495 4800 4950 Reader\001
--6
-6 5625 5250 6075 5550
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 5625 5250 6075 5250 6075 5550 5625 5550 5625 5250
-4 0 0 50 0 -1 12 0.0000 4 135 270 5700 5475 File\001
--6
-6 3000 5250 4200 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3150 5250 3150 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3300 5250 3300 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3450 5250 3450 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3600 5250 3600 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3750 5250 3750 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 3900 5250 3900 5475
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
-	 4050 5250 4050 5475
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3000 5250 4200 5250 4200 5475 3000 5475 3000 5250
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5850 5250 5325 4875
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4725 4875 4200 5325
--6
-6 1050 4275 1650 4575
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1050 4275 1650 4275 1650 4575 1050 4575 1050 4275
-4 0 0 50 0 -1 12 0.0000 4 135 435 1125 4500 Sorter\001
--6
-6 900 5700 1950 6000
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 900 5700 1950 5700 1950 6000 900 6000 900 5700
-4 0 0 50 0 -1 12 0.0000 4 180 870 975 5925 Merged File\001
--6
-6 2325 5925 5400 6375
-4 0 0 50 0 1 12 0.0000 4 180 3045 2325 6315 keep the VM's heap from getting too large.\001
-4 0 0 50 0 1 12 0.0000 4 180 2685 2325 6075 The size of the queues are bounded to\001
--6
-6 1650 3600 2175 3900
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 1650 3600 2175 3600 2175 3900 1650 3900 1650 3600
-4 0 0 50 0 -1 12 0.0000 4 180 390 1725 3825 Entry\001
--6
-6 3900 2775 4425 3075
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
-	 3900 2775 4425 2775 4425 3075 3900 3075 3900 2775
-4 0 0 50 0 -1 12 0.0000 4 180 390 3975 3000 Entry\001
--6
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3000 3375 1650 4425
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3000 4425 1650 4425
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3000 5325 1650 4425
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 1350 4575 1350 5700

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.gif b/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.gif
deleted file mode 100644
index 59b9ec5..0000000
Binary files a/geode-core/src/main/java/com/gemstone/gemfire/internal/doc-files/merge-log-files.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/logging/MergeLogFiles.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/logging/MergeLogFiles.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/logging/MergeLogFiles.java
index 1f19ff3..cd82958 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/logging/MergeLogFiles.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/logging/MergeLogFiles.java
@@ -87,7 +87,7 @@ import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
  * use this option.<p>
  *
  * <CENTER>
- * <IMG SRC="doc-files/merge-log-files.gif"
+ * <IMG SRC="{@docRoot}/javadoc-images/merge-log-files.gif"
  *      WIDTH="353" HEIGHT="246"/>
  * </CENTER>
  *

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/call-stack.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/call-stack.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/call-stack.fig
deleted file mode 100644
index 5b052c2..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/call-stack.fig
+++ /dev/null
@@ -1,34 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 3750 2850 9600 4275
-5 1 0 1 1 7 50 -1 -1 0.000 0 0 1 0 6337.500 3337.500 6300 3225 6450 3375 6300 3450
-	0 0 1.00 60.00 60.00
-5 1 0 1 1 7 50 -1 -1 0.000 0 0 1 0 6337.500 3037.500 6300 2925 6450 3075 6300 3150
-	0 0 1.00 60.00 60.00
-4 0 -1 50 -1 0 12 0.0000 4 180 2400 3750 3000 ObjectInputStream.resolveClass()\001
-4 0 -1 50 -1 0 12 0.0000 4 180 2265 3750 3240 ObjectInputStream.readObject()\001
-4 0 -1 50 -1 0 12 0.0000 4 180 2355 3750 3480 DeserializerDelegate.deserialize()\001
-4 0 -1 50 -1 0 12 0.0000 4 180 885 3750 3720 Region.get()\001
-4 0 -1 50 -1 0 12 0.0000 4 165 1380 3750 3960 UserServlet.serve()\001
-4 0 0 50 -1 0 12 0.0000 4 165 1695 3750 4200 ServletContainer.main()\001
-4 0 1 50 -1 0 12 0.0000 4 180 2835 6675 3000 Java Serialization looks up the call stack\001
-4 0 1 50 -1 0 12 0.0000 4 135 2805 6675 3240 and finds the first non-null class loader\001
-4 0 1 50 -1 0 12 0.0000 4 135 2865 6675 3480 which is the current context class loader.\001
--6
-6 1800 2850 3000 4200
-4 0 1 50 -1 0 12 0.0000 4 135 345 1800 3000 Boot\001
-4 0 1 50 -1 0 12 0.0000 4 135 345 1800 3240 Boot\001
-4 0 1 50 -1 0 12 0.0000 4 135 1140 1800 3480 Current Context\001
-4 0 1 50 -1 0 12 0.0000 4 135 630 1800 3720 GemFire\001
-4 0 1 50 -1 0 12 0.0000 4 135 1140 1800 3960 Current Context\001
-4 0 1 50 -1 0 12 0.0000 4 135 690 1800 4200 Container\001
--6
-4 1 1 50 -1 2 12 0.0000 4 135 1095 2400 2475 Class Loaders\001
-4 1 0 50 -1 2 12 0.0000 4 135 795 4875 2550 Call Stack\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/class-loaders.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/class-loaders.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/class-loaders.fig
deleted file mode 100644
index 3ca6d06..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/util/doc-files/class-loaders.fig
+++ /dev/null
@@ -1,49 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 2400 1125 4800 4125
-6 3225 2925 3975 3225
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 3975 3225 3975 2925 3225 2925 3225 3225 3975 3225
-4 0 1 50 -1 0 12 0.0000 4 135 630 3300 3150 GemFire\001
--6
-6 3412 2025 3787 2325
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 3787 2325 3787 2025 3412 2025 3412 2325 3787 2325
-4 0 1 50 -1 0 12 0.0000 4 120 210 3487 2250 ext\001
--6
-6 3337 1125 3862 1425
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 3862 1425 3862 1125 3337 1125 3337 1425 3862 1425
-4 0 1 50 -1 0 12 0.0000 4 135 345 3412 1350 Boot\001
--6
-6 2400 3825 4800 4125
-2 4 0 1 1 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 4800 4125 4800 3825 2400 3825 2400 4125 4800 4125
-4 0 1 50 -1 0 12 0.0000 4 180 2250 2475 4050 User classes & gemfire_j2ee.jar\001
--6
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3600 2025 3600 1425
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3600 2925 3600 2325
-2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 3600 3825 3600 3225
--6
-2 1 0 1 -1 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4425 3600 4125 3825
-4 0 4 50 -1 0 12 0.0000 4 180 1335 4950 1275 ObjectInputStream\001
-4 0 4 50 -1 0 12 0.0000 4 180 1455 4950 4050 DeserializerDelegate\001
-4 1 -1 50 -1 0 12 0.0000 4 180 2610 6225 600 Classes Loaded by that Class Loader\001
-4 1 -1 50 -1 0 12 0.0000 4 135 1005 3600 600 Class Loaders\001
-4 0 4 50 -1 0 12 0.0000 4 180 2700 4950 3075 Deserializer, DeserializerImpl, Region\001
-4 1 -1 50 -1 0 12 0.0000 4 135 2115 5475 3525 Current Context Class Loader\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/BucketAdvisor-state.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/BucketAdvisor-state.png b/geode-core/src/main/resources/javadoc-images/BucketAdvisor-state.png
new file mode 100644
index 0000000..7f58ca0
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/BucketAdvisor-state.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.dia
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.dia b/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.dia
new file mode 100644
index 0000000..39d8f3d
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.dia differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.png b/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.png
new file mode 100644
index 0000000..773fabe
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/ConnectionManagerImpl.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.dia
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.dia b/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.dia
new file mode 100644
index 0000000..8cc7d0e
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.dia differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.png b/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.png
new file mode 100644
index 0000000..d48bbf6
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/QueueManagerImpl.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/class-hierarchy.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/class-hierarchy.fig b/geode-core/src/main/resources/javadoc-images/class-hierarchy.fig
new file mode 100644
index 0000000..85756e6
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/class-hierarchy.fig
@@ -0,0 +1,224 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 225 5550 10500 9450
+6 225 7800 2550 9450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 225 7800 2550 7800 2550 9450 225 9450 225 7800
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 225 8175 2550 8175
+4 0 0 50 -1 2 12 0.0000 4 180 2055 375 8025 RemoteApplicationProcess\001
+4 0 0 50 -1 -1 12 0.0000 4 180 585 450 8400 id : long\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1005 450 8640 processId : int\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1530 450 8880 javaProcess : boolean\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1365 450 9120 hasCache : boolean\001
+4 0 0 50 -1 -1 12 0.0000 4 180 945 450 9360 name : String\001
+-6
+6 2550 7800 4500 8025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 2550 8025 4500 8025
+4 0 0 50 -1 -1 12 0.0000 4 75 90 2625 7950 *\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1410 3000 7950 connectedProcesses\001
+-6
+6 4500 7725 7725 9375
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4500 9375 7725 9375 7725 7725 4500 7725 4500 9375
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4500 8100 7725 8100
+4 0 0 50 -1 -1 12 0.0000 4 180 1185 4575 8325 gemfireDir : File\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1125 4575 8565 birthDate : Date\001
+4 0 0 50 -1 -1 12 0.0000 4 165 1515 4575 8805 lockInfo : LockInfo[]\001
+4 0 0 50 -1 -1 12 0.0000 4 165 2205 4575 9045 lockListeners : LockListeners[]\001
+4 0 0 50 -1 -1 12 0.0000 4 165 3045 4575 9285 connectionListeners : ConnectionListener[]\001
+4 0 0 50 -1 2 12 0.0000 4 180 1470 5400 7950 RemoteGfManager\001
+-6
+6 8550 7725 10500 8625
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8550 8625 10500 8625 10500 7725 8550 7725 8550 8625
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8550 8100 10500 8100
+4 0 0 50 -1 2 12 0.0000 4 180 1785 8625 7950 RemoteApplicationVM\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1440 8625 8325 sharedLog : boolean\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1500 8625 8565 sharedStats : boolean\001
+-6
+6 7050 5550 8850 6975
+6 7050 5550 8850 6975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7050 5850 8850 5850
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7050 6975 8850 6975 8850 5550 7050 5550 7050 6975
+4 0 0 50 -1 3 12 0.0000 4 135 1485 7275 5775 RemoteGemFireVM\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1035 7125 6150 id: Serializable\001
+4 0 0 50 -1 -1 12 0.0000 4 180 945 7125 6390 name : String\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1305 7125 6630 host : InetAddress\001
+4 0 0 50 -1 -1 12 0.0000 4 180 885 7125 6870 sysDir : File\001
+-6
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
+	 6225 7725 6225 7425 9450 7425 9450 7725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 0 1.00 120.00 120.00
+	 7950 7425 7950 6975
+-6
+6 150 2025 5325 7500
+6 375 2625 1875 2925
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 375 2625 1875 2625 1875 2925 375 2925 375 2625
+4 0 0 50 -1 1 12 0.0000 4 180 1215 450 2850 TransportConfig\001
+-6
+6 150 3825 2250 4800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 150 3825 2250 3825 2250 4800 150 4800 150 3825
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 150 4200 2250 4200
+4 0 0 50 -1 0 12 0.0000 4 165 1365 450 4425 isMcast() : boolean\001
+4 0 0 50 -1 2 12 0.0000 4 180 1905 225 4050 RemoteTransportConfig\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 450 4665 bindAddress : String\001
+-6
+6 3225 3825 5250 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3225 4200 5250 4200
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3225 3825 5250 3825 5250 5100 3225 5100 3225 3825
+4 0 0 50 -1 0 12 0.0000 4 135 1305 3450 4500 host : InetAddress\001
+4 0 0 50 -1 0 12 0.0000 4 180 600 3450 4740 port : int\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 3450 4980 bindAddress : String\001
+4 0 0 50 -1 2 12 0.0000 4 135 1725 3300 4050 DistributionLocatorId\001
+-6
+6 1875 5850 3600 7500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1875 6150 3600 6150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1875 7500 3600 7500 3600 5850 1875 5850 1875 7500
+4 0 0 50 -1 -1 12 0.0000 4 135 1230 1950 6450 enabled : boolean\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1230 1950 6690 protocols : String\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1080 1950 6930 ciphers : String\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1545 1950 7170 boolean : requireAuth\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1560 1950 7410 properties : Properties\001
+4 0 0 50 -1 2 12 0.0000 4 180 855 2325 6075 SSLConfig\001
+-6
+6 3150 2025 5325 3450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3150 2025 5325 2025 5325 3450 3150 3450 3150 2025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3150 2400 5325 2400
+4 0 0 50 -1 -1 12 0.0000 4 180 1500 3300 2625 displayName : String\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1320 3300 2865 logger : LogWriter\001
+4 0 0 50 -1 -1 12 0.0000 4 180 930 3300 3105 logLevel : int\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1935 3300 3345 alertListener : AlertListener\001
+4 0 0 50 -1 2 12 0.0000 4 180 1875 3300 2250 GfManagerAgentConfig\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 0 1.00 120.00 120.00
+	 1050 3825 1050 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 2250 3975 3225 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 2250 4500 3225 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 1800 4800 2250 5850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3825 5100 3075 5850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 1875 2775 3150 2775
+4 0 0 50 -1 0 12 0.0000 4 135 210 2400 3900 ids\001
+4 0 0 50 -1 0 12 0.0000 4 75 90 3000 3900 *\001
+4 0 0 50 -1 0 12 0.0000 4 135 555 2325 4425 mcastId\001
+4 0 0 50 -1 -1 12 0.0000 4 180 690 2100 5250 sslConfig\001
+4 0 0 50 -1 -1 12 0.0000 4 180 690 3600 5550 sslConfig\001
+-6
+6 6600 2025 12300 2700
+6 6600 2100 9300 2700
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6600 2400 9300 2400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6600 2100 9300 2100 9300 2700 6600 2700 6600 2100
+4 0 0 50 -1 2 12 0.0000 4 180 1935 6975 2325 RemoteGfManagerAgent\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1485 6750 2625 licsenseType : String\001
+-6
+6 9300 2025 10725 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 9300 2250 10725 2250
+4 0 0 50 -1 -1 12 0.0000 4 135 585 9450 2175 listeners\001
+4 0 0 50 -1 -1 12 0.0000 4 75 90 10500 2175 *\001
+-6
+6 10725 2100 12300 2400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10725 2100 12300 2100 12300 2400 10725 2400 10725 2100
+4 0 0 50 -1 3 12 0.0000 4 150 1350 10875 2325 JoinLeaveListener\001
+-6
+-6
+6 9450 5550 11025 6150
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9450 6150 11025 6150 11025 5550 9450 5550 9450 6150
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 9450 5850 11025 5850
+4 0 0 50 -1 2 12 0.0000 4 180 1080 9750 5775 AdminRegion\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1425 9525 6075 globalName : String\001
+-6
+6 9900 4725 10500 5025
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 9900 4725 10500 4725 10500 5025 9900 5025 9900 4725
+4 0 0 50 -1 1 12 0.0000 4 180 495 9975 4950 Region\001
+-6
+6 11475 4725 12825 5025
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11475 4725 12825 4725 12825 5025 11475 5025 11475 4725
+4 0 0 50 -1 1 12 0.0000 4 180 1185 11550 4950 RegionAttributes\001
+-6
+6 11100 6525 13125 6825
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11100 6525 13125 6525 13125 6825 11100 6825 11100 6525
+4 0 0 50 -1 2 12 0.0000 4 180 1920 11175 6750 RemoteRegionAttributes\001
+-6
+6 4350 5550 6525 6975
+6 4425 6000 6450 6975
+4 0 0 50 -1 -1 12 0.0000 4 180 945 4425 6150 name : String\001
+4 0 0 50 -1 -1 12 0.0000 4 135 450 4425 6390 id : int\001
+4 0 0 50 -1 -1 12 0.0000 4 135 1140 4425 6630 closed : boolean\001
+4 0 0 50 -1 -1 12 0.0000 4 180 1980 4425 6870 rootRegionNames : String[]\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4350 5925 6525 5925
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4350 6975 6525 6975 6525 5550 4350 5550 4350 6975
+4 0 0 50 -1 2 12 0.0000 4 135 1395 4725 5775 RemoteCacheInfo\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 6825 2700 6825 7725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 9075 2700 9075 7725
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 6600 2250 5325 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 7050 5700 6525 5700
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8850 5700 9450 5700
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	1 0 1.00 120.00 120.00
+	 10200 5550 10200 5025
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	1 0 1.00 120.00 120.00
+	 12075 6525 12075 5025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 10350 6150 11100 6675
+4 0 0 50 -1 -1 12 0.0000 4 75 90 9150 7725 *\001
+4 0 0 50 -1 -1 12 0.0000 4 75 90 6900 7725 *\001
+4 0 0 50 -1 -1 12 0.0000 4 135 675 6075 3000 managers\001
+4 0 0 50 -1 -1 12 0.0000 4 180 450 6075 2175 config\001
+4 0 0 50 -1 -1 12 0.0000 4 75 90 9300 5625 *\001
+4 0 0 50 -1 -1 12 0.0000 4 135 645 9150 3000 members\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/class-hierarchy.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/class-hierarchy.gif b/geode-core/src/main/resources/javadoc-images/class-hierarchy.gif
new file mode 100644
index 0000000..9cef97a
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/class-hierarchy.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/client_static_diagram.png
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/client_static_diagram.png b/geode-core/src/main/resources/javadoc-images/client_static_diagram.png
new file mode 100644
index 0000000..afbeaa4
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/client_static_diagram.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.fig b/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.fig
new file mode 100644
index 0000000..8d5eb70
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.fig
@@ -0,0 +1,135 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 675 2250 3600 5025
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 1575 4275 168 168 1575 4275 1650 4125
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 2700 4275 168 168 2700 4275 2775 4125
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 900 3375 168 168 900 3375 975 3225
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2700 4275 168 168 2700 4275 2625 4125
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3375 3375 168 168 3375 3375 3300 3225
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1575 2475 168 168 1575 2475 1650 2625
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2700 2475 168 168 2700 2475 2775 2625
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 900 3375 168 168 900 3375 975 3525
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 2700 2475 168 168 2700 2475 2625 2625
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 3375 3375 168 168 3375 3375 3300 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 975 3525 1425 4200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1725 4275 2550 4275
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 3300 3525 2850 4200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 2550 4275 1725 4275
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 975 3225 1425 2550
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1725 2475 2550 2475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 3300 3225 2850 2550
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 2550 2475 1725 2475
+4 0 0 50 -1 0 16 0.0000 4 210 1245 1575 4950 Infinite Loop\001
+-6
+6 4650 2175 6450 4575
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5550 4350 168 168 5550 4350 5625 4500
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4875 3375 168 168 4875 3375 4950 3525
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 5550 4350 168 168 5550 4350 5475 4500
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 6225 3375 168 168 6225 3375 6150 3525
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5550 2400 168 168 5550 2400 5475 2250
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6225 3375 168 168 6225 3375 6150 3225
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 5550 2400 168 168 5550 2400 5625 2250
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 4875 3375 168 168 4875 3375 4950 3225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 5475 4200 4950 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 5625 4200 6150 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 5625 2550 6150 3225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 5475 2550 4950 3225
+-6
+6 9450 2175 11250 4575
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 9675 3375 168 168 9675 3375 9750 3525
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 11025 3375 168 168 11025 3375 10950 3525
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 10350 2400 168 168 10350 2400 10275 2250
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 11025 3375 168 168 11025 3375 10950 3225
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 10350 2400 168 168 10350 2400 10425 2250
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 9675 3375 168 168 9675 3375 9750 3225
+1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 9675 4332 168 168 9675 4332 9600 4482
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 11025 4350 168 168 11025 4350 11100 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 10425 2550 10950 3225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 10275 2550 9750 3225
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 9675 3525 9675 4200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 11025 3525 11025 4200
+-6
+6 7200 3300 8475 3525
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7200 3300 8475 3300 8475 3525 7200 3525 7200 3300
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7275 3300 7275 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7350 3300 7350 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7425 3300 7425 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7500 3300 7500 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7575 3300 7575 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7650 3300 7650 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 3300 7725 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7800 3300 7800 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7875 3300 7875 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7950 3300 7950 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8025 3300 8025 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8100 3300 8100 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8250 3300 8250 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8325 3300 8325 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8400 3300 8400 3525
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8175 3300 8175 3525
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 120.00 120.00
+	 6600 3000 6225 3000
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 120.00 120.00
+	 7725 3750 8025 3750
+2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4050 2025 4050 5250
+4 0 0 50 -1 0 16 0.0000 4 210 1260 6750 3075 writeObject()\001
+4 0 0 50 -1 0 16 0.0000 4 210 1185 8100 3825 readObject()\001
+4 0 0 50 -1 0 16 0.0000 4 210 4650 5625 4950 readObject() does not maintain referntial integrity\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.gif b/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.gif
new file mode 100644
index 0000000..f2c98e0
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/data-serialization-exceptions.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/distribution-managers.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/distribution-managers.fig b/geode-core/src/main/resources/javadoc-images/distribution-managers.fig
new file mode 100644
index 0000000..591bf38
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/distribution-managers.fig
@@ -0,0 +1,76 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3225 4800 4275 5250
+4 1 4 50 0 0 12 0.0000 4 135 660 3750 4950 GemFire\001
+4 1 4 50 0 0 12 0.0000 4 180 1020 3750 5190 Manager VM\001
+-6
+6 3375 5550 4125 5850
+2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3375 5550 4125 5550 4125 5850 3375 5850 3375 5550
+4 1 4 50 0 0 12 0.0000 4 135 300 3750 5775 DM\001
+-6
+6 3450 3525 5400 3975
+2 4 0 3 0 7 50 0 -1 0.000 0 0 7 0 0 5
+	 5325 3900 5325 3600 3525 3600 3525 3900 5325 3900
+4 1 0 50 0 0 12 0.0000 4 135 1560 4425 3825 Distribution Channel\001
+-6
+6 5400 1800 7350 2850
+6 5625 2400 6225 2700
+2 2 0 1 1 7 50 0 -1 4.000 0 0 -1 0 0 5
+	 5625 2400 6225 2400 6225 2700 5625 2700 5625 2400
+4 1 1 50 0 0 12 0.0000 4 135 435 5925 2625 ADM\001
+-6
+2 2 0 1 1 7 50 0 -1 4.000 0 0 -1 0 0 5
+	 5400 1800 7350 1800 7350 2850 5400 2850 5400 1800
+4 1 1 50 0 0 12 0.0000 4 135 1320 6375 2025 GemFire Console\001
+-6
+6 5550 4125 6300 5100
+6 5625 4275 6225 4725
+4 1 23 50 0 0 12 0.0000 4 135 585 5925 4425 Locator\001
+4 1 23 50 0 0 12 0.0000 4 135 300 5925 4665 VM\001
+-6
+2 2 0 1 23 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 5550 4125 6300 4125 6300 5100 5550 5100 5550 4125
+-6
+6 4875 5250 6750 5925
+4 0 23 50 0 1 12 0.0000 4 135 1800 4875 5400 DMs contact the locator\001
+4 0 23 50 0 1 12 0.0000 4 180 1935 4875 5640 to find the other members\001
+4 0 23 50 0 1 12 0.0000 4 180 1920 4875 5880 of the distributed system.\001
+-6
+6 6825 4425 10350 6300
+6 6975 5775 9750 6000
+-6
+6 7050 6000 10275 6150
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+	 7425 6075 7050 6075
+4 0 0 50 0 0 12 0.0000 4 135 2865 7575 6150 Connection to the distribution channel\001
+-6
+2 2 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+	 6825 4425 10350 4425 10350 6300 6825 6300 6825 4425
+4 0 0 50 0 2 12 0.0000 4 180 690 6975 4725 Lengend\001
+4 0 4 50 0 0 12 0.0000 4 180 2910 6975 5445 DM - NORMAL DistributionManager\001
+4 0 1 50 0 0 12 0.0000 4 180 3165 6975 5685 ADM - Admin-only DistributionManager\001
+-6
+2 2 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3075 4725 4350 4725 4350 6000 3075 6000 3075 4725
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
+	0 0 1.00 60.00 120.00
+	0 0 1.00 60.00 120.00
+	 4125 5700 5025 3900
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
+	0 0 1.00 60.00 120.00
+	0 0 1.00 60.00 120.00
+	 5925 2700 4725 3600
+2 1 0 1 23 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 4125 5775 5550 4575
+2 1 0 1 23 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5700 2700 5700 4125

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/distribution-managers.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/distribution-managers.gif b/geode-core/src/main/resources/javadoc-images/distribution-managers.gif
new file mode 100644
index 0000000..b245730
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/distribution-managers.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/elder.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/elder.fig b/geode-core/src/main/resources/javadoc-images/elder.fig
new file mode 100644
index 0000000..aa01d0f
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/elder.fig
@@ -0,0 +1,84 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 1125 5475 2625 6600
+6 1275 6150 2475 6450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1275 6150 2475 6150 2475 6450 1275 6450 1275 6150
+4 0 0 50 -1 0 12 0.0000 4 135 1005 1350 6375 "locks2" DLS\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1125 6600 2625 6600 2625 5475 1125 5475 1125 6600
+4 0 0 50 -1 0 12 0.0000 4 135 885 1425 5775 frodo:12004\001
+-6
+6 3225 4500 4275 5100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3225 4500 4275 4500 4275 5100 3225 5100 3225 4500
+4 1 0 50 -1 0 12 0.0000 4 135 795 3750 4725 Distributed\001
+4 1 0 50 -1 0 12 0.0000 4 180 525 3750 4965 System\001
+-6
+6 4575 2325 6075 3600
+6 4725 2925 5925 3450
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4725 2925 5925 2925 5925 3450 4725 3450 4725 2925
+4 1 0 50 -1 0 12 0.0000 4 135 1005 5325 3150 "locks1" DLS\001
+4 1 0 50 -1 0 12 0.0000 4 135 885 5325 3390 GRANTOR\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4575 3600 6075 3600 6075 2325 4575 2325 4575 3600
+4 0 0 50 -1 0 12 0.0000 4 135 885 4875 2550 frodo:12002\001
+-6
+6 4650 5025 6000 6600
+6 4725 6000 5925 6525
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4725 6000 5925 6000 5925 6525 4725 6525 4725 6000
+4 1 0 50 -1 0 12 0.0000 4 135 885 5325 6465 GRANTOR\001
+4 1 0 50 -1 0 12 0.0000 4 135 1005 5325 6225 "locks2" DLS\001
+-6
+6 4725 5550 5925 5850
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4725 5550 5925 5550 5925 5850 4725 5850 4725 5550
+4 0 0 50 -1 0 12 0.0000 4 135 1005 4800 5775 "locks1" DLS\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4650 6600 6000 6600 6000 5025 4650 5025 4650 6600
+4 0 0 50 -1 0 12 0.0000 4 135 885 4875 5250 frodo:12003\001
+-6
+6 825 4275 2325 5250
+4 0 0 50 -1 1 12 0.0000 4 180 1455 825 4425 A newly created lock\001
+4 0 0 50 -1 1 12 0.0000 4 135 1290 825 4665 service asks Elder\001
+4 0 0 50 -1 1 12 0.0000 4 135 1125 825 4905 who the current\001
+4 0 0 50 -1 1 12 0.0000 4 180 765 825 5145 grantor is.\001
+-6
+6 5850 3975 7350 4425
+4 0 0 50 -1 1 12 0.0000 4 135 1470 5850 4125 A lock service knows\001
+4 0 0 50 -1 1 12 0.0000 4 180 1320 5850 4365 who its gratnor is.\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1425 3975 3375 3975 3375 2775 1425 2775 1425 3975
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1350 4050 3450 4050 3450 2325 1350 2325 1350 4050
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 2400 6150 2400 3975
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3450 4500 3150 4050
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4050 4500 4725 3600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4275 4950 4650 5100
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3375 5100 2625 5775
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5775 5550 5775 3450
+4 0 0 50 -1 0 12 0.0000 4 135 1800 1500 3600 "locks1" -> frodo:12002\001
+4 0 0 50 -1 0 12 0.0000 4 135 1800 1500 3840 "locks2" -> frodo:12003\001
+4 0 0 50 -1 0 16 0.0000 4 165 510 2100 3075 Elder\001
+4 0 0 50 -1 0 12 0.0000 4 135 885 1950 2550 frodo:12001\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/elder.jpg
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/elder.jpg b/geode-core/src/main/resources/javadoc-images/elder.jpg
new file mode 100644
index 0000000..09ea45b
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/elder.jpg differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/entry-life-cycle.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/entry-life-cycle.fig b/geode-core/src/main/resources/javadoc-images/entry-life-cycle.fig
new file mode 100644
index 0000000..e3108e5
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/entry-life-cycle.fig
@@ -0,0 +1,64 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+5 1 0 1 0 7 50 -1 -1 0.000 0 1 1 0 8243.750 2775.000 8175 3150 8625 2775 8175 2400
+	0 0 1.00 60.00 120.00
+5 1 0 1 0 7 50 -1 -1 0.000 0 0 1 0 4537.500 11400.000 1575 1875 4500 1425 7500 1875
+	0 0 1.00 60.00 120.00
+5 1 0 1 0 7 50 -1 -1 0.000 0 0 1 0 4575.000 -8137.500 7575 3675 4575 4050 1575 3675
+	0 0 1.00 60.00 120.00
+6 975 1875 2325 3675
+2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 975 1875 2325 1875 2325 3675 975 3675 975 1875
+4 1 1 50 -1 0 12 0.0000 4 180 510 1650 2175 Region\001
+-6
+6 3900 1875 5250 3675
+6 4050 2625 5100 3000
+2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 4050 2625 5100 2625 5100 3000 4050 3000 4050 2625
+2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4500 2625 4500 3000
+4 1 1 50 -1 0 12 0.0000 4 180 255 4275 2850 key\001
+-6
+2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 3900 1875 5250 1875 5250 3675 3900 3675 3900 1875
+4 1 1 50 -1 0 12 0.0000 4 180 510 4575 2175 Region\001
+-6
+6 6825 1875 8175 3675
+6 6975 2625 8025 3000
+2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6975 2625 8025 2625 8025 3000 6975 3000 6975 2625
+2 1 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7425 2625 7425 3000
+4 1 1 50 -1 0 12 0.0000 4 180 255 7200 2850 key\001
+4 1 1 50 -1 0 12 0.0000 4 135 375 7725 2850 value\001
+-6
+2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 6825 1875 8175 1875 8175 3675 6825 3675 6825 1875
+4 1 1 50 -1 0 12 0.0000 4 180 510 7500 2175 Region\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 2325 2475 3900 2475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 3900 3000 2325 3000
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5250 2400 6825 2400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 6825 3000 5250 3000
+4 1 0 50 -1 0 12 0.0000 4 180 1140 3075 2325 create(key, null)\001
+4 1 0 50 -1 0 12 0.0000 4 180 900 3075 3300 destroy(key)\001
+4 1 0 50 -1 0 12 0.0000 4 180 1065 6000 2250 put(key, value)\001
+4 1 0 50 -1 0 12 0.0000 4 180 1050 6075 3300 invalidate(key)\001
+4 1 0 50 -1 0 12 0.0000 4 180 2640 4500 1275 create(key, value)  or  put(key, value)\001
+4 1 0 50 -1 0 12 0.0000 4 180 900 4575 4350 destroy(key)\001
+4 1 0 50 -1 0 12 0.0000 4 180 1065 9300 2850 put(key, value)\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/entry-life-cycle.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/entry-life-cycle.gif b/geode-core/src/main/resources/javadoc-images/entry-life-cycle.gif
new file mode 100644
index 0000000..02de9d4
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/entry-life-cycle.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/eventmatrix.xls
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/eventmatrix.xls b/geode-core/src/main/resources/javadoc-images/eventmatrix.xls
new file mode 100644
index 0000000..769698a
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/eventmatrix.xls differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/example-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/example-cache.xml b/geode-core/src/main/resources/javadoc-images/example-cache.xml
new file mode 100644
index 0000000..0061b5c
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/example-cache.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- A sample GemFire declarative caching XML File -->
+
+<cache
+    xmlns="http://schema.pivotal.io/gemfire/cache"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
+    search-timeout="60" lock-lease="300" copy-on-read="false" version="8.1">
+
+  <!-- Create a partition region -->
+  <region name="myPartitionedRegion" refid="PARTITION">
+    <region-attributes>
+      <partition-attributes local-max-memory="32"/>
+
+      <cache-loader>
+        <class-name>com.company.app.DBLoader</class-name>
+      </cache-loader>
+
+      <eviction-attributes>
+        <lru-entry-count maximum="1000" action="local-destroy"/>
+      </eviction-attributes>
+
+    </region-attributes>
+  </region>
+  
+  <!-- Create a replicate region -->
+  <region name="customers" refid="REPLICATE">
+    <region-attributes>
+
+      <entry-time-to-live>
+        <expiration-attributes action="destroy" timeout="3000"/>
+      </entry-time-to-live>
+
+      <entry-idle-time>
+        <expiration-attributes timeout="600"/>
+      </entry-idle-time>
+
+      <cache-loader>
+        <class-name>com.company.app.DBLoader</class-name>
+        <parameter name="URL">
+          <string>jdbc://12.34.56.78/mydb</string>
+        </parameter>
+      </cache-loader>
+
+      <eviction-attributes>
+        <lru-memory-size maximum="1000" action="overflow-to-disk"> 
+          <class-name>com.company.data.MySizer</class-name>
+          <parameter name="name">
+            <string>SuperSizer</string>
+          </parameter>
+        </lru-memory-size>
+      </eviction-attributes>
+
+    </region-attributes>
+
+    <!-- Add an entry whose value is a Declarable object -->
+    <entry>
+      <key><string>Louise Jones</string></key>
+      <value>
+        <declarable>
+          <class-name>com.company.app.Customer</class-name>
+          <parameter name="name">
+            <string>Louise Jones</string>
+          </parameter>
+          <parameter name="address1">
+            <string>123 Main Street</string>
+          </parameter>
+          <parameter name="city">
+            <string>New York</string>
+          </parameter>
+          <parameter name="state">
+            <string>NY</string>
+          </parameter>
+          <parameter name="zip">
+            <string>12345</string>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/example-client-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/example-client-cache.xml b/geode-core/src/main/resources/javadoc-images/example-client-cache.xml
new file mode 100644
index 0000000..bddeb9f
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/example-client-cache.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- A sample client GemFire declarative caching XML File -->
+
+<!DOCTYPE client-cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Cache 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<client-cache copy-on-read="false">
+
+  <pool name="myPool">
+    <locator host="myHostName" port="41111"/>
+  </pool>
+
+  <!-- Create a proxy region -->
+  <region name="region1" refid="PROXY"/>
+
+  <!-- Create a caching proxy region -->
+  <region name="region2" refid="CACHING_PROXY">
+    <region-attributes>
+
+      <entry-time-to-live>
+        <expiration-attributes action="destroy" timeout="3000"/>
+      </entry-time-to-live>
+
+      <entry-idle-time>
+        <expiration-attributes timeout="600"/>
+      </entry-idle-time>
+    </region-attributes>
+  </region>
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/example2-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/example2-cache.xml b/geode-core/src/main/resources/javadoc-images/example2-cache.xml
new file mode 100644
index 0000000..b65c285
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/example2-cache.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<cache
+    xmlns="http://schema.pivotal.io/gemfire/cache"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
+    is-server="true" search-timeout="60" version="8.1">
+  <cache-transaction-manager>
+    <transaction-listener>
+       <class-name>com.company.data.MyTransactionListener</class-name>
+       <parameter name="URL">
+         <string>jdbc:cloudscape:rmi:MyData</string>
+       </parameter>
+    </transaction-listener>    
+  </cache-transaction-manager>
+
+  <cache-server port="12345" max-connections="256"/>
+
+  <region name="myRegion" refid="REPLICATE">
+    <region-attributes scope="global">
+      <entry-time-to-live>
+        <expiration-attributes action="invalidate" timeout="60"/>
+      </entry-time-to-live>
+      <cache-loader>
+        <class-name>com.company.data.DatabaseLoader</class-name>
+        <parameter name="URL">
+          <string>jdbc:cloudscape:rmi:MyData</string>
+        </parameter>
+      </cache-loader>
+    </region-attributes>
+  </region>
+
+  <region name="myOtherRegion" refid="REPLICATE">
+    <entry>
+      <key><string>MyKey</string></key>
+      <value><string>MyValue</string></value>
+    </entry>
+    <entry>
+      <key><string>MyOtherKey</string></key>
+      <value>
+        <declarable>
+          <class-name>com.company.data.MyDeclarable</class-name>
+        </declarable>
+      </value>
+    </entry>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/example3-cache.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/example3-cache.xml b/geode-core/src/main/resources/javadoc-images/example3-cache.xml
new file mode 100644
index 0000000..803e72e
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/example3-cache.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- A sample GemFire declarative caching XML File that demonstrates
+     the "named region attributes" feature.
+-->
+
+<cache
+    xmlns="http://schema.pivotal.io/gemfire/cache"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd"
+    version="8.1">
+  <region-attributes id="template" statistics-enabled="true" 
+                     scope="distributed-ack">
+    <key-constraint>java.lang.String</key-constraint>
+    <value-constraint>com.company.app.Customer</value-constraint>
+    <entry-idle-time>
+      <expiration-attributes timeout="60"/>
+    </entry-idle-time>
+  </region-attributes>
+
+  <!-- define a named region-attributes that uses the predefined REPLICATE -->
+  <region-attributes id="distributed" refid="REPLICATE">
+    <cache-loader>
+      <class-name>com.company.app.DBLoader</class-name>
+    </cache-loader>
+  </region-attributes>
+
+  <region-attributes id="persistent" refid="distributed"
+                     data-policy="persistent-replicate"> 
+    <eviction-attributes>
+      <lru-entry-count maximum="1000" action="overflow-to-disk"/>
+    </eviction-attributes>
+  </region-attributes>
+
+  <region name="customers" refid="template"/>
+  <region name="customers-west" refid="template"/>
+  <region name="customers-central" refid="template"/>
+  <region name="customers-east" refid="template"/>
+
+  <region name="orders" refid="template"/>
+  <region name="orders-west" refid="persistent"/>
+  <region name="orders-central" refid="persistent"/>
+  <region name="orders-east" refid="persistent"/>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/extensible-hashing.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/extensible-hashing.fig b/geode-core/src/main/resources/javadoc-images/extensible-hashing.fig
new file mode 100644
index 0000000..1a33d46
--- /dev/null
+++ b/geode-core/src/main/resources/javadoc-images/extensible-hashing.fig
@@ -0,0 +1,159 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 8700 2550 9975 3300
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8700 2550 9975 2550 9975 3300 8700 3300 8700 2550
+4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 3000 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 3225 locations = ...\001
+4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 2775 BucketInfo2\001
+-6
+6 8700 3450 9975 4200
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8700 3450 9975 3450 9975 4200 8700 4200 8700 3450
+4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 3900 localDepth = 3\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 4125 locations = ...\001
+4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 3675 BucketInfo3\001
+-6
+6 8700 1650 9975 2400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8700 1650 9975 1650 9975 2400 8700 2400 8700 1650
+4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 2100 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 2325 locations = ...\001
+4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 1875 BucketInfo1\001
+-6
+6 8700 750 9975 1500
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8700 750 9975 750 9975 1500 8700 1500 8700 750
+4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 975 BucketInfo0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 1200 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 1425 locations = ...\001
+-6
+6 900 1875 1800 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1275 2775 1800 2775
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 1275 1875 1800 1875 1800 3075 1275 3075 1275 1875
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1275 2175 1800 2175
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1275 2475 1800 2475
+4 0 0 50 -1 0 12 0.0000 4 135 180 900 3000 11\001
+4 0 0 50 -1 0 12 0.0000 4 135 180 900 2700 10\001
+4 0 0 50 -1 0 12 0.0000 4 135 180 900 2400 01\001
+4 0 0 50 -1 0 12 0.0000 4 135 180 900 2100 00\001
+-6
+6 2250 2550 3525 3300
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2250 2550 3525 2550 3525 3300 2250 3300 2250 2550
+4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 3000 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 3225 locations = ...\001
+4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 2775 BucketInfo2\001
+-6
+6 2250 3450 3525 4200
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2250 3450 3525 3450 3525 4200 2250 4200 2250 3450
+4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 3675 BucketInfo3\001
+4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 3900 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 4125 locations = ...\001
+-6
+6 2250 1650 3525 2400
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2250 1650 3525 1650 3525 2400 2250 2400 2250 1650
+4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 1875 BucketInfo1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 2100 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 2325 locations = ...\001
+-6
+6 2250 750 3525 1500
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 2250 750 3525 750 3525 1500 2250 1500 2250 750
+4 0 0 50 -1 2 12 0.0000 4 135 1005 2325 975 BucketInfo0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1095 2325 1200 localDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 2325 1425 locations = ...\001
+-6
+6 8700 4350 9975 5100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8700 4350 9975 4350 9975 5100 8700 5100 8700 4350
+4 0 0 50 -1 2 12 0.0000 4 135 1005 8775 4575 BucketInfo7\001
+4 0 0 50 -1 0 12 0.0000 4 180 1095 8775 4800 localDepth = 3\001
+4 0 0 50 -1 0 12 0.0000 4 135 1005 8775 5025 locations = ...\001
+-6
+6 3975 2250 6225 3300
+4 0 0 50 -1 1 12 0.0000 4 135 1980 3975 2400 When Bucket3 reaches the\001
+4 0 0 50 -1 1 12 0.0000 4 180 2190 3975 2625 maximum size, it is split into\001
+4 0 0 50 -1 1 12 0.0000 4 135 1935 3975 2850 two buckets: Bucket3 and\001
+4 0 0 50 -1 1 12 0.0000 4 135 2190 3975 3075 Bucket7.  Three bits are used\001
+4 0 0 50 -1 1 12 0.0000 4 135 1035 3975 3300 to index data.\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 1950 8700 1125
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 2325 8700 2025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 2625 8700 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 2925 8700 3750
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 1800 1950 2250 1125
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 1800 2325 2250 2025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 1800 2625 2250 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 1800 2925 2250 3750
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 2775 8250 2775
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7725 1875 8250 1875 8250 3075 7725 3075 7725 1875
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 2175 8250 2175
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 2475 8250 2475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 3975 8250 3975
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7725 3075 8250 3075 8250 4275 7725 4275 7725 3075
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 3375 8250 3375
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7725 3675 8250 3675
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 3225 8700 1200
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 3525 8700 2025
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 3825 8700 2925
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 8250 4125 8700 4725
+4 0 0 50 -1 2 12 0.0000 4 180 1365 6825 1275 BucketDirectory\001
+4 0 0 50 -1 0 12 0.0000 4 180 1200 6825 1500 globalDepth = 3\001
+4 0 0 50 -1 2 12 0.0000 4 180 1365 375 1275 BucketDirectory\001
+4 0 0 50 -1 0 12 0.0000 4 180 1200 375 1500 globalDepth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3000 011\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 2700 010\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 2400 001\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 2100 000\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 4200 111\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3900 110\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3600 101\001
+4 0 0 50 -1 0 12 0.0000 4 135 270 7350 3300 100\001
+4 0 0 50 -1 0 12 0.0000 4 135 405 675 1800 mask\001
+4 0 0 50 -1 0 12 0.0000 4 135 405 7200 1800 mask\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/extensible-hashing.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/extensible-hashing.gif b/geode-core/src/main/resources/javadoc-images/extensible-hashing.gif
new file mode 100644
index 0000000..58366a7
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/extensible-hashing.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/resources/javadoc-images/health-classes.gif
----------------------------------------------------------------------
diff --git a/geode-core/src/main/resources/javadoc-images/health-classes.gif b/geode-core/src/main/resources/javadoc-images/health-classes.gif
new file mode 100644
index 0000000..131347a
Binary files /dev/null and b/geode-core/src/main/resources/javadoc-images/health-classes.gif differ


[32/45] incubator-geode git commit: GEODE-573: Fix broken image links in javadocs

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/region-implementation.fig
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/region-implementation.fig b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/region-implementation.fig
deleted file mode 100644
index 62a20b2..0000000
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/region-implementation.fig
+++ /dev/null
@@ -1,262 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter  
-100.00
-Single
--2
-1200 2
-6 3150 2250 4500 2550
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3150 2250 4500 2250 4500 2550 3150 2550 3150 2250
-4 0 0 50 -1 2 12 0.0000 4 180 1215 3225 2475 AbstractRegion\001
--6
-6 3225 3225 4350 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3225 3225 4350 3225 4350 3525 3225 3525 3225 3225
-4 0 0 50 -1 2 12 0.0000 4 180 960 3300 3450 LocalRegion\001
--6
-6 4950 3225 6525 3525
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4950 3225 6525 3225 6525 3525 4950 3525 4950 3225
-4 0 0 50 -1 2 12 0.0000 4 180 1470 5025 3450 SharedRegionData\001
--6
-6 3375 1275 4050 1575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3375 1275 4050 1275 4050 1575 3375 1575 3375 1275
-4 0 0 50 -1 1 12 0.0000 4 180 495 3450 1500 Region\001
--6
-6 1800 1275 3075 1575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1800 1275 3075 1275 3075 1575 1800 1575 1800 1275
-4 0 0 50 -1 1 12 0.0000 4 180 1185 1875 1500 RegionAttributes\001
--6
-6 4350 1275 5775 1575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4350 1275 5775 1275 5775 1575 4350 1575 4350 1275
-4 0 0 50 -1 1 12 0.0000 4 135 1275 4425 1500 AttributesMutator\001
--6
-6 3000 3975 4575 4275
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3000 3975 4575 3975 4575 4275 3000 4275 3000 3975
-4 0 0 50 -1 2 12 0.0000 4 180 1425 3075 4200 DistributedRegion\001
--6
-6 375 4275 2325 4575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 375 4275 2325 4275 2325 4575 375 4575 375 4275
-4 0 0 50 -1 2 12 0.0000 4 135 1815 450 4500 DistributedLockService\001
--6
-6 150 3750 2325 4050
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 150 3750 2325 3750 2325 4050 150 4050 150 3750
-4 0 0 50 -1 2 12 0.0000 4 135 2040 225 3975 CacheDistributionAdvisor\001
--6
-6 7875 7050 8850 7350
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7875 7050 8850 7050 8850 7350 7875 7350 7875 7050
-4 0 0 50 -1 2 12 0.0000 4 180 840 7950 7275 StatsEntry\001
--6
-6 8475 6150 9450 6450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8475 6150 9450 6150 9450 6450 8475 6450 8475 6150
-4 0 0 50 -1 2 12 0.0000 4 180 825 8550 6375 ThinEntry\001
--6
-6 9225 7050 10575 7350
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9225 7050 10575 7050 10575 7350 9225 7350 9225 7050
-4 0 0 50 -1 2 12 0.0000 4 180 1215 9300 7275 ThinLRUEntry\001
--6
-6 8025 5325 9450 5625
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8025 5325 9450 5325 9450 5625 8025 5625 8025 5325
-4 0 0 50 -1 1 12 0.0000 4 180 1275 8100 5550 EntriesMap.Entry\001
--6
-6 9825 5325 11100 5625
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9825 5325 11100 5325 11100 5625 9825 5625 9825 5325
-4 0 0 50 -1 1 12 0.0000 4 135 1125 9900 5550 LRUClockNode\001
--6
-6 10200 6150 11100 6450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 10200 6150 11100 6150 11100 6450 10200 6450 10200 6150
-4 0 0 50 -1 1 12 0.0000 4 180 735 10275 6375 LRUEntry\001
--6
-6 7875 7875 9225 8175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 7875 7875 9225 7875 9225 8175 7875 8175 7875 7875
-4 0 0 50 -1 2 12 0.0000 4 180 1230 7950 8100 StatsLRUEntry\001
--6
-6 5025 5325 6000 5625
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5025 5325 6000 5325 6000 5625 5025 5625 5025 5325
-4 0 0 50 -1 1 12 0.0000 4 180 840 5100 5550 EntriesMap\001
--6
-6 4050 4650 5325 4950
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4050 4650 5325 4650 5325 4950 4050 4950 4050 4650
-4 0 0 50 -1 1 12 0.0000 4 180 1155 4125 4875 ConcurrentMap\001
--6
-6 3450 6150 5250 6450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3450 6150 5250 6150 5250 6450 3450 6450 3450 6150
-4 0 0 50 -1 2 12 0.0000 4 180 1680 3510 6375 UnsharedEntriesMap\001
--6
-6 2625 5325 4425 5625
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2625 5325 4425 5325 4425 5625 2625 5625 2625 5325
-4 0 0 50 -1 2 12 0.0000 4 180 1665 2700 5550 ConcurrentHashMap\001
--6
-6 1275 5325 2100 5625
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1275 5325 2100 5325 2100 5625 1275 5625 1275 5325
-4 0 0 50 -1 2 12 0.0000 4 180 660 1350 5550 Segment\001
--6
-6 5625 6150 7200 6450
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5625 6150 7200 6150 7200 6450 5625 6450 5625 6150
-4 0 0 50 -1 2 12 0.0000 4 180 1470 5678 6375 SharedEntriesMap\001
--6
-6 4575 6825 6075 7125
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 4575 6825 6075 6825 6075 7125 4575 7125 4575 6825
-4 0 0 50 -1 1 12 0.0000 4 180 1380 4650 7050 LRUMapCallbacks\001
--6
-6 3150 7875 5325 8175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3150 7875 5325 7875 5325 8175 3150 8175 3150 7875
-4 0 0 50 -1 2 12 0.0000 4 180 2070 3203 8100 UnsharedLRUEntriesMap\001
--6
-6 1200 7875 2400 8175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 1200 7875 2400 7875 2400 8175 1200 8175 1200 7875
-4 0 0 50 -1 2 12 0.0000 4 180 1050 1275 8100 LRUSegment\001
--6
-6 5700 7875 7650 8175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5700 7875 7650 7875 7650 8175 5700 8175 5700 7875
-4 0 0 50 -1 2 12 0.0000 4 180 1860 5745 8100 SharedLRUEntriesMap\001
--6
-6 9000 1500 10950 2475
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9075 1575 10875 1575 10875 2400 9075 2400 9075 1575
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9000 1500 10950 1500 10950 2475 9000 2475 9000 1500
-4 1 0 50 -1 0 12 0.0000 4 180 1665 9975 1800 GemFire Cache Region\001
-4 1 0 50 -1 0 12 0.0000 6 165 1440 9975 2280 Revision: 1.2\001
-4 1 0 50 -1 0 12 0.0000 4 180 1680 9975 2040 Implementation Classes\001
--6
-6 9525 7875 11250 8175
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 9525 7875 11250 7875 11250 8175 9525 8175 9525 7875
-4 0 0 50 -1 2 12 0.0000 4 180 1575 9600 8100 DiskThinLRUEntry\001
--6
-6 3000 8625 5550 8925
-2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 3000 8625 5550 8625 5550 8925 3000 8925 3000 8625
-4 0 0 50 -1 2 12 0.0000 4 180 2430 3075 8850 DiskUnsharedLRUEntriesMap\001
--6
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 3750 2250 3750 1575
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 3750 3225 3750 2550
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 3225 3375 2700 3375 2700 2400 3150 2400
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 4
-	1 0 1.00 120.00 120.00
-	1 0 1.00 120.00 120.00
-	 2400 1575 2400 1875 5025 1875 5025 1575
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 3750 3975 3750 3525
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 2325 3900 2625 3900 2625 4425 2325 4425
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2625 4125 3000 4125
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 4350 3450 4950 3450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 60.00 120.00
-	 4350 3300 4575 3300 4575 3000 4200 3000 4200 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 60.00 120.00
-	 6525 3375 6825 3375 6825 2925 6300 2925 6300 3225
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
-	 4125 3525 4125 3825 5775 3825
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	0 0 1.00 60.00 120.00
-	 5775 3525 5775 5325
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 8925 6150 8925 5625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
-	 8325 7050 8325 6750 9600 6750 9600 7050
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 8925 6750 8925 6450
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 10425 7050 10425 6450
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 10575 6150 10575 5625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5
-	0 0 1.00 60.00 120.00
-	 11100 5475 11325 5475 11325 5025 10875 5025 10875 5325
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
-	1 0 1.00 120.00 120.00
-	 8325 7350 8325 7875
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 10425 6825 10950 6825 10950 7575 8850 7575 8850 7875
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
-	 4575 6150 4575 5925 6300 5925 6300 6150
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 5475 5925 5475 5625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 6000 5475 8025 5475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
-	1 0 1.00 120.00 120.00
-	 5325 5325 5325 5175 4800 5175 4800 4950
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 4200 5325 4200 4950
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 1650 7875 1650 5625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2100 5475 2625 5475
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 3750 6150 3750 5625
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3150 8025 2400 8025
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 3750 7875 3750 6450
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 6825 7875 6825 6450
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
-	 4425 7875 4425 7575 6150 7575 6150 7875
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 5325 7575 5325 7125
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 10200 7875 10200 7350
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	1 0 1.00 120.00 120.00
-	 4125 8625 4125 8175
-4 0 0 50 -1 0 12 0.0000 4 75 90 3000 2400 *\001
-4 0 0 50 -1 0 12 0.0000 4 180 780 1875 2850 subregions\001
-4 0 0 50 -1 0 12 0.0000 4 165 435 6600 2850 parent\001
-4 0 0 50 -1 0 12 0.0000 4 165 435 4425 2925 parent\001
-4 0 0 50 -1 0 12 0.0000 4 135 465 5850 4350 entries\001
-4 0 0 50 -1 0 12 0.0000 4 135 1050 11400 5325 nextLRUNode\001
-4 0 0 50 -1 0 12 0.0000 4 75 90 2175 5475 *\001
-4 0 0 50 -1 0 12 0.0000 4 75 90 7875 5475 *\001
-4 0 0 50 -1 0 12 0.0000 4 75 90 2475 8025 *\001

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6266eb04/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/package.html
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/package.html b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/package.html
index cdef772..bd8713e 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/package.html
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/package.html
@@ -85,7 +85,7 @@ buckets to be accessed without delay.  The below diagram demonstrates
 bucket splitting with extensible hashing.</P>
 
 <P align="center">
-<IMG src="doc-files/extensible-hashing.gif" width="641" width="292">
+<IMG src="{@docRoot}/javadoc-images/extensible-hashing.gif" width="641" width="292">
 </P>
 
 <P>A <code>BucketInfo</code> contains metadata about a bucket (most
@@ -97,7 +97,7 @@ a number of <code>Bucket</code>s that hold the values for keys that
 match the bucket's mask as shown in the below diagram.</P>
 
 <P align="center">
-<IMG src="doc-files/partitioned-regions.gif" width="592" height="483">
+<IMG src="{@docRoot}/javadoc-images/partitioned-regions.gif" width="592" height="483">
 </P>
 
 <P>The total size (in bytes) of a bucket is maintained as key/value
@@ -134,7 +134,7 @@ target the primary and are passed on to the backups from the primary.</P>
 state transitions of the <code>BucketAdvisor</code>:</P>
 
 <P align="center">
-<IMG src="doc-files/BucketAdvisor-state.png" width="640" height="372">
+<IMG src="{@docRoot}/javadoc-images/BucketAdvisor-state.png" width="640" height="372">
 </P>
 
 <H3>Partitioned Region Cache Listeners</H3>
@@ -234,7 +234,7 @@ that multiple copies of a bucket are not hosted by the same member.
 <H1>System Properties</H1>
 
 All of the system properties used by GemFire are discussed
-<a href="doc-files/properties.html">here</a>.
+<a href="properties.html">here</a>.
 
 </BODY>
 


[22/45] incubator-geode git commit: GEODE-1076: CI Failure: Suspect string in DirectChannel.disconnect()

Posted by kl...@apache.org.
GEODE-1076: CI Failure: Suspect string in DirectChannel.disconnect()

Added error handling to DirectChannel.disconnect().  It doesn't know the
state of the semaphores it is trying to release so it needs to handle
the Error that might be thrown.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/6ce7e838
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/6ce7e838
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/6ce7e838

Branch: refs/heads/feature/GEODE-1050
Commit: 6ce7e8384f02fa8dac2606cf5f5e5271ef87e9f4
Parents: b313470
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Thu Mar 10 10:17:19 2016 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Thu Mar 10 10:18:29 2016 -0800

----------------------------------------------------------------------
 .../internal/direct/DirectChannel.java          | 31 ++++++++------------
 1 file changed, 12 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6ce7e838/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
index 06b40b8..9fe5260 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java
@@ -70,8 +70,6 @@ import com.gemstone.gemfire.internal.util.Breadcrumbs;
 import com.gemstone.gemfire.internal.util.concurrent.ReentrantSemaphore;
 
 /**
- * @author Bruce Schuchardt
- * @author Darrel Schneider
  * DirectChannel is used to interact directly with other Direct servers to
  * distribute GemFire messages to other nodes.  It is held by a
  * com.gemstone.gemfire.internal.cache.distribution.DistributionChannel,
@@ -191,13 +189,8 @@ public class DirectChannel {
    * The maximum number of concurrent senders sending a message to a group of recipients.
    */
   static private final int MAX_GROUP_SENDERS = Integer.getInteger("p2p.maxGroupSenders", DEFAULT_CONCURRENCY_LEVEL).intValue();
-  private Semaphore groupUnorderedSenderSem; // TODO this should be final?
-  private Semaphore groupOrderedSenderSem; // TODO this should be final?
-
-//  /**
-//   * cause of abnormal shutdown, if any
-//   */
-//  private volatile Exception shutdownCause;
+  private Semaphore groupUnorderedSenderSem;
+  private Semaphore groupOrderedSenderSem;
 
   private Semaphore getGroupSem(boolean ordered) {
     if (ordered) {
@@ -248,14 +241,6 @@ public class DirectChannel {
     }
     return false;
     
-//    Boolean b = getThreadOwnsResourcesRegistration();
-//    if (b == null) {
-//      // thread does not have a preference so return default
-//      return !this.owner.shareSockets;
-//      return false;
-//    } else {
-//      return b.booleanValue();
-//    }
   }
 
   /**
@@ -809,8 +794,16 @@ public class DirectChannel {
 //    this.shutdownCause = cause;
     this.disconnected = true;
     this.disconnectCompleted = false;
-    releaseGroupSendPermission(true);
-    releaseGroupSendPermission(false);
+    try {
+      groupOrderedSenderSem.release();
+    } catch (Error e) {
+      // GEODE-1076 - already released
+    }
+    try {
+      groupUnorderedSenderSem.release();
+    } catch (Error e) {
+      // GEODE-1076 - already released
+    }
     this.conduit.stop(cause);
     this.disconnectCompleted = true;
   }


[28/45] incubator-geode git commit: GEODE-1025: Replacing direct dependency on spring data gemfire with an SPI

Posted by kl...@apache.org.
GEODE-1025: Replacing direct dependency on spring data gemfire with an SPI

Removing the direct use of Spring Data Gemfire from within the geode
code. Replacing it with a SPI that allows the user to override the
behavior of ServerLauncher.start with their own implementation that
creates a cache.

Spring Data Gemfire can provide an implementation that bootstraps the
cache using spring, if spring-xml-location is specified.

Users should implement ServerLauncherCacheProvider. The cache will be
created by the first provider that returns a non null cache. If no
providers create a cache, the cache will be created by the
ServerLauncher itself.

It would be nice to move the spring-xml-location parameter itself into
the interface, but this is hard to do because gfsh determines the
parameters to start-server by looking at the arguments in the command
class. So I left spring-xml-location alone.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/7734781f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/7734781f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/7734781f

Branch: refs/heads/feature/GEODE-1050
Commit: 7734781f9ada7a7dc660cdcea46126b6129c0e70
Parents: 87b4eba
Author: Dan Smith <up...@apache.org>
Authored: Mon Feb 29 18:24:42 2016 -0800
Committer: Dan Smith <up...@apache.org>
Committed: Fri Mar 11 11:02:08 2016 -0800

----------------------------------------------------------------------
 geode-assembly/build.gradle                     | 17 ++--
 .../LauncherLifecycleCommandsDUnitTest.java     | 10 +-
 geode-core/build.gradle                         |  2 -
 .../gemfire/distributed/ServerLauncher.java     | 56 ++++-------
 .../ServerLauncherCacheProvider.java            | 34 +++++++
 .../DefaultServerLauncherCacheProvider.java     | 57 +++++++++++
 .../gemfire/distributed/LauncherTestSuite.java  |  2 +-
 .../MockServerLauncherCacheProvider.java        | 42 +++++++++
 .../ServerLauncherWithProviderJUnitTest.java    | 92 ++++++++++++++++++
 .../ServerLauncherWithSpringJUnitTest.java      | 99 --------------------
 ...fire.distributed.ServerLauncherCacheProvider |  1 +
 .../resources/spring/spring-gemfire-context.xml | 42 ---------
 gradle/rat.gradle                               |  1 +
 13 files changed, 263 insertions(+), 192 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 14febbd..22a5561 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -41,8 +41,16 @@ gradle.taskGraph.whenReady( { graph ->
   }
 })
 
+configurations {
+  bundled {
+    description 'A dependency that is shipped with geode, but is not required to compile'
+  }
+}
+
 dependencies {
   provided project(':geode-core')
+  bundled 'org.springframework.data:spring-data-commons:' + project.'spring-data-commons.version'
+  bundled 'org.springframework.data:spring-data-gemfire:' + project.'spring-data-gemfire.version'
   
   archives project(':geode-common')  
   archives project(':geode-json')  
@@ -284,12 +292,9 @@ distributions {
         from project(":geode-cq").configurations.archives.allArtifacts.files
 
         from project(":geode-core").configurations.runtime
-        // Copying from provided configuration is only for supporting Spring Data GemFire.
-        // If there are more dependencies added to provided configuration, this will need
-        // to change
-        from (project(":geode-core").configurations.provided) {
-          include 'spring-data-gemfire-*'
-        }
+
+        from configurations.bundled
+
         from project(":geode-core").configurations.archives.allArtifacts.files
         from project(":geode-core").webJar
         from project(":geode-core").raJar

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-assembly/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/LauncherLifecycleCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/LauncherLifecycleCommandsDUnitTest.java b/geode-assembly/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/LauncherLifecycleCommandsDUnitTest.java
index 7c6929c..f0eaaac 100644
--- a/geode-assembly/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/LauncherLifecycleCommandsDUnitTest.java
+++ b/geode-assembly/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/LauncherLifecycleCommandsDUnitTest.java
@@ -48,6 +48,7 @@ import com.gemstone.gemfire.management.internal.cli.util.CommandStringBuilder;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
 
 import org.junit.FixMethodOrder;
+import org.junit.Ignore;
 import org.junit.runners.MethodSorters;
 
 import javax.management.MBeanServerConnection;
@@ -804,7 +805,8 @@ public class LauncherLifecycleCommandsDUnitTest extends CliCommandTestBase {
     assertEquals(Status.NOT_RESPONDING, locatorState.getStatus());
   }
 
-  public void test013StartServerWithSpring() {
+  @Ignore("Disabled until GEODE-1025, SGF-476 are resolved")
+  public void IGNORE_test013StartServerWithSpring() {
     String pathname = (getClass().getSimpleName() + "_" + getTestMethodName());
     File workingDirectory = new File(pathname);
 
@@ -832,9 +834,13 @@ public class LauncherLifecycleCommandsDUnitTest extends CliCommandTestBase {
     assertNotNull(springGemFireServer);
 
     ServerState serverState = springGemFireServer.status();
-
+    
     assertNotNull(serverState);
     assertEquals(Status.ONLINE, serverState.getStatus());
+    
+    //Ensure the member name is what is set through spring
+    String logFile = serverState.getLogFile();
+    assertTrue("Log file name was not configured from spring context: " + logFile, logFile.contains("spring_server.log"));
 
     // Now that the GemFire Server bootstrapped with Spring started up OK, stop it!
     stopServer(springGemFireServer.getWorkingDirectory());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/build.gradle
----------------------------------------------------------------------
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index a72d0bf..6ecedef 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -74,8 +74,6 @@ dependencies {
   compile 'org.fusesource.jansi:jansi:' + project.'jansi.version'
   compile 'org.slf4j:slf4j-api:' + project.'slf4j-api.version'
   runtime 'org.springframework:spring-aop:' + project.'springframework.version'
-  compile 'org.springframework.data:spring-data-commons:' + project.'spring-data-commons.version'
-  provided 'org.springframework.data:spring-data-gemfire:' + project.'spring-data-gemfire.version'
   compile 'org.springframework:spring-beans:' + project.'springframework.version' //only used in AbstractCommandsController
   compile 'org.springframework:spring-context:' + project.'springframework.version'
   compile 'org.springframework:spring-context-support:' + project.'springframework.version'

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncher.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncher.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncher.java
index 4f43370..9c62346 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncher.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncher.java
@@ -29,6 +29,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 import java.util.TreeMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
@@ -43,7 +44,7 @@ import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.CacheFactory;
 import com.gemstone.gemfire.cache.partition.PartitionRegionHelper;
 import com.gemstone.gemfire.cache.server.CacheServer;
-import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
+import com.gemstone.gemfire.distributed.internal.DefaultServerLauncherCacheProvider;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.internal.GemFireVersion;
@@ -72,7 +73,6 @@ import com.gemstone.gemfire.internal.process.ProcessLauncherContext;
 import com.gemstone.gemfire.internal.process.ProcessType;
 import com.gemstone.gemfire.internal.process.StartupStatusListener;
 import com.gemstone.gemfire.internal.process.UnableToControlProcessException;
-import com.gemstone.gemfire.internal.util.CollectionUtils;
 import com.gemstone.gemfire.internal.util.IOUtils;
 import com.gemstone.gemfire.lang.AttachAPINotFoundException;
 import com.gemstone.gemfire.management.internal.cli.i18n.CliStrings;
@@ -85,8 +85,6 @@ import joptsimple.OptionException;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 
-import org.springframework.data.gemfire.support.SpringContextBootstrappingInitializer;
-
 /**
  * The ServerLauncher class is a launcher class with main method to start a GemFire Server (implying a GemFire Cache
  * Server process).
@@ -98,7 +96,7 @@ import org.springframework.data.gemfire.support.SpringContextBootstrappingInitia
  * @since 7.0
  */
 @SuppressWarnings({ "unused" })
-public final class ServerLauncher extends AbstractLauncher<String> {
+public class ServerLauncher extends AbstractLauncher<String> {
 
   /**
    * @deprecated This is specific to the internal implementation and may go away in a future release.
@@ -148,6 +146,8 @@ public final class ServerLauncher extends AbstractLauncher<String> {
 
   private static final AtomicReference<ServerLauncher> INSTANCE = new AtomicReference<>();
 
+  private static final ServerLauncherCacheProvider DEFAULT_CACHE_PROVIDER = new DefaultServerLauncherCacheProvider();
+
   private volatile transient boolean debug;
 
   private final transient ControlNotificationHandler controlHandler;
@@ -313,7 +313,7 @@ public final class ServerLauncher extends AbstractLauncher<String> {
    * @return a CacheConfig object with additional GemFire Cache configuration meta-data used on startup to configure
    * the Cache.
    */
-  final CacheConfig getCacheConfig() {
+  public final CacheConfig getCacheConfig() {
     final CacheConfig copy = new CacheConfig();
     copy.setDeclarativeConfig(this.cacheConfig);
     return copy;
@@ -716,7 +716,7 @@ public final class ServerLauncher extends AbstractLauncher<String> {
 
         try {
           final Properties gemfireProperties = getDistributedSystemProperties(getProperties());
-          this.cache = (isSpringXmlLocationSpecified() ? startWithSpring() : startWithGemFireApi(gemfireProperties));
+          this.cache = createCache(gemfireProperties);
           
           //Set the resource manager options
           if (this.criticalHeapPercentage != null) {
@@ -787,40 +787,16 @@ public final class ServerLauncher extends AbstractLauncher<String> {
     }
   }
 
-  private Cache startWithSpring() {
-    System.setProperty(DistributionConfig.GEMFIRE_PREFIX + DistributionConfig.NAME_NAME, getMemberName());
-
-    new SpringContextBootstrappingInitializer().init(CollectionUtils.createProperties(Collections.singletonMap(
-      SpringContextBootstrappingInitializer.CONTEXT_CONFIG_LOCATIONS_PARAMETER, getSpringXmlLocation())));
-
-    return SpringContextBootstrappingInitializer.getApplicationContext().getBean(Cache.class);
-  }
-
-  private Cache startWithGemFireApi(final Properties gemfireProperties ) {
-    final CacheConfig cacheConfig = getCacheConfig();
-    final CacheFactory cacheFactory = new CacheFactory(gemfireProperties);
-
-    if (cacheConfig.pdxPersistentUserSet) {
-      cacheFactory.setPdxPersistent(cacheConfig.isPdxPersistent());
-    }
-
-    if (cacheConfig.pdxDiskStoreUserSet) {
-      cacheFactory.setPdxDiskStore(cacheConfig.getPdxDiskStore());
-    }
-
-    if (cacheConfig.pdxIgnoreUnreadFieldsUserSet) {
-      cacheFactory.setPdxIgnoreUnreadFields(cacheConfig.getPdxIgnoreUnreadFields());
-    }
-
-    if (cacheConfig.pdxReadSerializedUserSet) {
-      cacheFactory.setPdxReadSerialized(cacheConfig.isPdxReadSerialized());
-    }
-
-    if (cacheConfig.pdxSerializerUserSet) {
-      cacheFactory.setPdxSerializer(cacheConfig.getPdxSerializer());
+  private Cache createCache(Properties gemfireProperties) {
+    ServiceLoader<ServerLauncherCacheProvider> loader = ServiceLoader.load(ServerLauncherCacheProvider.class);
+    for(ServerLauncherCacheProvider provider : loader) {
+      Cache cache = provider.createCache(gemfireProperties, this);
+      if(cache != null) {
+        return cache;
+      }
     }
-
-    return cacheFactory.create();
+    
+    return DEFAULT_CACHE_PROVIDER.createCache(gemfireProperties, this);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncherCacheProvider.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncherCacheProvider.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncherCacheProvider.java
new file mode 100644
index 0000000..5dad5fe
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/ServerLauncherCacheProvider.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import java.util.Properties;
+
+import com.gemstone.gemfire.cache.Cache;
+
+/**
+ * ServerLauncherCacheProvider is an extension point for overriding
+ * the behavior of a server started with {@link ServerLauncher} or
+ * the gfsh start server command. 
+ * 
+ * 
+ */
+public interface ServerLauncherCacheProvider {
+
+  Cache createCache(Properties gemfireProperties, ServerLauncher serverLauncher);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DefaultServerLauncherCacheProvider.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DefaultServerLauncherCacheProvider.java b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DefaultServerLauncherCacheProvider.java
new file mode 100644
index 0000000..6f155ad
--- /dev/null
+++ b/geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/DefaultServerLauncherCacheProvider.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed.internal;
+
+import java.util.Properties;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.distributed.ServerLauncher;
+import com.gemstone.gemfire.distributed.ServerLauncherCacheProvider;
+import com.gemstone.gemfire.internal.cache.CacheConfig;
+
+public class DefaultServerLauncherCacheProvider
+    implements ServerLauncherCacheProvider {
+
+  @Override
+  public Cache createCache(Properties gemfireProperties, ServerLauncher serverLauncher) {
+    final CacheConfig cacheConfig = serverLauncher.getCacheConfig();
+    final CacheFactory cacheFactory = new CacheFactory(gemfireProperties);
+
+    if (cacheConfig.pdxPersistentUserSet) {
+      cacheFactory.setPdxPersistent(cacheConfig.isPdxPersistent());
+    }
+
+    if (cacheConfig.pdxDiskStoreUserSet) {
+      cacheFactory.setPdxDiskStore(cacheConfig.getPdxDiskStore());
+    }
+
+    if (cacheConfig.pdxIgnoreUnreadFieldsUserSet) {
+      cacheFactory.setPdxIgnoreUnreadFields(cacheConfig.getPdxIgnoreUnreadFields());
+    }
+
+    if (cacheConfig.pdxReadSerializedUserSet) {
+      cacheFactory.setPdxReadSerialized(cacheConfig.isPdxReadSerialized());
+    }
+
+    if (cacheConfig.pdxSerializerUserSet) {
+      cacheFactory.setPdxSerializer(cacheConfig.getPdxSerializer());
+    }
+
+    return cacheFactory.create();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherTestSuite.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherTestSuite.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherTestSuite.java
index 73a2337..21edb4a 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherTestSuite.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherTestSuite.java
@@ -37,7 +37,7 @@ import org.junit.runners.Suite;
    ServerLauncherLocalFileJUnitTest.class,
    ServerLauncherRemoteJUnitTest.class,
    ServerLauncherRemoteFileJUnitTest.class,
-   ServerLauncherWithSpringJUnitTest.class,
+   ServerLauncherWithProviderJUnitTest.class,
 })
 /**
  * Suite of tests for the Launcher classes.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/test/java/com/gemstone/gemfire/distributed/MockServerLauncherCacheProvider.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/MockServerLauncherCacheProvider.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/MockServerLauncherCacheProvider.java
new file mode 100644
index 0000000..c910832
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/MockServerLauncherCacheProvider.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import java.util.Properties;
+
+import com.gemstone.gemfire.cache.Cache;
+
+public class MockServerLauncherCacheProvider
+    implements ServerLauncherCacheProvider {
+  private static Cache cache;
+
+  
+  public static Cache getCache() {
+    return cache;
+  }
+
+  public static void setCache(Cache cache) {
+    MockServerLauncherCacheProvider.cache = cache;
+  }
+
+  @Override
+  public Cache createCache(Properties gemfireProperties,
+      ServerLauncher serverLauncher) {
+    return cache;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithProviderJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithProviderJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithProviderJUnitTest.java
new file mode 100644
index 0000000..33d3562
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithProviderJUnitTest.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.mockito.Mockito;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
+import com.gemstone.gemfire.distributed.ServerLauncher.Builder;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.internal.process.ProcessType;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+
+/**
+ * Extracted from ServerLauncherLocalJUnitTest.
+ * 
+ * @author John Blum
+ * @author Kirk Lund
+ */
+@Category(IntegrationTest.class)
+public class ServerLauncherWithProviderJUnitTest extends AbstractServerLauncherJUnitTestCase {
+
+  @Before
+  public final void setUpServerLauncherWithSpringTest() throws Exception {
+    disconnectFromDS();
+    System.setProperty(ProcessType.TEST_PREFIX_PROPERTY, getUniqueName()+"-");
+  }
+
+  @After
+  public final void tearDownServerLauncherWithSpringTest() throws Exception {
+    MockServerLauncherCacheProvider.setCache(null);
+    disconnectFromDS();
+    
+  }
+
+  // NOTE make sure bugs like Trac #51201 never happen again!!!
+  @Test
+  public void testBootstrapGemFireServerWithProvider() throws Throwable {
+    Cache mockCache = Mockito.mock(Cache.class);
+    MockServerLauncherCacheProvider.setCache(mockCache);
+    this.launcher = new Builder()
+      .setDisableDefaultServer(true)
+      .setForce(true)
+      .setMemberName(getUniqueName())
+      .setSpringXmlLocation("spring/spring-gemfire-context.xml")
+      .set(DistributionConfig.MCAST_PORT_NAME, "0")
+      .build();
+
+    assertNotNull(this.launcher);
+
+    try {
+      assertEquals(Status.ONLINE, this.launcher.start().getStatus());
+
+      waitForServerToStart(this.launcher);
+
+      Cache cache = this.launcher.getCache();
+
+      assertEquals(mockCache, cache);
+    }
+    catch (Throwable e) {
+      this.errorCollector.addError(e);
+    }
+
+    try {
+      assertEquals(Status.STOPPED, this.launcher.stop().getStatus());
+      assertNull(this.launcher.getCache());
+    }
+    catch (Throwable e) {
+      this.errorCollector.addError(e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
deleted file mode 100644
index bf82af8..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.springframework.data.gemfire.support.SpringContextBootstrappingInitializer;
-
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
-import com.gemstone.gemfire.distributed.ServerLauncher.Builder;
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.internal.process.ProcessType;
-import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
-
-/**
- * Extracted from ServerLauncherLocalJUnitTest.
- * 
- * @author John Blum
- * @author Kirk Lund
- */
-@Category(IntegrationTest.class)
-public class ServerLauncherWithSpringJUnitTest extends AbstractServerLauncherJUnitTestCase {
-
-  @Before
-  public final void setUpServerLauncherWithSpringTest() throws Exception {
-    disconnectFromDS();
-    System.setProperty(ProcessType.TEST_PREFIX_PROPERTY, getUniqueName()+"-");
-  }
-
-  @After
-  public final void tearDownServerLauncherWithSpringTest() throws Exception {    
-    disconnectFromDS();
-    SpringContextBootstrappingInitializer.getApplicationContext().close();
-  }
-
-  // NOTE make sure bugs like Trac #51201 never happen again!!!
-  @Test
-  public void testBootstrapGemFireServerWithSpring() throws Throwable {
-    this.launcher = new Builder()
-      .setDisableDefaultServer(true)
-      .setForce(true)
-      .setMemberName(getUniqueName())
-      .setSpringXmlLocation("spring/spring-gemfire-context.xml")
-      .set(DistributionConfig.MCAST_PORT_NAME, "0")
-      .build();
-
-    assertNotNull(this.launcher);
-
-    try {
-      assertEquals(Status.ONLINE, this.launcher.start().getStatus());
-
-      waitForServerToStart(this.launcher);
-
-      Cache cache = this.launcher.getCache();
-
-      assertNotNull(cache);
-      assertTrue(cache.getCopyOnRead());
-      assertEquals(0.95f, cache.getResourceManager().getCriticalHeapPercentage(), 0);
-      assertEquals(0.85f, cache.getResourceManager().getEvictionHeapPercentage(), 0);
-      assertFalse(cache.getPdxIgnoreUnreadFields());
-      assertTrue(cache.getPdxPersistent());
-      assertTrue(cache.getPdxReadSerialized());
-    }
-    catch (Throwable e) {
-      this.errorCollector.addError(e);
-    }
-
-    try {
-      assertEquals(Status.STOPPED, this.launcher.stop().getStatus());
-      assertNull(this.launcher.getCache());
-    }
-    catch (Throwable e) {
-      this.errorCollector.addError(e);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/test/resources/META-INF/services/com.gemstone.gemfire.distributed.ServerLauncherCacheProvider
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/META-INF/services/com.gemstone.gemfire.distributed.ServerLauncherCacheProvider b/geode-core/src/test/resources/META-INF/services/com.gemstone.gemfire.distributed.ServerLauncherCacheProvider
new file mode 100644
index 0000000..36bf10d
--- /dev/null
+++ b/geode-core/src/test/resources/META-INF/services/com.gemstone.gemfire.distributed.ServerLauncherCacheProvider
@@ -0,0 +1 @@
+com.gemstone.gemfire.distributed.MockServerLauncherCacheProvider
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/geode-core/src/test/resources/spring/spring-gemfire-context.xml
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/spring/spring-gemfire-context.xml b/geode-core/src/test/resources/spring/spring-gemfire-context.xml
deleted file mode 100644
index a728493..0000000
--- a/geode-core/src/test/resources/spring/spring-gemfire-context.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:gfe="http://www.springframework.org/schema/gemfire"
-       xmlns:util="http://www.springframework.org/schema/util"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-        http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
-        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
-  ">
-
-  <util:properties id="gemfireProperties">
-    <prop key="name">SpringGemFireServerBootstrap</prop>
-    <prop key="mcast-port">0</prop>
-    <prop key="log-level">config</prop>
-    <prop key="http-service-port">0</prop>
-  </util:properties>
-
-  <gfe:cache properties-ref="gemfireProperties" lazy-init="false" copy-on-read="true"
-             critical-heap-percentage="0.95" eviction-heap-percentage="0.85"
-             pdx-ignore-unread-fields="false" pdx-persistent="true" pdx-read-serialized="true"/>
-
-  <gfe:partitioned-region id="Example" persistent="false"/>
-
-</beans>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7734781f/gradle/rat.gradle
----------------------------------------------------------------------
diff --git a/gradle/rat.gradle b/gradle/rat.gradle
index 68e04c4..d54f9c4 100644
--- a/gradle/rat.gradle
+++ b/gradle/rat.gradle
@@ -127,6 +127,7 @@ rat {
     '**/META-INF/services/org.xml.sax.ext.EntityResolver2',
     '**/META-INF/services/com.gemstone.gemfire.internal.cache.CacheService',
     '**/META-INF/services/com.gemstone.gemfire.internal.cache.xmlcache.XmlParser',
+    '**/META-INF/services/com.gemstone.gemfire.distributed.ServerLauncherCacheProvider',
     '**/META-INF/services/org.springframework.shell.core.CommandMarker',
 
     // --- Other Licenses ---