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 ) );
}