From ba4e9a9def24f7a660e1b9b250bff08ceb884cd1 Mon Sep 17 00:00:00 2001 From: Jan Boehm Date: Fri, 19 Oct 2012 10:08:52 +0200 Subject: [PATCH] - ISPN-2426: Set looked up key in InvocationContext on putIfAbsent with PUT_FOR_EXTERNAL_READ --- core/src/main/java/org/infinispan/container/EntryFactoryImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java b/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java index 70249c4..36ab6cb 100644 --- a/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java +++ b/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java @@ -154,8 +154,11 @@ public final MVCCEntry wrapEntryForPut(InvocationContext ctx, Object key, Intern } else { InternalCacheEntry ice = (icEntry == null ? getFromContainer(key) : icEntry); // A putForExternalRead is putIfAbsent, so if key present, do nothing - if (ice != null && ctx.hasFlag(Flag.PUT_FOR_EXTERNAL_READ)) + if (ice != null && ctx.hasFlag(Flag.PUT_FOR_EXTERNAL_READ)) { + // make sure we record this! Null value since this is a forced lock on the key + ctx.putLookedUpEntry(key, null); return null; + } mvccEntry = ice != null ? wrapInternalCacheEntryForPut(ctx, key, ice) : -- 1.7.11.msysgit.1