Hi, Roland. I notify that your merge now is visible in GORA_174.
Regards, Alfonso Nishikawa 2013/3/13 Roland von Herget <[email protected]>: > Hi all, > > JFYI: I would have merged it to GORA_174 branch, but the svn mirrors > are out of sync, I can't see my own commit right now. > Will try it again in a few hours. > > --Roland > > On Wed, Mar 13, 2013 at 3:28 PM, <[email protected]> wrote: >> Author: rherget >> Date: Wed Mar 13 14:28:35 2013 >> New Revision: 1455955 >> >> URL: http://svn.apache.org/r1455955 >> Log: >> GORA-211 thread safety: fix java.lang.NullPointerException - synchronize on >> mutator >> >> Modified: >> gora/trunk/CHANGES.txt >> >> gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java >> >> gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java >> >> Modified: gora/trunk/CHANGES.txt >> URL: >> http://svn.apache.org/viewvc/gora/trunk/CHANGES.txt?rev=1455955&r1=1455954&r2=1455955&view=diff >> ============================================================================== >> --- gora/trunk/CHANGES.txt (original) >> +++ gora/trunk/CHANGES.txt Wed Mar 13 14:28:35 2013 >> @@ -6,6 +6,8 @@ Gora Change Log >> >> trunk (current development) >> >> +* GORA-211 thread safety: fix java.lang.NullPointerException - synchronize >> on mutator (rherget) >> + >> * GORA-210 thread safety: fix java.util.ConcurrentModificationException >> (rherget) >> >> * GORA-190 Add "version" switch to bin/gora script (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=1455955&r1=1455954&r2=1455955&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 >> Wed Mar 13 14:28:35 2013 >> @@ -193,7 +193,9 @@ public class CassandraClient<K, T extend >> return; >> } >> >> - HectorUtils.insertColumn(mutator, key, columnFamily, columnName, >> byteBuffer); >> + synchronized(mutator) { >> + HectorUtils.insertColumn(mutator, key, columnFamily, columnName, >> byteBuffer); >> + } >> } >> >> /** >> @@ -214,7 +216,9 @@ public class CassandraClient<K, T extend >> String columnFamily = this.cassandraMapping.getFamily(fieldName); >> String superColumnName = this.cassandraMapping.getColumn(fieldName); >> >> - HectorUtils.insertSubColumn(mutator, key, columnFamily, >> superColumnName, columnName, byteBuffer); >> + synchronized(mutator) { >> + HectorUtils.insertSubColumn(mutator, key, columnFamily, >> superColumnName, columnName, byteBuffer); >> + } >> } >> >> public void addSubColumn(K key, String fieldName, String columnName, >> Object value) { >> @@ -238,7 +242,9 @@ public class CassandraClient<K, T extend >> String columnFamily = this.cassandraMapping.getFamily(fieldName); >> String superColumnName = this.cassandraMapping.getColumn(fieldName); >> >> - HectorUtils.deleteSubColumn(mutator, key, columnFamily, >> superColumnName, columnName); >> + synchronized(mutator) { >> + HectorUtils.deleteSubColumn(mutator, key, columnFamily, >> superColumnName, columnName); >> + } >> } >> >> public void deleteSubColumn(K key, String fieldName, String columnName) { >> >> Modified: >> gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java >> URL: >> http://svn.apache.org/viewvc/gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java?rev=1455955&r1=1455954&r2=1455955&view=diff >> ============================================================================== >> --- >> gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java >> (original) >> +++ >> gora/trunk/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java >> Wed Mar 13 14:28:35 2013 >> @@ -35,6 +35,11 @@ import org.apache.gora.persistency.Persi >> import org.slf4j.Logger; >> import org.slf4j.LoggerFactory; >> >> +/** >> + * This class it not thread safe. >> + * According to Hector's JavaDoc a Mutator isn't thread safe, too. >> + * Take a look at {@CassandraClient} for safe usage. >> + */ >> public class HectorUtils<K,T extends Persistent> { >> >> public static final Logger LOG = >> LoggerFactory.getLogger(HectorUtils.class); >> >> -- "Drinking bloody marys all night will make you feel like a corpse in the morning."

