You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/02/21 19:21:30 UTC

[17/21] git commit: Added cache declaration to column family meta data

Added cache declaration to column family meta data


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

Branch: refs/heads/two-dot-o
Commit: 9b7ec937c301ba35e52ca42f93bb1dcd4ea6e592
Parents: 3fd13f0
Author: Todd Nine <tn...@apigee.com>
Authored: Fri Feb 21 10:51:53 2014 -0700
Committer: Todd Nine <tn...@apigee.com>
Committed: Fri Feb 21 10:52:07 2014 -0700

----------------------------------------------------------------------
 .../EntityCollectionManagerFactory.java         |  2 +-
 .../MultiTennantColumnFamilyDefinition.java     | 47 +++++++++++++++++++-
 .../collection/mvcc/stage/load/Load.java        |  2 +-
 .../UniqueValueSerializationStrategyImpl.java   |  2 +-
 .../MvccEntitySerializationStrategyImpl.java    |  2 +-
 .../MvccLogEntrySerializationStrategyImpl.java  |  2 +-
 .../EntityCollectionManagerSyncIT.java          |  2 +-
 .../impl/EdgeMetadataSerializationImpl.java     |  2 +-
 .../impl/EdgeSerializationImpl.java             |  2 +-
 .../impl/NodeSerializationImpl.java             |  2 +-
 10 files changed, 55 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
index 59a5e09..a2f2ff7 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactory.java
@@ -46,7 +46,7 @@ public interface EntityCollectionManagerFactory {
      * The EntityCollectionManager can safely be used on the current thread 
      * and will cache responses.  The returned instance should not be shared 
      * among threads it will not be guaranteed to be thread safe.  
-     * This implementation will be synchronous. Try to use the async 
+     * This implementation will be synchronous. Try to use the consistency
      * implementation if possible
      *
      * @param collectionScope The collectionScope collectionScope to use when 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/astyanax/MultiTennantColumnFamilyDefinition.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/astyanax/MultiTennantColumnFamilyDefinition.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/astyanax/MultiTennantColumnFamilyDefinition.java
index a906fa4..ddbafc2 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/astyanax/MultiTennantColumnFamilyDefinition.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/astyanax/MultiTennantColumnFamilyDefinition.java
@@ -33,30 +33,73 @@ import com.netflix.astyanax.model.ColumnFamily;
  */
 public class MultiTennantColumnFamilyDefinition {
 
+
+    /**
+     * Options for caching on the CF
+     */
+    public enum CacheOption {
+        /**
+         * Use both row key cache and key cache
+         */
+        ALL( "ALL" ),
+
+        /**
+         * Cache keys only (the default)
+         */
+        KEYS( "KEYS_ONLY" ),
+
+        /**
+         * Cache rows only, no keys
+         */
+        ROWS( "ROWS_ONLY" ),
+
+        /**
+         * Cache neither
+         */
+        NONE( "NONE" );
+
+        private String value;
+
+
+        private CacheOption( String value ) {
+            this.value = value;
+        }
+
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+
     public static final String COMPARATOR_TYPE = "comparator_type";
     public static final String READ_REPAIR_CHANCE = "read_repair_chance";
     public static final String KEY_VALIDATION = "key_validation_class";
     public static final String VALUE_VALIDATION = "default_validation_class";
+    public static final String CACHE_OPTION = "caching";
 
 
     private final ColumnFamily columnFamily;
     private final String columnComparatorType;
     private final String keyValidationType;
     private final String valueValidationType;
+    private final CacheOption cacheOption;
 
 
     public MultiTennantColumnFamilyDefinition( final ColumnFamily columnFamily, final String keyValidationType,
-                                               final String columnComparatorType, final String valueValidationType ) {
+                                               final String columnComparatorType, final String valueValidationType, final CacheOption cacheOption ) {
 
         Preconditions.checkNotNull( columnFamily, "columnFamily is required" );
         Preconditions.checkNotNull( columnComparatorType, "columnComparatorType is required" );
         Preconditions.checkNotNull( keyValidationType, "keyValidationType is required" );
         Preconditions.checkNotNull( valueValidationType, "valueValidationType is required" );
+        Preconditions.checkNotNull( cacheOption, "cacheOption is required" );
 
         this.columnFamily = columnFamily;
         this.columnComparatorType = columnComparatorType;
         this.keyValidationType = keyValidationType;
         this.valueValidationType = valueValidationType;
+        this.cacheOption = cacheOption;
     }
 
 
@@ -66,6 +109,8 @@ public class MultiTennantColumnFamilyDefinition {
         options.put( COMPARATOR_TYPE, columnComparatorType );
         options.put( KEY_VALIDATION, keyValidationType );
         options.put( VALUE_VALIDATION, valueValidationType );
+        options.put( CACHE_OPTION, cacheOption.getValue() );
+
 
         //always use 10% read repair chance!
         options.put( READ_REPAIR_CHANCE, 0.1d );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/Load.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/Load.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/Load.java
index 6f61d3e..20abc5a 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/Load.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/Load.java
@@ -94,7 +94,7 @@ public class Load implements Func1<CollectionIoEvent<Id>, Entity> {
         //The version exists, but does not have entity data
         if ( !targetVersion.isPresent() ) {
 
-            //TODO, a lazy async repair/cleanup here?
+            //TODO, a lazy consistency repair/cleanup here?
 
             return null;
         }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImpl.java
index 751021e..421d831 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/UniqueValueSerializationStrategyImpl.java
@@ -75,7 +75,7 @@ public class UniqueValueSerializationStrategyImpl implements UniqueValueSerializ
                 CF_UNIQUE_VALUES,
                 BytesType.class.getSimpleName(),
                 ColumnTypes.DYNAMIC_COMPOSITE_TYPE,
-                BytesType.class.getSimpleName() );
+                BytesType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.KEYS );
 
         return Collections.singleton( cf );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
index aa64ef7..ebb6edb 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImpl.java
@@ -207,7 +207,7 @@ public class MvccEntitySerializationStrategyImpl implements MvccEntitySerializat
         //create the CF entity data.  We want it reversed b/c we want the most recent version at the top of the
         //row for fast seeks
         MultiTennantColumnFamilyDefinition cf = new MultiTennantColumnFamilyDefinition( CF_ENTITY_DATA,
-                BytesType.class.getSimpleName(), ReversedType.class.getSimpleName() + "(" + UUIDType.class.getSimpleName() + ")", BytesType.class.getSimpleName() );
+                BytesType.class.getSimpleName(), ReversedType.class.getSimpleName() + "(" + UUIDType.class.getSimpleName() + ")", BytesType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.KEYS );
 
 
         return Collections.singleton( cf );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
index a9734d2..bb09c3e 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccLogEntrySerializationStrategyImpl.java
@@ -198,7 +198,7 @@ public class MvccLogEntrySerializationStrategyImpl implements MvccLogEntrySerial
         MultiTennantColumnFamilyDefinition cf = new MultiTennantColumnFamilyDefinition( CF_ENTITY_LOG,
                 BytesType.class.getSimpleName(),
                 ReversedType.class.getSimpleName() + "(" + UUIDType.class.getSimpleName() + ")",
-                IntegerType.class.getSimpleName() );
+                IntegerType.class.getSimpleName() , MultiTennantColumnFamilyDefinition.CacheOption.KEYS);
 
 
         return Collections.singleton( cf );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerSyncIT.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerSyncIT.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerSyncIT.java
index 988bfc2..0f13814 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerSyncIT.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerSyncIT.java
@@ -28,7 +28,7 @@ import static org.junit.Assert.assertNull;
 
 
 /**
- * TODO: Refactor this and the async test into 1 common set of assertions with seperate invocations and result
+ * TODO: Refactor this and the consistency test into 1 common set of assertions with seperate invocations and result
  * returns once jukito is finished
  *
  */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationImpl.java
index d7e88d5..b6028ea 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationImpl.java
@@ -370,7 +370,7 @@ public class EdgeMetadataSerializationImpl implements EdgeMetadataSerialization,
      */
     private MultiTennantColumnFamilyDefinition graphCf( MultiTennantColumnFamily cf ) {
         return new MultiTennantColumnFamilyDefinition( cf,
-                BytesType.class.getSimpleName(),UTF8Type.class.getSimpleName(), BytesType.class.getSimpleName() );
+                BytesType.class.getSimpleName(),UTF8Type.class.getSimpleName(), BytesType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.KEYS );
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeSerializationImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeSerializationImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeSerializationImpl.java
index 3095995..4691973 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeSerializationImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeSerializationImpl.java
@@ -513,7 +513,7 @@ public class EdgeSerializationImpl implements EdgeSerialization, Migration {
      */
     private MultiTennantColumnFamilyDefinition graphCf( MultiTennantColumnFamily cf ) {
         return new MultiTennantColumnFamilyDefinition( cf,
-                BytesType.class.getSimpleName(), ColumnTypes.DYNAMIC_COMPOSITE_TYPE, BytesType.class.getSimpleName() );
+                BytesType.class.getSimpleName(), ColumnTypes.DYNAMIC_COMPOSITE_TYPE, BytesType.class.getSimpleName() , MultiTennantColumnFamilyDefinition.CacheOption.KEYS);
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9b7ec937/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/NodeSerializationImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/NodeSerializationImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/NodeSerializationImpl.java
index e8ebc63..50e8373 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/NodeSerializationImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/NodeSerializationImpl.java
@@ -106,7 +106,7 @@ public class NodeSerializationImpl implements NodeSerialization, Migration {
     public Collection<MultiTennantColumnFamilyDefinition> getColumnFamilies() {
         return Collections.singleton(
                 new MultiTennantColumnFamilyDefinition( GRAPH_DELETE, BytesType.class.getSimpleName(),
-                        BooleanType.class.getSimpleName(), BytesType.class.getSimpleName() ) );
+                        BooleanType.class.getSimpleName(), BytesType.class.getSimpleName(), MultiTennantColumnFamilyDefinition.CacheOption.ALL ) );
     }