IDS 11.7 - random ISAM Errors: no record found
Answered: red (solid confidence) — Art Kagel suggests trying a different JDBC driver build or opening a PMR; a second reply's diagnosis conflates a Java stack-trace line number with SQL error -413 and looks like a misreading, and no fix is confirmed in this thread.
Advisory only.
Posted in 2016
Topics: High Availability & Replication, Error Codes & Troubleshooting, Connectivity: ODBC / JDBC / .NET, Java & JDBC Development, Versions, Editions & End-of-Life
Hi,
My product is running Informix IDS version 11.70 on an RHEL 6.6 server.
# onstat -
IBM Informix Dynamic Server Version 11.70.UC8X6 -- On-Line -- Up 16 days
10:30:59 -- 254396 Kbytes
I have java applications that use the Informix JDBC driver (ifxjdbc.jar)
version 3.50.JC9 to perform CRUD operations on tables.
Randomly (like 20% of the time), I have been seeing operations fail with the
below exception stack trace:
java.sql.SQLException: The specified table (applicationuser) is not in the
database.
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3125)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3407)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2324)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2249)
at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1485)
at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1465)
at com.informix.jdbc.IfxResultSet.a(IfxResultSet.java:210)
at com.informix.jdbc.IfxStatement.executeQueryImpl(IfxStatement.java:1237)
at com.informix.jdbc.IfxStatement.executeQuery(IfxStatement.java:220)
... 21 more
Caused by: java.sql.SQLException: ISAM error: no record found.
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3412)
... 32 more
The table "applicationuser" indeed exists in my database. The same flow works
fine like 8 times out of 10, and I have confirmed from the JDBC URL that it is
connecting to the right DB instance and the right database containing this
table.
I also checked the DB instance for corruption (oncheck -cc), and everything is
fine in sysmaster and systables - no corruption.
I confirmed that the JDBC driver I am using (ifxjdbc-3.50.JC9.jar) is
supported by IDS 11.70.
Also, this is a single node setup, so no enterprise replication is configured.
Since this is an ISAM error emanating from the DB, it does not seem to be
anything wrong that my application code is doing (also the fact that the same
flow works 80% of the time).
Any ideas on what could be happening here? Any help/clues is greatly
appreciated.
It could also be a bug in the JDBC library. Have you tried an earlier or
later release of the library? My first try would be the JDBC v3.70.UC8X6
libraries. Then if the problem persists, I would call IBM and open a PMR.
Art
Art S. Kagel, President and Principal Consultant
ASK Database Management
www.askdbmgt.com
Blog: http://informix-myview.blogspot.com/
Disclaimer: Please keep in mind that my own opinions are my own opinions
and do not reflect on the IIUG, nor any other organization with which I am
associated either explicitly, implicitly, or by inference. Neither do
those opinions reflect those of other individuals affiliated with any
entity with which I am affiliated nor those of the entities themselves.
On Mon, Jan 4, 2016 at 12:21 PM, NAGENDRA MAHESH <namahesh@cisco.com> wrote:
> Hi,
>
> My product is running Informix IDS version 11.70 on an RHEL 6.6 server.
>
> # onstat ->
> IBM Informix Dynamic Server Version 11.70.UC8X6 -- On-Line -- Up 16 days
> 10:30:59 -- 254396 Kbytes>
> I have java applications that use the Informix JDBC driver (ifxjdbc.jar)
> version 3.50.JC9 to perform CRUD operations on tables.
>
> Randomly (like 20% of the time), I have been seeing operations fail with
> the
> below exception stack trace:
>
> java.sql.SQLException: The specified table (applicationuser) is not in the
> database.
> at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3125)
> at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3407)
> at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2324)
> at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2249)
> at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1485)
> at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1465)
> at com.informix.jdbc.IfxResultSet.a(IfxResultSet.java:210)
> at com.informix.jdbc.IfxStatement.executeQueryImpl(IfxStatement.java:1237)
> at com.informix.jdbc.IfxStatement.executeQuery(IfxStatement.java:220)
> .... 21 more
> Caused by: java.sql.SQLException: ISAM error: no record found.
> at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
> at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3412)
> .... 32 more
>
> The table "applicationuser" indeed exists in my database. The same flow
> works
> fine like 8 times out of 10, and I have confirmed from the JDBC URL that
> it is
> connecting to the right DB instance and the right database containing this
> table.
>
> I also checked the DB instance for corruption (oncheck -cc), and
> everything is
> fine in sysmaster and systables - no corruption.
>
> I confirmed that the JDBC driver I am using (ifxjdbc-3.50.JC9.jar) is
> supported by IDS 11.70.
>
> Also, this is a single node setup, so no enterprise replication is
> configured.
>
> Since this is an ISAM error emanating from the DB, it does not seem to be
> anything wrong that my application code is doing (also the fact that the
> same
> flow works 80% of the time).
>
> Any ideas on what could be happening here? Any help/clues is greatly
> appreciated.
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--001a1141c1e04e248a052885751a
Based on the message:
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
I would look to make sure you are not closing a cursor incorrectly in your
application.
-413 Insert attempted on unopen cursor.
This INSERT statement names a cursor that has never been opened or that
has been closed. Review the program logic, and check that it will open
the cursor before this point and not accidentally close it. An insert
cursor is automatically closed by a COMMIT WORK or ROLLBACK WORK
statement.
-----Original Message-----
From: ids-bounces@iiug.org [mailto:ids-bounces@iiug.org] On Behalf Of NAGENDRA
MAHESH
Sent: Monday, January 04, 2016 11:21 AM
To: ids@iiug.org
Subject: IDS 11.7 - random ISAM Errors: no record found [36335]
Hi,
My product is running Informix IDS version 11.70 on an RHEL 6.6 server.
# onstat -
IBM Informix Dynamic Server Version 11.70.UC8X6 -- On-Line -- Up 16 days
10:30:59 -- 254396 Kbytes
I have java applications that use the Informix JDBC driver (ifxjdbc.jar)
version 3.50.JC9 to perform CRUD operations on tables.
Randomly (like 20% of the time), I have been seeing operations fail with the
below exception stack trace:
java.sql.SQLException: The specified table (applicationuser) is not in the
database.
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3125)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3407)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2324)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2249)
at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1485)
at com.informix.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1465)
at com.informix.jdbc.IfxResultSet.a(IfxResultSet.java:210)
at com.informix.jdbc.IfxStatement.executeQueryImpl(IfxStatement.java:1237)
at com.informix.jdbc.IfxStatement.executeQuery(IfxStatement.java:220)
.... 21 more
Caused by: java.sql.SQLException: ISAM error: no record found.
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3412)
.... 32 more
The table "applicationuser" indeed exists in my database. The same flow works
fine like 8 times out of 10, and I have confirmed from the JDBC URL that it is
connecting to the right DB instance and the right database containing this
table.
I also checked the DB instance for corruption (oncheck -cc), and everything is
fine in sysmaster and systables - no corruption.
I confirmed that the JDBC driver I am using (ifxjdbc-3.50.JC9.jar) is
supported by IDS 11.70.
Also, this is a single node setup, so no enterprise replication is configured.
Since this is an ISAM error emanating from the DB, it does not seem to be
anything wrong that my application code is doing (also the fact that the same
flow works 80% of the time).
Any ideas on what could be happening here? Any help/clues is greatly
appreciated.
*******************************************************************************
Forum Note: Use "Reply" to post a response in the discussion forum.