Fail to upgrade due to java.lang.StackOverflowError
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
Problem
When upgrading from earlier than Bamboo 5.14.0, the upgrade task 51408 fail due to java.lang.StackOverflowError
The following appears in the atlassian-bamboo.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2017-05-15 05:51:37,330 INFO [16-UpgradeTaskBackgroundThread:pool-32-thread-1] [AbstractUpgradeManager] -------------------------------------------------------------------------------------
2017-05-15 05:51:37,331 INFO [16-UpgradeTaskBackgroundThread:pool-32-thread-1] [AbstractUpgradeManager] 51408 : Move branch detection configuration from build configuration (post-bootstrap)
2017-05-15 05:51:37,331 INFO [16-UpgradeTaskBackgroundThread:pool-32-thread-1] [AbstractUpgradeManager] -------------------------------------------------------------------------------------
2017-05-15 05:51:59,702 FATAL [localhost-startStop-1] [UpgradeLauncher] Failed to upgrade Bamboo
java.util.concurrent.ExecutionException: java.lang.StackOverflowError
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at com.atlassian.bamboo.upgrade.UpgradeLauncher.upgradeAndStartBamboo(UpgradeLauncher.java:116)
at com.atlassian.bamboo.upgrade.UpgradeLauncher.contextInitialized(UpgradeLauncher.java:44)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.StackOverflowError
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.exists(File.java:819)
at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1245)
at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:1212)
at sun.misc.URLClassPath.findResource(URLClassPath.java:188)
at java.net.URLClassLoader$2.run(URLClassLoader.java:569)
at java.net.URLClassLoader$2.run(URLClassLoader.java:567)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:566)
at java.lang.ClassLoader.getResource(ClassLoader.java:1093)
at java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:232)
at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1137)
at org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
at org.apache.commons.configuration.XMLConfiguration.createDocumentBuilder(XMLConfiguration.java:561)
at org.apache.commons.configuration.XMLConfiguration.load(XMLConfiguration.java:664)
at org.apache.commons.configuration.XMLConfiguration.load(XMLConfiguration.java:646)
at com.atlassian.bamboo.utils.ConfigUtils.getXmlConfigFromXmlString(ConfigUtils.java:277)
at com.atlassian.bamboo.utils.ConfigUtils.getXmlConfigFromXmlString(ConfigUtils.java:260)
at com.atlassian.bamboo.utils.ConfigUtils.asXmlString(ConfigUtils.java:253)
at com.atlassian.bamboo.repository.RepositoryDefinitionManagerImpl.decrypt(RepositoryDefinitionManagerImpl.java:398)
at com.atlassian.bamboo.repository.RepositoryDefinitionManagerImpl.entityToUnmergedData(RepositoryDefinitionManagerImpl.java:169)
Diagnosis
Check if the following SQL query return any result:
1
2
3
4
5
6
SELECT * FROM BUILD
JOIN PLAN_VCS_LOCATION ON BUILD_ID=PLAN_ID
WHERE BUILD_TYPE="CHAIN_BRANCH"
AND VCS_LOCATION_ID IN (SELECT VCS_LOCATION_ID FROM BUILD
JOIN PLAN_VCS_LOCATION ON BUILD_ID=PLAN_ID
WHERE BUILD_TYPE="CHAIN");
Cause
The Branch plan is somehow using the same VCS_LOCATION_ID
as the Master plan.
Solution
Resolution
Rollback Bamboo Home and database to the previous state before the upgrade
Start Bamboo in the previous version
Navigate to
Plan Configuration > Branches (left panel) > <branch_name> > Source repository
Uncheck the option “Override the plan's default repository”
Save the setting
This will delete the problematic data in the database
Check the option again
Make sure that the “Branch” field is correct
It is fine if the branch name is the same as the master plan
Save the setting
This will generate a new repository ID instead of using the same repository ID as the master plan in the database
Perform the upgrade again
Was this helpful?