From f73fffd8a806fb28d3ee548422d3064055aaf870 Mon Sep 17 00:00:00 2001 From: Eduardo Macarron Date: Fri, 2 May 2014 23:20:24 +0200 Subject: [PATCH] Related to #116. Make sure that the cache is updated (even with null) so that BlockingCache works when an exception is thrown when running the statement. --- .../java/org/apache/ibatis/executor/CachingExecutor.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/ibatis/executor/CachingExecutor.java b/src/main/java/org/apache/ibatis/executor/CachingExecutor.java index fb6e4e35cc7..e6a6875f0de 100644 --- a/src/main/java/org/apache/ibatis/executor/CachingExecutor.java +++ b/src/main/java/org/apache/ibatis/executor/CachingExecutor.java @@ -87,8 +87,11 @@ public List query(MappedStatement ms, Object parameterObject, RowBounds r @SuppressWarnings("unchecked") List list = (List) tcm.getObject(cache, key); if (list == null) { - list = delegate. query(ms, parameterObject, rowBounds, resultHandler, key, boundSql); - tcm.putObject(cache, key, list); // issue #578. Query must be not synchronized to prevent deadlocks + try { + list = delegate. query(ms, parameterObject, rowBounds, resultHandler, key, boundSql); + } finally { + tcm.putObject(cache, key, list); // issue #578 and #116 + } } return list; }