Hello.

The error does not happen every time because it disappears when we restart
our application.But it repeats when first error appears.The row number is
not fixed when this error happens.We are really confused about this
exception.


ilya.kasnacheev wrote
> Hello!
> 
> Does this happen every time? If so, which is the # of row on which it will
> happen?
> 
> Regards,
> -- 
> Ilya Kasnacheev
> 
> 
> вт, 27 нояб. 2018 г. в 10:09, yangjiajun <

> 1371549332@

>>:
> 
>> Hello.
>>
>> I did a scan query on a table which has 8w records and tried to go
>> through
>> all records in the result set but got following exception:
>>
>> [13:53:31,523][SEVERE][client-connector-#77][JdbcRequestHandler] Failed
>> to
>> fetch SQL query result [reqId=0, req=JdbcQueryFetchRequest
>> [queryId=38106237, pageSize=1024]]
>> class org.apache.ignite.internal.processors.query.IgniteSQLException: The
>> object is already closed [90007-195]
>>         at
>>
>> org.apache.ignite.internal.processors.query.h2.H2ResultSetIterator.fetchNext(H2ResultSetIterator.java:136)
>>         at
>>
>> org.apache.ignite.internal.processors.query.h2.H2ResultSetIterator.onHasNext(H2ResultSetIterator.java:142)
>>         at
>>
>> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>>         at
>>
>> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>>         at
>>
>> org.apache.ignite.internal.processors.query.GridQueryCacheObjectsIterator.hasNext(GridQueryCacheObjectsIterator.java:61)
>>         at
>>
>> org.apache.ignite.internal.processors.odbc.jdbc.JdbcQueryCursor.fetchRows(JdbcQueryCursor.java:72)
>>         at
>>
>> org.apache.ignite.internal.processors.odbc.jdbc.JdbcRequestHandler.fetchQuery(JdbcRequestHandler.java:587)
>>         at
>>
>> org.apache.ignite.internal.processors.odbc.jdbc.JdbcRequestHandler.handle(JdbcRequestHandler.java:206)
>>         at
>>
>> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:160)
>>         at
>>
>> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:44)
>>         at
>>
>> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
>>         at
>>
>> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
>>         at
>>
>> org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
>>         at
>> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>>         at
>>
>> org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
>>         at
>>
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>         at
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>         at java.lang.Thread.run(Thread.java:748)
>> Caused by: org.h2.jdbc.JdbcSQLException: The object is already closed
>> [90007-195]
>>         at
>> org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
>>         at org.h2.message.DbException.get(DbException.java:179)
>>         at org.h2.message.DbException.get(DbException.java:155)
>>         at org.h2.message.DbException.get(DbException.java:144)
>>         at org.h2.jdbc.JdbcResultSet.checkClosed(JdbcResultSet.java:3208)
>>         at org.h2.jdbc.JdbcResultSet.next(JdbcResultSet.java:130)
>>         at
>>
>> org.apache.ignite.internal.processors.query.h2.H2ResultSetIterator.fetchNext(H2ResultSetIterator.java:110)
>>         ... 17 more
>>
>> My ignite version is 2.6 and I only started one node.I did not call any
>> close methods. Why ignite closed my result set?
>>
>> Here is my test code:
>>
>> import java.sql.Connection;
>> import java.sql.DriverManager;
>> import java.sql.ResultSet;
>> import java.sql.ResultSetMetaData;
>> import java.sql.Statement;
>> import java.util.Properties;
>>
>> public class StatementTest {
>>
>>         private static Connection conn;
>>
>>
>>         public static void main(String[] args) throws Exception {
>>
>>                 long t1 = System.currentTimeMillis();
>>                 try {
>>                         initialize();
>>
>>                         String selectSql = "SELECT * FROM
>> table_6932_r_1_1";
>>                         testQuery(selectSql);
>>                 } catch (Exception e) {
>>                         throw e;
>>                 } finally {
>>                         if (conn != null)
>>                                 conn.close();
>>                 }
>>                 long t2 = System.currentTimeMillis();
>>                 System.out.println("operation costs " + (t2 - t1) + "
>> ms");
>>         }
>>
>>         public static void close() throws Exception {
>>                 conn.close();
>>         }
>>
>>         public static void initialize() throws Exception {
>>                 Class.forName("org.apache.ignite.IgniteJdbcThinDriver");
>>                 String dbUrl =
>>
>> "jdbc:ignite:thin://ip:port;lazy=true;skipReducerOnUpdate=true;replicatedOnly=true";
>>                 conn = DriverManager.getConnection(dbUrl, props);
>>         }
>>
>>         public static void testUpdate(String sql) throws Exception {
>>                 try (Statement stmt = conn.createStatement()) {
>>                         stmt.setQueryTimeout(10);
>>                         stmt.executeUpdate(sql);
>>                 }
>>         }
>>
>>         public static void testQuery(String sql) throws Exception {
>>                 long startTime=System.currentTimeMillis();
>>                 try (Statement stmt = conn.createStatement()) {
>>                         //stmt.setQueryTimeout(10);
>>                         try (ResultSet rs = stmt.executeQuery(sql)) {
>>
>>                                 ResultSetMetaData rsmd =
>> rs.getMetaData();
>>                                 int colCount = rsmd.getColumnCount();
>>                                 int count = 1;
>>                                 try{
>>                                         while (rs.next()) {
>>                                                 //Thread.sleep(10);
>>
>>                                                 for (int i = 1; i <=
>> colCount; i++) {
>>
>> System.out.print(rsmd.getColumnName(i) + ":" + rs.getObject(i) + "
>> ");
>>                                                 }
>>                                                
>> System.out.println(count);
>>                                                 count++;
>>                                         }
>>                                 }catch(Exception e){
>>
>> System.out.println(System.currentTimeMillis()-startTime));
>>                                        
>> System.out.println(rs.isClosed());
>>
>> System.out.println(stmt.isClosed());
>>
>> System.out.println(conn.isClosed());
>>                                 }
>>
>>                         }
>>                 }
>>         }
>> }
>>
>>
>>
>> --
>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>>





--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to