Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.1
-
None
-
None
-
Synapse is acting as a web application inside web container (Tomcat), not tested as stand alone (but may be affected also).
Description
When using synapse as a web application, I noticed that it is unable to stop (stop web application) sucessfully. It leaves many threads running, which prevents web application and Tomcat itself from shutdown. I tracked those threads and found parts of code which "creates them but do not stop them". I created my own patch for those code parts and now application stops correctly. I would be pleased if those changes appears in some future version so I will have no need to hold "my own set of patches synapse and axis 2 classes". Changes to source codes of Synapse 2.1:
- org.apache.synapse.core.axis2.SynapseStartUpServlet:80 (after serverManager.stop():
serverManager.shutdown(); // this must be called also
- org.apache.synapse.transport.nhttp.HttpCoreNIOListener in method stop(), just before the end of try-catch block:
mbeanSupport.unregister();
metrics.destroy();
- org.apache.synapse.endpoints.AbstractEndpoint in method destroy() before "this.initialized = false":
if (metricsMBean != null)
{ metricsMBean.destroy(); metricsMBean = null; }- org.apache.axis2.transport.jms.ServiceTaskManager (I know this belongs to Axis2, but it is the same problem):
- in the method stop() after the initial logging:
if (workerPool != null) {
try
catch (InterruptedException e)
{ log.error("Stopping WorkerPool failed", e); }}
- in the method stop() after "sharedConnection.stop();":
sharedConnection.close();
Thank you