Hi Costin,

I was getting ready to ask about ContextManager getting stuck
during shutdown.  This patch keeps it from getting stuck, but
if the context was in "STATE_READY", then "shutdownContext( context )"
is called which sets the state to "STATE_DISABLED" causing
removeContext() to exit early.  The interceptor's removeContext()
methods won't be called.  

While pondering a fix for this, I was also pondering what should
happen if an interceptor throws an exceptions during context
removal.  Currently, an exception would get handled outside
of ContextManger and potentially leave a context in an inconsistent
state.  Should interceptor exceptions be caught, logged, then
ignored by ContextManager so shutdown can proceed without being
aborted?

Also, it seems to me that a Tomcat shutdown will remove the contexts
out from under any requests that are currently using it.  Am I
missing something?  If not, should we try to add, or at least
provide for, an "orderly" shutdown in addition to the "forced"
shutdown we seem to currently have?

Cheers,
Larry





> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Friday, December 01, 2000 12:43 PM
> To: [EMAIL PROTECTED]
> Subject: cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/core
> ContextManager.java
> 
> 
> costin      00/12/01 09:42:52
> 
>   Modified:    src/share/org/apache/tomcat/core ContextManager.java
>   Log:
>   Fixed small bug that prevented normal shutdown.
>   
>   Revision  Changes    Path
>   1.152     +2 -1      
> jakarta-tomcat/src/share/org/apache/tomcat/core/ContextManager.java
>   
>   Index: ContextManager.java
>   ===================================================================
>   RCS file: 
> /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Cont
> extManager.java,v
>   retrieving revision 1.151
>   retrieving revision 1.152
>   diff -u -r1.151 -r1.152
>   --- ContextManager.java     2000/11/30 06:17:12     1.151
>   +++ ContextManager.java     2000/12/01 17:42:51     1.152
>   @@ -494,6 +494,8 @@
>       if( context.getState() == Context.STATE_READY )
>           shutdownContext( context );
>    
>   +   contextsV.removeElement(context);
>   +
>       if( context.getState() == Context.STATE_DISABLED )
>           return;
>       
>   @@ -505,7 +507,6 @@
>           cI[i].removeContext( this, context );
>       }
>    
>   -   contextsV.removeElement(context);
>        }
>    
>    
>   
>   
>   
> 

Reply via email to