Bamboo upgrade fails with "FileAlreadyExistsException" for bamboo-mail.cfg.xml
Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. 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
While upgrading Bamboo to version 8 or newer, the startup fails and shows "Bamboo bootstrap failed: Failed to run pre-bootstrap upgrade tasks". Upon checking the <bamboo-home>/logs/atlassian-bamboo.log
file, the following error is present:
1
java.nio.file.FileAlreadyExistsException: <bamboo-home>/bamboo/shared/configuration/bamboo-mail.cfg.xml
Environment
Observed while upgrading Bamboo 7.x or older to any 8.x version or newer.
Diagnosis
The following error messages can be found in the <bamboo-home>/logs/atlassian-bamboo.log
file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2022-06-25 11:40:34,110 ERROR [localhost-startStop-1] [AbstractUpgradeManager] java.nio.file.FileAlreadyExistsException: <bamboo-home>/bamboo/shared/configuration/bamboo-mail.cfg.xml
java.nio.file.FileAlreadyExistsException: <bamboo-home>/bamboo/shared/configuration/bamboo-mail.cfg.xml
at sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:429) ~[?:1.8.0_292]
at sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:262) ~[?:1.8.0_292]
at java.nio.file.Files.move(Files.java:1395) ~[?:1.8.0_292]
at com.atlassian.bamboo.upgrade.tasks.v8_0.UpgradeTask70302ReorganiseHomeDirectory.doUpgrade(UpgradeTask70302ReorganiseHomeDirectory.java:53) ~[atlassian-bamboo-web-9.0.1.jar:?]
at com.atlassian.bamboo.upgrade.AbstractUpgradeManager.runUpgradeTask(AbstractUpgradeManager.java:230) ~[atlassian-bamboo-upgrader-9.0.1.jar:?]
at com.atlassian.bamboo.upgrade.BootstrapUpgradeManagerImpl.doUpgrade(BootstrapUpgradeManagerImpl.java:75) ~[atlassian-bamboo-upgrader-9.0.1.jar:?]
at com.atlassian.bamboo.setup.DefaultBootstrapManager.performPersistenceUpgrade(DefaultBootstrapManager.java:385) ~[atlassian-bamboo-web-9.0.1.jar:?]
at com.atlassian.config.bootstrap.DefaultAtlassianBootstrapManager.init(DefaultAtlassianBootstrapManager.java:74) ~[atlassian-config-1.1.3.jar:?]
[...]
2022-11-10 15:03:54,678 FATAL [main] [DefaultBootstrapManager] Pre-bootstrap upgrade tasks failed
com.atlassian.upgrade.UpgradeException: Pre-bootstrap upgrade tasks failed: [Task for build 70302 failed with exception: <bamboo-home>/shared/configuration/bamboo-mail.cfg.xml]
at com.atlassian.bamboo.setup.DefaultBootstrapManager.performPersistenceUpgrade(DefaultBootstrapManager.java:387) ~[atlassian-bamboo-web-9.0.1.jar:?]
[...]
Cause
Bamboo version 8 introduced changes to the home directory structure to accommodate the Data Center needs, and there are upgrade tasks that perform these migrations and adjustments. One of the upgrade tasks moves the bamboo-mail.cfg.xml file, which contains Bamboo's mail configuration, from the legacy location into the new folder structure.
This error can happen if, somehow, the file already exists in the new location. This could happen from a failed previous upgrade attempt that wasn't fully rolled back, or if that file was manually added to the new location.
Solution
Compare the two bamboo-mail.cfg.xml files to determine which one is valid:
<bamboo-home>/shared/configuration/bamboo-mail.cfg.xml
<bamboo-home>/bamboo-mail.cfg.xml
If they are thesame, move
<bamboo-home>/shared/configuration/bamboo-mail.cfg.xml
out to a temporary directory.If they are not the same, determine which one contains valid content (according to your Mail configuration) and move it to
<bamboo-home>
, leaving the<bamboo-home>/shared/configuration/
without anybamboo-mail.cfg.xml
file.Restart Bamboo.
Was this helpful?