You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by rh...@apache.org on 2013/03/13 15:28:35 UTC

svn commit: r1455955 - in /gora/trunk: CHANGES.txt gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java

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



Re: svn commit: r1455955 - in /gora/trunk: CHANGES.txt gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java

Posted by Alfonso Nishikawa <al...@gmail.com>.
Hi, Roland.

I notify that your merge now is visible in  GORA_174.

Regards,

Alfonso Nishikawa

2013/3/13 Roland von Herget <rh...@apache.org>:
> 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,  <rh...@apache.org> 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."

Re: svn commit: r1455955 - in /gora/trunk: CHANGES.txt gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java gora-cassandra/src/main/java/org/apache/gora/cassandra/store/HectorUtils.java

Posted by Roland von Herget <rh...@apache.org>.
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,  <rh...@apache.org> 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);
>
>