Bamboo fails to start
Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.
Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles 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
Symptoms
Bamboo fails to start and cannot find the database; on the UI it might show the setup wizard; logs look like:
...
2012-05-18 17:06:48,619 INFO [main] [PListStore] PListStore:/usr/bamboo-home/jms-store/bamboo/tmp_storage started
2012-05-18 17:06:48,622 INFO [main] [BrokerService] Using Persistence Adapter: KahaDBPersistenceAdapter[/usr/bamboo-home/jms-store/bamboo/KahaDB]
2012-05-18 17:06:48,687 ERROR [main] [BrokerService] Failed to start ActiveMQ JMS Message Broker. Reason: java.io.FileNotFoundException: /usr/bamboo-home/jms-store/bamboo/KahaDB/db-7617.log (Permission denied)
java.io.FileNotFoundException: /usr/bamboo-home/jms-store/bamboo/KahaDB/db-7617.log (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
at org.apache.kahadb.journal.DataFile.openRandomAccessFile(DataFile.java:70)
at org.apache.kahadb.journal.DataFileAccessor.<init>(DataFileAccessor.java:49)
at org.apache.kahadb.journal.DataFileAccessorPool$Pool.openDataFileReader(DataFileAccessorPool.java:53)
at org.apache.kahadb.journal.DataFileAccessorPool.openDataFileAccessor(DataFileAccessorPool.java:139)
at org.apache.kahadb.journal.Journal.recoveryCheck(Journal.java:202)
at org.apache.kahadb.journal.Journal.start(Journal.java:174)
at org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:348)
...
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at com.atlassian.bamboo.server.Server.main(Server.java:77)
2012-05-18 17:06:48,690 INFO [main] [BrokerService] ActiveMQ Message Broker (bamboo, null) is shutting down
2012-05-18 17:06:48,699 INFO [main] [PListStore] PListStore:/usr/bamboo-home/jms-store/bamboo/tmp_storage stopped
2012-05-18 17:06:48,716 INFO [main] [KahaDBStore] Stopping async queue tasks
2012-05-18 17:06:48,716 INFO [main] [KahaDBStore] Stopping async topic tasks
2012-05-18 17:06:48,716 INFO [main] [KahaDBStore] Stopped KahaDB
2012-05-18 17:06:48,726 INFO [main] [BrokerService] ActiveMQ JMS Message Broker (bamboo, null) stopped
2012-05-18 17:06:48,727 INFO [main] [ConfigurableLocalSessionFactoryBean] Closing Hibernate SessionFactory
2012-05-18 17:06:48,729 ERROR [main] [ContextLoader] Context initialization failed
...
Cause
The <Bamboo_Home>/bamboo.cfg.xml
file is truncated. Sometimes when Bamboo crashes due to insufficient disc space, it might corrupt the bamboo.cfg.xml
file. Here is the related bug report: BAM-11596 - Bamboo Crashes Due to Insufficient Disk Space and Truncates bamboo.cfg.xml
Resolution
Please shut down your Bamboo server, and make sure that bamboo.cfg.xml
file contains all the necessary fields. For example, with Bamboo 4.1, using MySQL5, 'bamboo41' database name and localhost IP address for Broker URI (used for Remote agent communication), the file will look like this:
<?xml version="1.0" encoding="UTF-8"?>
<application-configuration>
<setupStep>complete</setupStep>
<setupType>custom</setupType>
<buildNumber>3100</buildNumber>
<properties>
<property name="bamboo.artifacts.directory">${bambooHome}/artifacts</property>
<property name="bamboo.config.directory">${bambooHome}/xml-data/configuration</property>
<property name="bamboo.jms.broker.client.uri">failover:(tcp://127.0.0.1:54663?wireFormat.maxInactivityDuration=300000)?maxReconnectAttempts=10&initialReconnectDelay=15000</property>
<property name="bamboo.jms.broker.uri">tcp://0.0.0.0:54663?wireFormat.maxInactivityDuration=300000</property>
<property name="bamboo.project.directory">${bambooHome}/xml-data/builds</property>
<property name="buildWorkingDir">${bambooHome}/xml-data/build-dir</property>
<property name="daily.backup.dir">${bambooHome}/backups</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.max_size">25</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.min_size">0</property>
<property name="hibernate.c3p0.timeout">30</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">_your_DB_password_goes_here_</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/bamboo41?autoReconnect=true</property>
<property name="hibernate.connection.username">_your_DB_username_goes_here_</property>
<property name="hibernate.dialect">com.atlassian.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.setup">true</property>
<property name="license.string">_your_license_goes_here_</property>
<property name="lucene.index.dir">${bambooHome}/index</property>
<property name="serverId">_your_ServerID_goes_here_</property>
<property name="webwork.multipart.saveDir">${bambooHome}/temp</property>
</properties>
</application-configuration>
In order to be sure that you are using all the correct configuration details, just try to install a test instance from scratch. After you are done, copy the content of BAMBOO_HOME/bamboo.cfg.xml
file from the new instance into the one from the corrupted instance. You need to make sure that you are using correct:
- license: <property name="license.string">_your_license_goes_here_</property>
database name: <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/_your_DN_name_goes_here_?autoReconnect=true</property>
- database username: <property name="hibernate.connection.username">_your_DB_username_goes_here_</property>
- database password: <property name="hibernate.connection.password">_your_DB_password_goes_here_</property>
- ServerID: <property name="serverId">_your_ServerID_goes_here_</property>
After crafting your <BAMBOO_HOME>/bamboo.cfg.xml
file manually, start your Bamboo server, and it should work properly again. You might need to delete <BAMBOO_HOME>/jms-store/bamboo/KahaDB
and <BAMBOO_HOME>/caches
directories and restart your Bamboo server if you confront problems while starting Bamboo.