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