[ 
https://issues.apache.org/jira/browse/GERONIMODEVTOOLS-178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521536
 ] 

Shiva Kumar H R commented on GERONIMODEVTOOLS-178:
--------------------------------------------------

Bug 200715 in WTP (https://bugs.eclipse.org/bugs/show_bug.cgi?id=200715) has 
been raised for this.

> Deadlock! while stopping Geronimo server from within Eclipse
> ------------------------------------------------------------
>
>                 Key: GERONIMODEVTOOLS-178
>                 URL: 
> https://issues.apache.org/jira/browse/GERONIMODEVTOOLS-178
>             Project: Geronimo-Devtools
>          Issue Type: Bug
>          Components: eclipse-plugin
>    Affects Versions: 1.2.0, 1.2.1, 2.0
>            Reporter: Shiva Kumar H R
>            Assignee: Donald Woods
>             Fix For: 2.0
>
>         Attachments: deadlockFix.patch, TestDeadlock.war
>
>
> An interesting deadlock scenario! 
> Here are the steps to reproduce:
> 1. From within Eclipse start Geronimo server (say 2.0)
> 2. Deploy attached WAR
> 3. Access deployed servlet with url "http://localhost:8080/TestDeadlock/Test";
> 4. From within Eclipse invoke "Stop" server
> You will see that Stop never returns and Eclipse freezes to respond.
> 5. Manually kill server process and Eclipse will resume.
> Here is what is happening:
> 1. When user invokes "Stop" on Geronimo server from within Eclipse, Geronimo 
> Eclipse Plug-in invokes stopKernel() in the main Eclipse thread itself. 
> (org.apache.geronimo.st.core.GeronimoServerBehaviourDelegate.java::stop())
> 2. Server receives the shutdown call, and invokes the deployed WAR's 
> "servlet.destroy" method, which in turn opens a big text file and starts 
> printing the contents to standard output.
> 3. All the output buffers overflow because the main thread is the one that 
> should push them to the console view at the end but it is blocked.
> 4. All the print operations on the server side are blocked waiting for 
> somebody to read the output buffer. The shutdown call will never return.
> 5. The main Eclipse thread will never print the messages because it waits for 
> the shutdown call to return.
> Here is one solution thought of:
> The Geronimo Eclipse plug-in should make the shutdown call in a worker thread 
> not in the main Eclipse thread. In this case the main thread will be able to 
> display all the messages triggered by the shutdown call and everything will 
> work just fine. Attached patch implements this.
> Please see this also:
> http://www.eclipse.org/webtools/wst/api/org/eclipse/wst/server/core/model/ServerBehaviourDelegate.html#stop(boolean)
> It recommends that the plug-in should return from the 
> "ServerBehaviourDelegate.stop()" method quickly and use the server listener 
> to notify shutdown progress.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to