Author: lewismc
Date: Mon Feb 13 13:30:20 2012
New Revision: 1243500

URL: http://svn.apache.org/viewvc?rev=1243500&view=rev
Log:
commit to address GORA-80 & update to CHANGES.txt

Modified:
    gora/trunk/CHANGES.txt
    
gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java

Modified: gora/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/gora/trunk/CHANGES.txt?rev=1243500&r1=1243499&r2=1243500&view=diff
==============================================================================
--- gora/trunk/CHANGES.txt (original)
+++ gora/trunk/CHANGES.txt Mon Feb 13 13:30:20 2012
@@ -2,6 +2,9 @@ Gora Change Log
 
 Trunk (unreleased changes):
 
+* GORA-80 Implement functionality to define consistency used for Cassandra 
read and 
+write operations. (lewismc)
+
 * GORA-91 Ensure that Gora adheres to ASF branding requirements (lewismc)
 
 * GORA-90 Create DOAP for Gora (lewismc)

Modified: 
gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
URL: 
http://svn.apache.org/viewvc/gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java?rev=1243500&r1=1243499&r2=1243500&view=diff
==============================================================================
--- 
gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
 (original)
+++ 
gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
 Mon Feb 13 13:30:20 2012
@@ -40,6 +40,8 @@ import me.prettyprint.hector.api.mutatio
 import me.prettyprint.hector.api.query.QueryResult;
 import me.prettyprint.hector.api.query.RangeSlicesQuery;
 import me.prettyprint.hector.api.query.RangeSuperSlicesQuery;
+import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel;
+import me.prettyprint.hector.api.HConsistencyLevel;
 
 import org.apache.gora.cassandra.query.CassandraQuery;
 import org.apache.gora.mapreduce.GoraRecordReader;
@@ -75,6 +77,10 @@ public class CassandraClient<K, T extend
   
   /**
    * Check if keyspace already exists. If not, create it.
+   * In this method, we also utilise Hector's {@ConfigurableConsistencyLevel}
+   * logic. It is set by passing a ConfigurableConsistencyLevel object right 
+   * when the Keyspace is created. Currently consistency level is .ONE which 
+   * permits consistency to wait until one replica has responded. 
    */
   public void checkKeyspace() {
     // "describe keyspace <keyspaceName>;" query
@@ -85,6 +91,20 @@ public class CassandraClient<K, T extend
       this.cluster.addKeyspace(keyspaceDefinition, true);
       LOG.info("Keyspace '" + this.cassandraMapping.getKeyspaceName() + "' in 
cluster '" + this.cassandraMapping.getClusterName() + "' was created on host '" 
+ this.cassandraMapping.getHostName() + "'");
       
+      // Create a customized Consistency Level
+      ConfigurableConsistencyLevel configurableConsistencyLevel = new 
ConfigurableConsistencyLevel();
+      Map<String, HConsistencyLevel> clmap = new HashMap<String, 
HConsistencyLevel>();
+
+      // Define CL.ONE for ColumnFamily "ColumnFamily"
+      clmap.put("ColumnFamily", HConsistencyLevel.ONE);
+
+      // In this we use CL.ONE for read and writes. But you can use different 
CLs if needed.
+      configurableConsistencyLevel.setReadCfConsistencyLevels(clmap);
+      configurableConsistencyLevel.setWriteCfConsistencyLevels(clmap);
+
+      // Then let the keyspace know
+      HFactory.createKeyspace("Keyspace", this.cluster, 
configurableConsistencyLevel);
+
       keyspaceDefinition = null;
     }
     


Reply via email to