From 7a909fcfead9b6165062ae2a6f2b314fef6bf5b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 23 May 2011 13:47:11 +0200 Subject: [PATCH] Fix leak Make thread local static to avoid keep alive the GanttDiagramGraph from the thread local set in the thread. FEA: ItEr74S08DeployFramework --- .../ganttz/util/PreAndPostNotReentrantActionsWrapper.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java index 7e8c49c92..8e01b4f38 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java @@ -27,12 +27,14 @@ import org.apache.commons.lang.Validate; */ public abstract class PreAndPostNotReentrantActionsWrapper { - private final ThreadLocal inside = new ThreadLocal() { + private static final class BooleanThreadLocal extends ThreadLocal { @Override protected Boolean initialValue() { return false; } - }; + } + + private final ThreadLocal inside = new BooleanThreadLocal(); public void doAction(IAction action) { Validate.notNull(action); @@ -49,7 +51,7 @@ public abstract class PreAndPostNotReentrantActionsWrapper { try { action.doAction(); } finally { - inside.set(false); + inside.remove(); postAction(); } }