Bug 50358

Summary: Embedded.stopInternal sets state to STARTING, should be STOPPING
Product: Tomcat 7 Reporter: Martin Grotzke <martin.grotzke>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Severity: normal    
Priority: P2    
Version: 7.0.4   
Target Milestone: ---   
Hardware: PC   
OS: Linux   

Description Martin Grotzke 2010-11-28 18:13:10 UTC
Embedded.stopInternal invokes setState(LifecycleState.STARTING), this should be changed to setState(LifecycleState.STOPPING).

Setting LifecycleState.STARTING during stopInternal leads to a LifecycleException when the Embedded is shut down:
LifecycleException:  An invalid Lifecycle transition was attempted ([after_stop]) for component [StandardService[null]] in state [STARTING]
	at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:321)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)
	at de.javakaffee.web.msm.MemcachedSessionManagerIntegrationTest.tearDown(MemcachedSessionManagerIntegrationTest.java:112)

This failure leads to failing tests in my case.

I'm using the (deprecated) Embedded for integration testing the memcached-session-manager (http://code.google.com/p/memcached-session-manager/).
I'm just working on a tomcat7 branch, which shall diverge as little as possible from the master/trunk, therefore I'm still using Embedded instead of the newly introduced Tomcat.
Comment 1 Mark Thomas 2010-11-29 08:42:42 UTC
Thanks for the report. This has been fixed in 7.0.x and will be included in 7.0.6 onwards.