From 2b59ed047f50ecbce16ede4f87080c079ae475e3 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 12 Apr 2013 14:14:04 +0200 Subject: [PATCH] [#2385] fetchOne() and fetchLazy() don't terminate the ExecuteListener life cycle when an exception occurs --- jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java | 4 ++-- jOOQ/src/main/java/org/jooq/impl/CursorImpl.java | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java index d56d29a70c..ec6a57337a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java @@ -290,8 +290,8 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query, Attacha } finally { - // ResultQuery.fetchLazy() needs to keep open resources - if (!keepResult()) { + // [#2385] Successful fetchLazy() needs to keep open resources + if (!keepResult() || ctx.exception() != null) { Utils.safeClose(listener, ctx, keepStatement()); } diff --git a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java index 7bcd6e429c..d99f9ce6c3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java @@ -1291,8 +1291,9 @@ class CursorImpl implements Cursor { throw ctx.exception(); } - // Conveniently close cursors and underlying objects after the last - // Record was fetched + // [#1868] [#2373] [#2385] This calls through to Utils.safeClose() + // if necessary, lazy-terminating the ExecuteListener lifecycle if + // the result is not eager-fetched. if (record == null) { CursorImpl.this.close(); }