CAMEL-8758: Fix to Camel Cache producer to avoid NPE in race condition
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1199d040 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1199d040 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1199d040 Branch: refs/heads/camel-2.14.x Commit: 1199d04004311d9701911412c78128ff2059033f Parents: 46b571b Author: Andrew Block <andy.bl...@gmail.com> Authored: Sat May 9 13:02:56 2015 -0500 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun May 10 09:13:50 2015 +0200 ---------------------------------------------------------------------- .../java/org/apache/camel/component/cache/CacheProducer.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1199d040/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java b/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java index 05d168c..95872c3 100755 --- a/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java +++ b/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java @@ -93,9 +93,10 @@ public class CacheProducer extends DefaultProducer { cache.remove(key); } else if (checkIsEqual(operation, CacheConstants.CACHE_OPERATION_URL_GET)) { LOG.debug("Quering an element with key {} from the Cache", key); - if (cache.get(key) != null) { + Element element = cache.get(key); + if (element != null) { exchange.getIn().setHeader(CacheConstants.CACHE_ELEMENT_WAS_FOUND, true); - exchange.getIn().setBody(cache.get(key).getObjectValue()); + exchange.getIn().setBody(element.getObjectValue()); } else { exchange.getIn().removeHeader(CacheConstants.CACHE_ELEMENT_WAS_FOUND); }