I'm using the Teradata JDBC driver (15.10) to execute SELECT statements to the TD Database (14.00 and 15.00).
There is a connection pool, and I see connection being picked up and released back to the pool. However after 16 requests, I get a 3130 error. Just like the following observation:
Apparantly the responses are not closed on the Database side. I have been searching for the KeepResp option i.c.w. JDBC but haven't found anything of help. Is the KeepResp a session setting? If so, how can I set this with JDBC? Or where/how can I activate this setting?
The Teradata JDBC Driver User Guide has a section that discusses this topic, and the possible remedies.
Your application must have proper exception handling, with finally blocks coded to ensure that ResultSet objects, Statement objects, LOB InputStream, and LOB Reader objects are always closed as soon as they are no longer needed. If the application modifies LOBs, then Blob and Clob objects must be freed in finally blocks.
Beginning with Teradata JDBC Driver version 14.00.00.08, if the LOG=INFO connection parameter is specified, then the Teradata JDBC Driver will log information about all outstanding open responses when a Teradata Database Error 3130 occurs. The logged information will include each open response's request number, date/time of submission, submitter thread ID, SQL request text, and submitter call stack. This information can be useful to an application developer to help pinpoint which places in the application are submitting SQL requests and not subsequently closing them.
Hi Tom, thanks for your response! I did see this section in the JDBC Driver User Guide. Unfortunately I don't have full control over the application doing the requests. Therefore I was setting my hopes on that KeepResp setting...
I'll see what I can do in the applications logic.