From 8ad375ff605c358b4313e5f0eef98568c8f1b941 Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Thu, 8 Mar 2007 10:58:41 +0000 Subject: [PATCH] on close() don't storeState in synchronized block - as it can lead to a deadlock git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@516007 13f79535-47bb-0310-9956-ffa450edef68 --- .../kaha/impl/async/AsyncDataManager.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/AsyncDataManager.java b/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/AsyncDataManager.java index 361105ef7a..eccc0da032 100644 --- a/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/AsyncDataManager.java +++ b/activemq-core/src/main/java/org/apache/activemq/kaha/impl/async/AsyncDataManager.java @@ -265,18 +265,20 @@ public final class AsyncDataManager { return (DataFile) dataFile.getNext(); } - public synchronized void close() throws IOException{ - if( !started ) { - return; - } - Scheduler.cancel(cleanupTask); - accessorPool.close(); - storeState(false); - appender.close(); + public void close() throws IOException{ + synchronized(this){ + if(!started){ + return; + } + Scheduler.cancel(cleanupTask); + accessorPool.close(); + } + storeState(false); + appender.close(); fileMap.clear(); - controlFile.unlock(); - controlFile.dispose(); - started=false; + controlFile.unlock(); + controlFile.dispose(); + started=false; } private synchronized void cleanup() {