SAS® OnDemand Decision Engine reports "…java.util.NoSuchElementException: Timeout waiting for idle object…" warning messages


If SAS OnDemand Decision Engine encounters a temporary issue connecting to the Multi-Entity History (MEH) database, it should reconnect automatically when the database is available and continue processing transactions. However, starting with SAS® Fraud Management 6.2 Hot Fix 2, SAS OnDemand Decision Engine fails to reconnect to the MEH. Instead, SAS OnDemand Decision Engine creates new connections until it exhausts the connection pool.  

Each failed transaction generates a WARN message similar to the following:

2025-05-17T15:03:02,055 [Engine  2] WARN  TRANSACTION_FAILED elapsed=1,002.0ms cmx_tran_id=0032147813363953 smh_acct_type="CC" smh_activity_type="CA" smh_rtn_code="12" smh_reason_code="ERRR"

java.util.NoSuchElementException: Timeout waiting for idle object

      at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject
(GenericObjectPool.java:446) ~[commons-pool2.jar:2.9.0]

      at com.sas.finance.fraud.engine.meh.MEH.getConnection(MEH.java:162) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.meh.MEH.fetch(MEH.java:122) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.action.MehFetchAction.execute
(MehFetchAction.java:58) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.ActionList.execute
(ActionList.java:40) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.If.evaluate0(If.java:62) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.Predicate.evaluate
(Predicate.java:62) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.Predicate.execute
(Predicate.java:58) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.ActionList.execute
(ActionList.java:40) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.FieldActionMap$MapMatcher.matches
(FieldActionMap.java:90) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.FieldPredicate.evaluate0
(FieldPredicate.java:78) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.Predicate.evaluate
(Predicate.java:62) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.Predicate.execute
(Predicate.java:58) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.action.ActionList.execute
(ActionList.java:40) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.action.TryAction.execute
(TryAction.java:31) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.client.utils.ElapsedTimeStats.execute
(ElapsedTimeStats.java:60) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.ServerTransaction.run_
(ServerTransaction.java:393) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at com.sas.finance.fraud.engine.ServerTransaction.run
(ServerTransaction.java:449) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

      at java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1128) ~[?:?]

      at java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:628) ~[?:?]

      at java.lang.Thread.run(Thread.java:829) ~[?:?]

      at com.sas.finance.fraud.engine.client.utils.LoggingThread.run
(LoggingThread.java:28) ~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

This issue occurs in SAS Fraud Management 6.2 Hot Fix 2 and SAS® Fraud Management 6.2 Hot Fix 3.

Workaround

To circumvent this issue, restart SAS OnDemand Decision Engine.