Bamboo fails to start with "More than one fragment with the name [spring_web] was found" after upgrade with Windows installer
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
After attempting to upgrade Bamboo using the Windows installer, the process tops and nothing is written to the $BAMBOO_HOME\logs\atlassian-bamboo.log
file. An error: "More than one fragment with the name [spring_web] was found."
is logged to the $BAMBOO_INSTALL\logs\catalina*
files
Environment
- Windows using the installer MSI
Diagnosis
Inspecting the $BAMBOO_INSTALL\logs\catalina*
files show the below error:
03-Jan-2022 15:13:48.761 SEVERE [Catalina-startStop-1] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
...
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
... 6 more
Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.
at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2203)
..
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 6 more
Cause
When executing a rolling upgrade of Bamboo using the windows installer to the same installation folder as the previous installation, old files can fail to be cleaned up causing duplicate libraries of different versions to be present on the classpath.
Solution
This method involves removing all Bamboo installation files related files from $BAMBOO_INSTALL
and starting from a fresh directory. If you are unclear on the difference between your Bamboo install and Bamboo home directory, it may be beneficial to read the documentation as it's very important that the Bamboo home directory is not removed:
- Please ensure you backup any configuration files within the installation folder such as
$BAMBOO_INSTALL\conf\server.xml
or$BAMBOO_INSTALL\bin\setenv.bat
that may have customizations applied. - Uninstall the Bamboo installation files/binaries.
- Be sure to keep your
$BAMBOO_HOME
directory as it contains state / your data which is needed for an upgrade.
- Be sure to keep your
- Ensure there are no binary files left within
$BAMBOO_INSTALL
- Reinstall Bamboo binaries using the installer.
Alternatively, you could reinstall to a completely separate directory rather than re-using the old one.