Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 97135 invoked from network); 27 Jul 2007 14:53:54 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 27 Jul 2007 14:53:54 -0000 Received: (qmail 54290 invoked by uid 500); 27 Jul 2007 14:53:54 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 54257 invoked by uid 500); 27 Jul 2007 14:53:54 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 54246 invoked by uid 99); 27 Jul 2007 14:53:54 -0000 Received: from Unknown (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Jul 2007 07:53:54 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Jul 2007 14:53:50 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B31F11A981A; Fri, 27 Jul 2007 07:53:30 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r560256 - /geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java Date: Fri, 27 Jul 2007 14:53:30 -0000 To: scm@geronimo.apache.org From: dwoods@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070727145330.B31F11A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dwoods Date: Fri Jul 27 07:53:29 2007 New Revision: 560256 URL: http://svn.apache.org/viewvc?view=rev&rev=560256 Log: GERONIMODEVTOOLS-178 Deadlock while stopping Geronimo server from within Eclipse. Patch from Shiva. Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java?view=diff&rev=560256&r1=560255&r2=560256 ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java (original) +++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoServerBehaviourDelegate.java Fri Jul 27 07:53:29 2007 @@ -168,26 +168,30 @@ * * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#stop(boolean) */ - synchronized public void stop(boolean force) { - Trace.trace(Trace.INFO, "--> stop()"); - stopPingThread(); - if (getServer().getServerState() != IServer.STATE_STOPPED) { - setServerState(IServer.STATE_STOPPING); - stopKernel(); - } - GeronimoConnectionFactory.getInstance().destroy(getServer()); - if (force) { - terminate(); - return; - } - int state = getServer().getServerState(); - if (state == IServer.STATE_STOPPED) - return; - if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) - terminate(); - Trace.trace(Trace.INFO, "<-- stop()"); - } - + synchronized public void stop(final boolean force) { + new Thread() { + public void run() { + Trace.trace(Trace.INFO, "--> stop()"); + stopPingThread(); + if (getServer().getServerState() != IServer.STATE_STOPPED) { + setServerState(IServer.STATE_STOPPING); + stopKernel(); + } + GeronimoConnectionFactory.getInstance().destroy(getServer()); + if (force) { + terminate(); + return; + } + int state = getServer().getServerState(); + if (state == IServer.STATE_STOPPED) + return; + if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) + terminate(); + Trace.trace(Trace.INFO, "<-- stop()"); + } + }.start(); + } + /* * Override this method to be able to process in-place shared lib entries and restart the shared lib configuration for all projects prior * to publishing each IModule.