--- java/org/apache/catalina/core/ContainerBase.java (revision 1743100) +++ java/org/apache/catalina/core/ContainerBase.java (working copy) @@ -810,12 +810,6 @@ return; } - synchronized(children) { - if (children.get(child.getName()) == null) - return; - children.remove(child.getName()); - } - try { if (child.getState().isAvailable()) { child.stop(); @@ -824,8 +818,6 @@ log.error("ContainerBase.removeChild: stop: ", e); } - fireContainerEvent(REMOVE_CHILD_EVENT, child); - try { // child.destroy() may have already been called which would have // triggered this call. If that is the case, no need to destroy the @@ -837,6 +829,13 @@ log.error("ContainerBase.removeChild: destroy: ", e); } + synchronized(children) { + if (children.get(child.getName()) == null) + return; + children.remove(child.getName()); + } + + fireContainerEvent(REMOVE_CHILD_EVENT, child); }