Products | Versions |
---|---|
TIBCO BusinessEvents Enterprise Edition | - |
Not Applicable | - |
Resolution:
Description:
===========
Inference Agent could hang when the cursor name for each database query is not unique using catalog function Database.createQuery().
Environment:
===========
TIBCO BusinessEvents 3.0/4.0/5.0
All Operating Systems
Symptoms:
=========
InferenceAgent hang, thread dump shows database deadlock.
State : BLOCKED on oracle.jdbc.driver.T4CConnection@11f111234 owned
by $default.be.mt$.Worker.2
Cause:
======
static cursor name (String) defined in database query catalog function Database.createQuery(<jdbc>,<cursorName>,<resultTypeURI>,<sqlquery>,<pageSize>,<arr>)
Resolution:
========
Use a unique cursorname for each query (example: event@id_<current_timestamp>)
NOTE: The engine caches the query results with cursorname as its key. The cursorname is required to browse the query results in pages, that is why you need to pass cursorname to getNextPage function. If the same key is used the cached query results will be shared by multiple threads and it will result in blockage.