Author: kkolinko Date: Thu Jul 17 23:13:05 2014 New Revision: 1611509 URL: http://svn.apache.org/r1611509 Log: Fix http://issues.apache.org/bugzilla/show_bug.cgi?id=56724 Write an error message to Tomcat logs if container background thread exits unexpectedly. It is backport of r1611506 from tomcat/trunk.
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ContainerBase.java tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1611506 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ContainerBase.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ContainerBase.java?rev=1611509&r1=1611508&r2=1611509&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ContainerBase.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ContainerBase.java Thu Jul 17 23:13:05 2014 @@ -1503,20 +1503,37 @@ public abstract class ContainerBase exte @Override public void run() { - while (!threadDone) { - try { - Thread.sleep(backgroundProcessorDelay * 1000L); - } catch (InterruptedException e) { - // Ignore + Throwable t = null; + String unexpectedDeathMessage = sm.getString( + "containerBase.backgroundProcess.unexpectedThreadDeath", + Thread.currentThread().getName()); + try { + while (!threadDone) { + try { + Thread.sleep(backgroundProcessorDelay * 1000L); + } catch (InterruptedException e) { + // Ignore + } + if (!threadDone) { + Container parent = (Container) getMappingObject(); + ClassLoader cl = + Thread.currentThread().getContextClassLoader(); + if (parent.getLoader() != null) { + cl = parent.getLoader().getClassLoader(); + } + processChildren(parent, cl); + } } + } catch (RuntimeException e) { + t = e; + throw e; + } catch (Error e) { + t = e; + throw e; + } finally { + thread = null; if (!threadDone) { - Container parent = (Container) getMappingObject(); - ClassLoader cl = - Thread.currentThread().getContextClassLoader(); - if (parent.getLoader() != null) { - cl = parent.getLoader().getClassLoader(); - } - processChildren(parent, cl); + log.error(unexpectedDeathMessage, t); } } } Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1611509&r1=1611508&r2=1611509&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties Thu Jul 17 23:13:05 2014 @@ -88,6 +88,7 @@ containerBase.backgroundProcess.loader=E containerBase.backgroundProcess.manager=Exception processing manager {0} background process containerBase.backgroundProcess.realm=Exception processing realm {0} background process containerBase.backgroundProcess.valve=Exception processing valve {0} background process +containerBase.backgroundProcess.unexpectedThreadDeath=Unexpected death of background thread {0} defaultInstanceManager.invalidInjection=Invalid method resource injection annotation fastEngineMapper.alreadyStarted=FastEngineMapper {0} has already been started fastEngineMapper.notStarted=FastEngineMapper {0} has not yet been started Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1611509&r1=1611508&r2=1611509&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Thu Jul 17 23:13:05 2014 @@ -172,6 +172,10 @@ <code>MapperListener</code> during repeated starts of embedded Tomcat. (kkolinko) </fix> + <add> + <bug>56724</bug>: Write an error message to Tomcat logs if container + background thread is aborted unexpectedly. (kkolinko) + </add> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org