Hello Community,
We are encountering a critical database connection issue in our iDempiere environment. The system is throwing an "IllegalStateException: DB.createConnection - @NoDBConnection@" and HikariPool is failing to validate connections.
Error Logs:
- PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection (This connection has been closed.)
- java.lang.IllegalStateException: DB.createConnection - @NoDBConnection@
- org.adempiere.exceptions.DBException: java.lang.IllegalStateException: DB.createConnection - No Database Connection
Detail Error :
05:15:33.579-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@548531bc (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]05:15:43.591-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@ab9c610 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:15:53.603-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@23a4883 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:03.615-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1058bc0 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:13.627-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@52973cd5 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:23.635-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@78cff160 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:33.648-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@59b4bcb6 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:43.660-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@420eb46f (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:53.672-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@7e307daa (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:17:03.684-----------> PoolBase.isConnectionDead: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@6480af4a (This connection has been closed.). Possibly consider using a shorter maxLifetime value. [10227]
05:16:23.636===========> PreparedStatementProxy.init: SELECT AD_Language FROM AD_Language WHERE IsActive='Y' AND IsLoginLocale = 'Y' [10227]
java.lang.IllegalStateException: DB.createConnection - @NoDBConnection@
at org.compiere.util.DB.createConnection(DB.java:453)
at org.idempiere.db.util.AutoCommitConnectionBroker.getConnection(AutoCommitConnectionBroker.java:49)
at org.compiere.db.PreparedStatementProxy.init(PreparedStatementProxy.java:91)
at org.compiere.db.PreparedStatementProxy.<init>(PreparedStatementProxy.java:52)
at org.compiere.db.ProxyFactory.newCPreparedStatement(ProxyFactory.java:54)
at org.compiere.util.DB.prepareStatement(DB.java:750)
at org.compiere.util.DB.prepareStatement(DB.java:708)
at org.compiere.util.Env.getLoginLanguages(Env.java:1272)
at com.akst.webui.panel.LoginPanel.initComponents(LoginPanel.java:519)
at com.akst.webui.panel.LoginPanel.<init>(LoginPanel.java:129)
at com.akst.webui.window.LoginWindow.createLoginPanel(LoginWindow.java:83)
at com.akst.webui.window.LoginWindow.initComponents(LoginWindow.java:79)
at com.akst.webui.window.LoginWindow.init(LoginWindow.java:69)
at org.adempiere.webui.WLogin.doCreatePart(WLogin.java:77)
at org.adempiere.webui.part.AbstractUIPart.createPart(AbstractUIPart.java:54)
at org.adempiere.webui.AdempiereWebUI.onCreate(AdempiereWebUI.java:195)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3172)
05:17:03.688===========> UiEngineImpl.handleError: [10227]
org.adempiere.exceptions.DBException: java.lang.IllegalStateException: DB.createConnection - No Database Connection
at org.compiere.db.PreparedStatementProxy.init(PreparedStatementProxy.java:105)
at org.compiere.db.PreparedStatementProxy.<init>(PreparedStatementProxy.java:52)
at org.compiere.db.ProxyFactory.newCPreparedStatement(ProxyFactory.java:54)
at org.compiere.util.DB.prepareStatement(DB.java:750)
at org.compiere.util.DB.prepareStatement(DB.java:708)
at org.compiere.util.Env.getLoginLanguages(Env.java:1272)
at com.akst.webui.panel.LoginPanel.initComponents(LoginPanel.java:519)
at com.akst.webui.panel.LoginPanel.<init>(LoginPanel.java:129)
at com.akst.webui.window.LoginWindow.createLoginPanel(LoginWindow.java:83)
at com.akst.webui.window.LoginWindow.initComponents(LoginWindow.java:79)
at com.akst.webui.window.LoginWindow.init(LoginWindow.java:69)
at org.adempiere.webui.WLogin.doCreatePart(WLogin.java:77)
at org.adempiere.webui.part.AbstractUIPart.createPart(AbstractUIPart.java:54)
at org.adempiere.webui.AdempiereWebUI.onCreate(AdempiereWebUI.java:195)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3172)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3103)
at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)
caused by: java.lang.IllegalStateException: DB.createConnection - @NoDBConnection@
at org.compiere.util.DB.createConnection(DB.java:453)
at org.idempiere.db.util.AutoCommitConnectionBroker.getConnection(AutoCommitConnectionBroker.java:49)
at org.compiere.db.PreparedStatementProxy.init(PreparedStatementProxy.java:91)
at org.compiere.db.PreparedStatementProxy.<init>(PreparedStatementProxy.java:52)
at org.compiere.db.ProxyFactory.newCPreparedStatement(ProxyFactory.java:54)
at org.compiere.util.DB.prepareStatement(DB.java:750)
at org.compiere.util.DB.prepareStatement(DB.java:708)
at org.compiere.util.Env.getLoginLanguages(Env.java:1272)
at com.akst.webui.panel.LoginPanel.initComponents(LoginPanel.java:519)
at com.akst.webui.panel.LoginPanel.<init>(LoginPanel.java:129)
at com.akst.webui.window.LoginWindow.createLoginPanel(LoginWindow.java:83)
at com.akst.webui.window.LoginWindow.initComponents(LoginWindow.java:79)
at com.akst.webui.window.LoginWindow.init(LoginWindow.java:69)
at org.adempiere.webui.WLogin.doCreatePart(WLogin.java:77)
at org.adempiere.webui.part.AbstractUIPart.createPart(AbstractUIPart.java:54)
at org.adempiere.webui.AdempiereWebUI.onCreate(AdempiereWebUI.java:195)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:3172)
The error occurs during the login process (Env.getLoginLanguages) when trying to initialize the PreparedStatement for AD_Language.
Could you please provide guidance on how to resolve this? We are considering adjusting the maxLifetime value as suggested in the logs, but wanted to check if there are other known causes for this in a PostgreSQL setup.
Thank you for your support.