[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