Make the unique value loading use the config interface for consistent read CL 
instead of hard coding to CL_ALL


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

Branch: refs/heads/datastax-cass-driver
Commit: bd96b18116e16fc35f2bc1d740cff65b03470594
Parents: 8982ddd
Author: Michael Russo <mru...@apigee.com>
Authored: Wed Jul 6 15:14:30 2016 -0700
Committer: Michael Russo <mru...@apigee.com>
Committed: Wed Jul 6 15:14:30 2016 -0700

----------------------------------------------------------------------
 .../impl/EntityCollectionManagerFactoryImpl.java         |  9 +++++++--
 .../collection/impl/EntityCollectionManagerImpl.java     | 11 ++++++++---
 .../collection/mvcc/stage/write/WriteUniqueVerify.java   |  4 ++--
 3 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/bd96b181/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
----------------------------------------------------------------------
diff --git 
a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
 
b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
index a52ee9c..01eab7d 100644
--- 
a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
+++ 
b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
@@ -40,6 +40,7 @@ import 
org.apache.usergrid.persistence.collection.serialization.MvccEntitySerial
 import 
org.apache.usergrid.persistence.collection.serialization.MvccLogEntrySerializationStrategy;
 import 
org.apache.usergrid.persistence.collection.serialization.SerializationFig;
 import 
org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy;
+import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
 import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
 import org.apache.usergrid.persistence.core.rx.RxTaskScheduler;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
@@ -77,6 +78,7 @@ public class EntityCollectionManagerFactoryImpl implements 
EntityCollectionManag
     private final Keyspace keyspace;
     private final MetricsFactory metricsFactory;
     private final RxTaskScheduler rxTaskScheduler;
+    private final CassandraConfig cassandraConfig;
 
     private LoadingCache<ApplicationScope, EntityCollectionManager> ecmCache =
         CacheBuilder.newBuilder().maximumSize( 1000 )
@@ -89,7 +91,7 @@ public class EntityCollectionManagerFactoryImpl implements 
EntityCollectionManag
                                 entitySerializationStrategy, 
uniqueValueSerializationStrategy,
                                 mvccLogEntrySerializationStrategy, keyspace,
                                 metricsFactory, serializationFig,
-                                rxTaskScheduler, scope );
+                                rxTaskScheduler, scope, cassandraConfig );
 
                             return target;
                         }
@@ -107,7 +109,9 @@ public class EntityCollectionManagerFactoryImpl implements 
EntityCollectionManag
                                                final 
UniqueValueSerializationStrategy uniqueValueSerializationStrategy,
                                                final 
MvccLogEntrySerializationStrategy mvccLogEntrySerializationStrategy,
                                                final Keyspace keyspace, final 
EntityCacheFig entityCacheFig,
-                                               final MetricsFactory 
metricsFactory, @CollectionExecutorScheduler  final RxTaskScheduler 
rxTaskScheduler ) {
+                                               final MetricsFactory 
metricsFactory,
+                                               @CollectionExecutorScheduler  
final RxTaskScheduler rxTaskScheduler,
+                                               final CassandraConfig 
cassandraConfig) {
 
         this.writeStart = writeStart;
         this.writeVerifyUnique = writeVerifyUnique;
@@ -125,6 +129,7 @@ public class EntityCollectionManagerFactoryImpl implements 
EntityCollectionManag
         this.keyspace = keyspace;
         this.metricsFactory = metricsFactory;
         this.rxTaskScheduler = rxTaskScheduler;
+        this.cassandraConfig = cassandraConfig;
     }
     @Override
     public EntityCollectionManager createCollectionManager(ApplicationScope 
applicationScope) {

http://git-wip-us.apache.org/repos/asf/usergrid/blob/bd96b181/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
 
b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
index 9261b56..06b086c 100644
--- 
a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
+++ 
b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerImpl.java
@@ -28,6 +28,7 @@ import java.util.UUID;
 
 import com.netflix.astyanax.model.ConsistencyLevel;
 import 
org.apache.usergrid.persistence.collection.serialization.impl.LogEntryIterator;
+import org.apache.usergrid.persistence.core.astyanax.CassandraConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -110,6 +111,7 @@ public class EntityCollectionManagerImpl implements 
EntityCollectionManager {
     private final UniqueValueSerializationStrategy 
uniqueValueSerializationStrategy;
 
     private final SerializationFig serializationFig;
+    private final CassandraConfig cassandraConfig;
 
 
     private final Keyspace keyspace;
@@ -135,7 +137,8 @@ public class EntityCollectionManagerImpl implements 
EntityCollectionManager {
                                         final 
MvccLogEntrySerializationStrategy mvccLogEntrySerializationStrategy,
                                         final Keyspace keyspace, final 
MetricsFactory metricsFactory,
                                         final SerializationFig 
serializationFig, final RxTaskScheduler rxTaskScheduler,
-                                        @Assisted final ApplicationScope 
applicationScope ) {
+                                        @Assisted final ApplicationScope 
applicationScope,
+                                        final CassandraConfig cassandraConfig) 
{
         this.uniqueValueSerializationStrategy = 
uniqueValueSerializationStrategy;
         this.entitySerializationStrategy = entitySerializationStrategy;
         this.uniqueCleanup = uniqueCleanup;
@@ -166,6 +169,8 @@ public class EntityCollectionManagerImpl implements 
EntityCollectionManager {
         this.fieldEntityTimer = 
metricsFactory.getTimer(EntityCollectionManagerImpl.class, "base.fieldEntity");
         this.loadTimer = 
metricsFactory.getTimer(EntityCollectionManagerImpl.class, "base.load");
         this.getLatestTimer = 
metricsFactory.getTimer(EntityCollectionManagerImpl.class, "base.latest");
+
+        this.cassandraConfig = cassandraConfig;
     }
 
 
@@ -333,10 +338,10 @@ public class EntityCollectionManagerImpl implements 
EntityCollectionManager {
                 final UUID startTime = UUIDGenerator.newTimeUUID();
 
                 //Get back set of unique values that correspond to collection 
of fields
-                //Purposely use CL ALL as consistency is extremely important 
here, regardless of performance
+                //Purposely use string consistency as it's extremely important 
here, regardless of performance
                 UniqueValueSet set =
                     uniqueValueSerializationStrategy
-                        .load( applicationScope, ConsistencyLevel.CL_ALL, 
type, fields1 , uniqueIndexRepair);
+                        .load( applicationScope, 
cassandraConfig.getConsistentReadCL(), type, fields1 , uniqueIndexRepair);
 
                 //Short circuit if we don't have any uniqueValues from the 
given fields.
                 if ( !set.iterator().hasNext() ) {

http://git-wip-us.apache.org/repos/asf/usergrid/blob/bd96b181/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
----------------------------------------------------------------------
diff --git 
a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
 
b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
index 01e6621..b36cb79 100644
--- 
a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
+++ 
b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/mvcc/stage/write/WriteUniqueVerify.java
@@ -123,8 +123,8 @@ public class WriteUniqueVerify implements 
Action1<CollectionIoEvent<MvccEntity>>
 
                 // loading will retrieve the oldest unique value entry for the 
field
                 // don't use read repair on this pre-write check
-                // use CL ALL as consistency is extremely important here, more 
so than performance
-                UniqueValueSet set = uniqueValueStrat.load(scope, 
ConsistencyLevel.CL_ALL,
+                // stronger consistency is extremely important here, more so 
than performance
+                UniqueValueSet set = uniqueValueStrat.load(scope, 
cassandraFig.getConsistentReadCL(),
                     written.getEntityId().getType(), 
Collections.singletonList(written.getField()), false);
 
 

Reply via email to