Connection to Bamboo Database is lost with error about host being blocked
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
Symptoms
You are using MYSQL database, and all of a sudden Bamboo becomes inaccessible. The login page shows the following message
HTTP Error: 503
Problem accessing /bamboo: Reason
Service Unavailable
The BambooHome/logs/atlassian-bamboo.log shows the following:
2013-01-02 08:40:01,495 WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1] [BasicResourcePool] com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@5aa4215 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.GeneratedConstructorAccessor19.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2364)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:781)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.GeneratedConstructorAccessor17.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Caused by: java.sql.SQLException: null, message from server: "Host 'your_host' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2292)
Cause
Your remote host is blocked because of many connection errors. By default, the max_connect_errors value is 10 and as such any reconnection trials more than 10 will cause a block on the host.
Resolution
Please follow the following steps:
Run mysqladmin flush-hosts on the server running MySQL server
To avoid this from showing up again, increase the max_connect_errors value to a higher value say 200. This can be done by editing the file etc/my.cnf (Linux) or my.ini (Windows) and adding the line set-variable = max_connect_errors=200 below the [mysqld] tag. An example file is shown below:
[mysqld] datadir=/backup/mysql socket=/var/lib/mysql/mysql.sock user=mysql set-variable = max_connections=500 set-variable = max_connect_errors=200 old_passwords=1 safe-show-database skip-locking skip-innodb max_allowed_packet = 1M set-variable = table_cache=1024 set-variable = query_cache_type=1 set-variable = query_cache_limit=1M set-variable = query_cache_size=128M ## 32MB for every 1GB of RAM [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] socket=/var/lib/mysql/mysql.sock [mysqladmin] socket=/var/lib/mysql/mysql.sock [mysqldump] socket=/var/lib/mysql/mysql.sock
Was this helpful?