Thread: IndexOutOfBoundsException in org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1720)
IndexOutOfBoundsException in org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1720)
From
Jan Torben Heuer
Date:
Hi, I noticed a strange Exception on my test server using postgresql-9.0-801.jdbc4 in this code fragment: QueryExecutorImpl.java:1720 (pendingBindQueue#get(int)) ---------- case '2': // Bind Complete (response to Bind) pgStream.ReceiveInteger4(); // len, discarded Portal boundPortal = (Portal)pendingBindQueue.get(bindIndex++); if (logger.logDebug()) logger.debug(" <=BE BindComplete [" + boundPortal + "]"); registerOpenPortal(boundPortal); break; ---------- java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1720) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374) at org.postgresql.jdbc2.AbstractJdbc2Connection.execSQLQuery(AbstractJdbc2Connection.java:244) at org.postgresql.jdbc2.AbstractJdbc2Connection.execSQLQuery(AbstractJdbc2Connection.java:236) at org.postgresql.jdbc2.AbstractJdbc2Connection.getTransactionIsolation(AbstractJdbc2Connection.java:760) at com.jolbox.bonecp.ConnectionHandle.getTransactionIsolation(ConnectionHandle.java:633) at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:383) at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getXAResource(ConnectionFactoryImpl.java:313) at org.datanucleus.store.connection.ConnectionManagerImpl.enlistResource(ConnectionManagerImpl.java:389) at org.datanucleus.store.connection.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:252) at org.datanucleus.store.connection.AbstractConnectionFactory.getConnection(AbstractConnectionFactory.java:60) at org.datanucleus.store.AbstractStoreManager.getConnection(AbstractStoreManager.java:441) at org.datanucleus.store.AbstractStoreManager.getConnection(AbstractStoreManager.java:410) at org.datanucleus.store.rdbms.query.JDOQLQuery.performExecute(JDOQLQuery.java:595) at org.datanucleus.store.query.Query.executeQuery(Query.java:1789) at org.datanucleus.store.query.Query.executeWithArray(Query.java:1665) at org.datanucleus.api.jdo.JDOQuery.executeWithArray(JDOQuery.java:312) I haven't manged to reproduce this issue on my dev machine. But can someone give me a hint what happens here? What is a Portal and what does it mean if an IndexOutOfBounds Exception occurs here? Thanks, Jan --
Re: IndexOutOfBoundsException in org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1720)
From
Maciek Sakrejda
Date:
> I haven't manged to reproduce this issue on my dev machine. But can someone > give me a hint what happens here? What is a Portal and what does it mean if > an IndexOutOfBounds Exception occurs here? Have you reproduced it on the test machine? A portal is a concept describing the protocol-level construct to get data from a specific invocation of a prepared statement. From a quick glance at the code, what you're seeing here shouldn't happen... Are you perhaps using the same Connection object from multiple threads? It is ostensibly supported ( http://jdbc.postgresql.org/documentation/head/thread.html ), but I wonder if this is what's causing issues. E.g., I haven't worked out the details, but I think a sequence where two threads send independent Binds concurrently could cause this. --- Maciek Sakrejda | System Architect | Truviso 1065 E. Hillsdale Blvd., Suite 215 Foster City, CA 94404 (650) 242-3500 Main www.truviso.com