Uploaded image for project: 'ActiveMQ Artemis'
  1. ActiveMQ Artemis
  2. ARTEMIS-4708

exit failure code in case of JDBC connection failure

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.31.0, 2.32.0
    • None
    • Broker
    • None
    • Artemis broker running in a container controlled by podman and docker-compose

    Description

      We have to use JDBC for persistence. In case a JDBC connection is not available because i.e. short network outage, the broker is stopped.

      2024-03-26 09:34:59,614 ERROR [org.apache.activemq.artemis.jdbc.store.drivers.JDBCConnectionProvider]
      SQL EXCEPTIONS:
      SQLState: 08006 ErrorCode: 17002 Message: IO Error: The Network Adapter could not establish the connection (CONNECTION_ID=b+bm+NCuRfSpy8KMoO0r0A==)
      java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection (CONNECTION_ID=b+bm+NCuRfSpy8KMoO0r0A==)
        at oracle.jdbc.driver.T4CConnection.handleLogonNetException(T4CConnection.java:902)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:707)
        at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:1094)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:89)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:732)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:648)
        at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
        at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
        at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:889)
        at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:424)
        at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:349)
        at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:134)
        at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
        at org.apache.activemq.artemis.jdbc.store.drivers.JDBCConnectionProvider.getConnection(JDBCConnectionProvider.java:62)
        at org.apache.activemq.artemis.jdbc.store.journal.JDBCJournalImpl.sync(JDBCJournalImpl.java:215)
        at org.apache.activemq.artemis.jdbc.store.journal.JDBCJournalImpl$JDBCJournalSync.run(JDBCJournalImpl.java:1011)
        at org.apache.activemq.artemis.core.server.ActiveMQScheduledComponent.runForExecutor(ActiveMQScheduledComponent.java:314)
        at org.apache.activemq.artemis.core.server.ActiveMQScheduledComponent.lambda$bookedRunForScheduler$2(ActiveMQScheduledComponent.java:321)
        at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
        at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
        at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)

      Unfortunately the broker terminates with exit code success and is therefore not automatically restarted in a container environment.

      Please extend the broker in a way to terminate it with a failure exit code in case of any JDBC error.

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            urferr Reto Urfer
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: