[infinispan-commits] Infinispan SVN: r1346 - in trunk/core/src: test/java/org/infinispan/distribution and 1 other directory.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Jan 6 13:10:00 EST 2010


Author: manik.surtani at jboss.com
Date: 2010-01-06 13:09:59 -0500 (Wed, 06 Jan 2010)
New Revision: 1346

Modified:
   trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
   trunk/core/src/test/java/org/infinispan/distribution/SingleOwnerTest.java
Log:
[ISPN-324] (Cache.clear() raises a NPE if CacheMode is DIST_SYNC and NumOwners is set to 1)

Modified: trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2010-01-06 17:57:26 UTC (rev 1345)
+++ trunk/core/src/main/java/org/infinispan/interceptors/DistributionInterceptor.java	2010-01-06 18:09:59 UTC (rev 1346)
@@ -316,7 +316,8 @@
     * If a single owner has been configured and the target for the key is the local address, it returns true.
     */
    private boolean isSingleOwnerAndLocal(RecipientGenerator recipientGenerator) {
-      return configuration.getNumOwners() == 1 && recipientGenerator.generateRecipients().get(0).equals(rpcManager.getTransport().getAddress());
+      List<Address> recipients;
+      return configuration.getNumOwners() == 1 && (recipients = recipientGenerator.generateRecipients()) != null && recipients.get(0).equals(rpcManager.getTransport().getAddress());
    }
 
    interface KeyGenerator {

Modified: trunk/core/src/test/java/org/infinispan/distribution/SingleOwnerTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/distribution/SingleOwnerTest.java	2010-01-06 17:57:26 UTC (rev 1345)
+++ trunk/core/src/test/java/org/infinispan/distribution/SingleOwnerTest.java	2010-01-06 18:09:59 UTC (rev 1346)
@@ -23,6 +23,13 @@
 package org.infinispan.distribution;
 
 
+import org.infinispan.Cache;
+import org.infinispan.CacheException;
+import org.infinispan.config.Configuration;
+import org.infinispan.remoting.transport.Address;
+import org.infinispan.util.concurrent.IsolationLevel;
+import org.testng.annotations.Test;
+
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
@@ -30,13 +37,6 @@
 import java.util.ArrayList;
 import java.util.concurrent.TimeUnit;
 
-import org.infinispan.Cache;
-import org.infinispan.CacheException;
-import org.infinispan.config.Configuration;
-import org.infinispan.remoting.transport.Address;
-import org.infinispan.util.concurrent.IsolationLevel;
-import org.testng.annotations.Test;
-
 /**
  * Test single owner distributed cache configurations.
  * 
@@ -77,6 +77,13 @@
       ownerCache.put("mykey", new Object());
    }
 
+   public void testClearOnKeyOwner() {
+      Cache[] caches = getOwners("mykey", 1);
+      assert caches.length == 1;
+      Cache ownerCache = caches[0];
+      ownerCache.clear();
+   }
+
    public void testRetrieveNonSerializableKeyFromNonOwner() {
       Cache[] owners = getOwners("yourkey", 1);
       Cache[] nonOwners = getNonOwners("yourkey", 1);



More information about the infinispan-commits mailing list