Failed to enable Rate Limiting on Bamboo - ORA-04043
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
Failed to enable Rate Limiting on Bamboo with the following error:
Environment
Bamboo 8.2.4
Diagnosis
From <bamboo-home>/logs/atlassian-bamboo.log
, you will see the following error:
WARN [AtlassianEvent::0-BAM::EVENTS:pool-1-thread-9] [QDSLSystemRateLimitingSettingsDao] Initializing system rate limiting settings DB with default settings: [SystemRateLimitingSettings(mode=OFF, bucketSettings=TokenBucketSettings(capacity=50, fillRate=10, intervalFrequency=1, intervalTimeUnit=Seconds), jobControlSettings=SystemJobControlSettings(reportingDbArchivingJobFrequencyDuration=PT1M10S, reportingDbRetentionPeriodDuration=PT24H, bucketCollectionJobFrequencyDuration=PT5M, bucketCleanupJobFrequencyDuration=PT15M, settingsReloadJobFrequencyDuration=PT1M))]
ERROR [AtlassianEvent::0-BAM::EVENTS:pool-1-thread-9] [QDSLSystemRateLimitingSettingsDao] Caught error inserting system rate limiting settings: [SystemRateLimitingSettings(mode=OFF, bucketSettings=TokenBucketSettings(capacity=50, fillRate=10, intervalFrequency=1, intervalTimeUnit=Seconds), jobControlSettings=SystemJobControlSettings(reportingDbArchivingJobFrequencyDuration=PT1M10S, reportingDbRetentionPeriodDuration=PT24H, bucketCollectionJobFrequencyDuration=PT5M, bucketCleanupJobFrequencyDuration=PT15M, settingsReloadJobFrequencyDuration=PT1M))] into DB - rolling back transaction
ERROR [AtlassianEvent::0-BAM::EVENTS:pool-1-thread-9] [QDSLSystemRateLimitingSettingsDao] Caught error initializing system rate limiting settings: [SystemRateLimitingSettings(mode=OFF, bucketSettings=TokenBucketSettings(capacity=50, fillRate=10, intervalFrequency=1, intervalTimeUnit=Seconds), jobControlSettings=SystemJobControlSettings(reportingDbArchivingJobFrequencyDuration=PT1M10S, reportingDbRetentionPeriodDuration=PT24H, bucketCollectionJobFrequencyDuration=PT5M, bucketCleanupJobFrequencyDuration=PT15M, settingsReloadJobFrequencyDuration=PT1M))] in DB - rolling back transaction
ERROR [AtlassianEvent::0-BAM::EVENTS:pool-1-thread-9] [DefaultLifecycleManager] LifecycleAware.onStart() failed for component with class 'com.atlassian.ratelimiting.internal.settings.DefaultRateLimitModificationSettingsService' from plugin 'com.atlassian.ratelimiting.rate-limiting-plugin'
java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy1846.prepareStatement(Unknown Source)
at com.atlassian.pocketknife.internal.querydsl.SpecificBehaviourConnection.prepareStatement(SpecificBehaviourConnection.java:247)
at com.querydsl.sql.dml.SQLInsertClause.prepareStatementAndSetParameters(SQLInsertClause.java:339)
at com.querydsl.sql.dml.SQLInsertClause.createStatement(SQLInsertClause.java:270)
at com.querydsl.sql.dml.SQLInsertClause.executeWithKeys(SQLInsertClause.java:364)
at com.querydsl.sql.dml.SQLInsertClause.executeWithKey(SQLInsertClause.java:201)
at com.querydsl.sql.dml.SQLInsertClause.executeWithKey(SQLInsertClause.java:182)
at com.atlassian.ratelimiting.db.internal.dao.QDSLSystemRateLimitingSettingsDao.lambda$create$4(QDSLSystemRateLimitingSettingsDao.java:87)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:69)
at com.atlassian.bamboo.spring.PluginSpringHibernateTransactionalExecutor.lambda$null$0(PluginSpringHibernateTransactionalExecutor.java:56)
at org.hibernate.jdbc.WorkExecutor.executeWork(WorkExecutor.java:37)
at org.hibernate.internal.AbstractSharedSessionContract.lambda$doWork$1(AbstractSharedSessionContract.java:1109)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.coordinateWork(JdbcCoordinatorImpl.java:308)
at org.hibernate.internal.AbstractSharedSessionContract.doWork(AbstractSharedSessionContract.java:1125)
at org.hibernate.internal.AbstractSharedSessionContract.doWork(AbstractSharedSessionContract.java:1112)
at com.atlassian.bamboo.spring.PluginSpringHibernateTransactionalExecutor.lambda$toSpringCallback$1(PluginSpringHibernateTransactionalExecutor.java:54)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at com.atlassian.bamboo.spring.PluginSpringHibernateTransactionalExecutor.execute(PluginSpringHibernateTransactionalExecutor.java:39)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:43)
at com.atlassian.ratelimiting.db.internal.dao.QDSLSystemRateLimitingSettingsDao.create(QDSLSystemRateLimitingSettingsDao.java:68)
at com.atlassian.ratelimiting.db.internal.dao.QDSLSystemRateLimitingSettingsDao.lambda$initializeDbIfNeeded$0(QDSLSystemRateLimitingSettingsDao.java:44)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:69)
at com.atlassian.bamboo.spring.PluginSpringHibernateTransactionalExecutor.lambda$null$0(PluginSpringHibernateTransactionalExecutor.java:56)
at org.hibernate.jdbc.WorkExecutor.executeWork(WorkExecutor.java:37)
at org.hibernate.internal.AbstractSharedSessionContract.lambda$doWork$1(AbstractSharedSessionContract.java:1109)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.coordinateWork(JdbcCoordinatorImpl.java:308)
at org.hibernate.internal.AbstractSharedSessionContract.doWork(AbstractSharedSessionContract.java:1125)
at org.hibernate.internal.AbstractSharedSessionContract.doWork(AbstractSharedSessionContract.java:1112)
at com.atlassian.bamboo.spring.PluginSpringHibernateTransactionalExecutor.lambda$toSpringCallback$1(PluginSpringHibernateTransactionalExecutor.java:54)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at com.atlassian.bamboo.spring.PluginSpringHibernateTransactionalExecutor.execute(PluginSpringHibernateTransactionalExecutor.java:39)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67)
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:43)
at com.atlassian.ratelimiting.db.internal.dao.QDSLSystemRateLimitingSettingsDao.initializeDbIfNeeded(QDSLSystemRateLimitingSettingsDao.java:39)
at com.atlassian.ratelimiting.internal.configuration.DefaultSystemPropertiesService.initializeData(DefaultSystemPropertiesService.java:64)
at com.atlassian.ratelimiting.internal.settings.RateLimitModificationSettingsService.onStart(RateLimitModificationSettingsService.java:92)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager$1.accept(DefaultLifecycleManager.java:262)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager$1.accept(DefaultLifecycleManager.java:259)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager.notifyLifecyleAware(DefaultLifecycleManager.java:290)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager.notifyOnStartIfStartedAndEnabled(DefaultLifecycleManager.java:258)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager.notifyLifecycleAwares(DefaultLifecycleManager.java:243)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager.notifyStartableLifecycleAwares(DefaultLifecycleManager.java:221)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager.startIfApplicationSetup(DefaultLifecycleManager.java:209)
at com.atlassian.sal.core.lifecycle.DefaultLifecycleManager.start(DefaultLifecycleManager.java:200)
at com.atlassian.sal.bamboo.lifecycle.BambooLifecycleManager.onBambooContainerStart(BambooLifecycleManager.java:40)
at com.atlassian.sal.bamboo.lifecycle.ServerStartupListener.handleEvent(ServerStartupListener.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:42)
at com.atlassian.event.internal.ComparableListenerInvoker.invoke(ComparableListenerInvoker.java:48)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$null$0(AsynchronousAbleEventDispatcher.java:37)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48)
at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26)
at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17)
at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.bamboo.spring.NonLeakableConnection$1.invoke(NonLeakableConnection.java:35)
... 61 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-04043: object "TEST" does not exist
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:456)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:451)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1123)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:553)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:269)
at oracle.jdbc.driver.T4C8Odsy.doODSY(T4C8Odsy.java:146)
at oracle.jdbc.driver.T4C8Odsy.doODSYTable(T4C8Odsy.java:126)
at oracle.jdbc.driver.T4CConnection.doDescribeTable(T4CConnection.java:5181)
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:4656)
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:372)
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java)
... 66 more
Cause
The error appears if you are using an Oracle JDBC driver earlier than 21.x.
To check the version of the current Oracle JDBC on your Bamboo instance, go to the <bamboo-install>/bin/
folder and run the command java -jar ojdbcX.jar:
java -jar ojdbc8.jar
Oracle 23.3.0.23.09 JDBC 4.2 debug compiled with javac 1.8.0_381-ea on Thu_Aug_31_22:00:13_PDT_2023
The version of ojdbc8.jar here is 23.3.0.23.09.
Solution
Rate limiting is only compatible with the Oracle JDBC 21.x driver. Upgrade the Oracle driver to version 21 or later.