Red Hat Build of Apicurio CrashLoopBackOff using KafkaSQL Storage Backend
Issue
- ApicurioRegistry is not starting.
- There are events in its namespace like:
service-registry 0m18s Warning BackOff pod/service-registry-deployment-pod Back-off restarting failed container registry in pod service-registry-deployment-pod
- The condition of CrashLoopBackOff is reached.
- The logs of the RHBA container show errors like:
2024-05-09 14:23:16 INFO <_> [io.smallrye.health.SmallRyeHealthReporter] (executor-thread-0) SRHCK01001: Reporting health down status: {"status":"DOWN","checks":[{"name":"Database connections health check","status":"UP","data":{"<default>":"UP"}},{"name":"Database connections health check","status":"UP","data":{"<default>":"UP"}},{"name":"PersistenceSimpleReadinessCheck","status":"DOWN"},{"name":"PersistenceSimpleReadinessCheck","status":"DOWN"},{"name":"ResponseTimeoutReadinessCheck","status":"UP","data":{"errorCount":0}},{"name":"ResponseTimeoutReadinessCheck","status":"UP","data":{"errorCount":0}}]}
2024-05-09 14:23:16 WARN <_> [com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord] (KSQL Kafka Consumer Thread) ARJUNA016045: attempted rollback of < formatId=131077, gtrid_length=35, bqual_length=36, tx_uid=0:ffff0ffff000:ffff:0000ffff:00000, node_name=quarkus, branch_uid=0:ffffffffffff:0000:ffff0000:fffff, subordinatenodename=null, eis_name=0 > (io.agroal.narayana.LocalXAResource@ffffffff) failed with exception code XAException.XAER_RMERR: javax.transaction.xa.XAException: Error trying to transactionRollback local transaction: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214]
at io.agroal.narayana.LocalXAResource.xaException(LocalXAResource.java:140)
at io.agroal.narayana.LocalXAResource.xaException(LocalXAResource.java:134)
at io.agroal.narayana.LocalXAResource.rollback(LocalXAResource.java:88)
at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:362)
at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3037)
at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3016)
at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1679)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:124)
at com.arjuna.ats.arjuna.AtomicAction.abort(AtomicAction.java:186)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.rollbackAndDisassociate(TransactionImple.java:1377)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:145)
at io.quarkus.narayana.jta.runtime.CDIDelegatingTransactionManager.rollback(CDIDelegatingTransactionManager.java:133)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.endTransaction(TransactionalInterceptorBase.java:372)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:170)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:104)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:58)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlStore_Subclass.updateArtifactWithMetadata(Unknown Source)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlStore_ClientProxy.updateArtifactWithMetadata(Unknown Source)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink.processArtifactMessage(KafkaSqlSink.java:323)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink.doProcessMessage(KafkaSqlSink.java:166)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink.processMessage(KafkaSqlSink.java:117)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink_Subclass.processMessage$$superforward1(Unknown Source)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink_Subclass$$function$$20.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at io.apicurio.common.apps.logging.LoggingInterceptor.logMethodEntry(LoggingInterceptor.java:53)
at io.apicurio.common.apps.logging.LoggingInterceptor_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:50)
at io.quarkus.arc.impl.ActivateRequestContextInterceptor.invoke(ActivateRequestContextInterceptor.java:129)
at io.quarkus.arc.impl.ActivateRequestContextInterceptor.aroundInvoke(ActivateRequestContextInterceptor.java:33)
at io.quarkus.arc.impl.ActivateRequestContextInterceptor_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:33)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink_Subclass.processMessage(Unknown Source)
at io.apicurio.registry.storage.impl.kafkasql.sql.KafkaSqlSink_ClientProxy.processMessage(Unknown Source)
at io.apicurio.registry.storage.impl.kafkasql.KafkaSqlRegistryStorage.lambda$startConsumerThread$1(KafkaSqlRegistryStorage.java:311)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at io.apicurio.registry.storage.impl.kafkasql.KafkaSqlRegistryStorage.lambda$startConsumerThread$2(KafkaSqlRegistryStorage.java:281)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:678)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477)
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.message.DbException.get(DbException.java:188)
at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375)
at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463)
at io.agroal.pool.ConnectionHandler.transactionRollback(ConnectionHandler.java:368)
at io.agroal.narayana.LocalXAResource.rollback(LocalXAResource.java:85)
... 43 more
Environment
- Red Hat Build of Apicurio (RHBA)
- v2.4.4
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.