[infinispan-commits] Infinispan SVN: r1310 - in trunk: query/src/main/java/org/infinispan/query/backend and 1 other directory.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Thu Dec 17 20:11:06 EST 2009
Author: manik.surtani at jboss.com
Date: 2009-12-17 20:11:06 -0500 (Thu, 17 Dec 2009)
New Revision: 1310
Modified:
trunk/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java
trunk/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java
Log:
[ISPN-296] NPE when removing a nonexistent key and querying is enabled
Modified: trunk/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java 2009-12-17 23:00:17 UTC (rev 1309)
+++ trunk/core/src/main/java/org/infinispan/commands/write/RemoveCommand.java 2009-12-18 01:11:06 UTC (rev 1310)
@@ -44,6 +44,7 @@
public static final byte COMMAND_ID = 10;
protected CacheNotifier notifier;
boolean successful = true;
+ boolean nonExistent = false;
/**
* When not null, value indicates that the entry should only be removed if the key is mapped to this value. By the
@@ -72,9 +73,9 @@
public Object perform(InvocationContext ctx) throws Throwable {
MVCCEntry e = (MVCCEntry) ctx.lookupEntry(key);
if (e == null || e.isNull()) {
+ nonExistent = true;
log.trace("Nothing to remove since the entry is null or we have a null entry");
if (value == null) {
- successful = false;
return null;
} else {
successful = false;
@@ -134,4 +135,8 @@
public boolean isConditional() {
return value != null;
}
+
+ public boolean isNonExistent() {
+ return nonExistent;
+ }
}
Modified: trunk/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java
===================================================================
--- trunk/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java 2009-12-17 23:00:17 UTC (rev 1309)
+++ trunk/query/src/main/java/org/infinispan/query/backend/QueryInterceptor.java 2009-12-18 01:11:06 UTC (rev 1310)
@@ -65,7 +65,7 @@
// remove the object out of the cache first.
Object valueRemoved = invokeNextInterceptor(ctx, command);
- if (command.isSuccessful() && shouldModifyIndexes(ctx))
+ if (command.isSuccessful() && !command.isNonExistent() && shouldModifyIndexes(ctx))
removeFromIndexes(extractValue(valueRemoved), extractValue(command.getKey()));
return valueRemoved;
More information about the infinispan-commits
mailing list