executeQuery Locked

Поиск
Список
Период
Сортировка
От Lucas Sousa
Тема executeQuery Locked
Дата
Msg-id cccdaefb0607110929w6117e9d3w6904c7fd73fe5399@mail.gmail.com
обсуждение исходный текст
Ответы Re: executeQuery Locked
Re: executeQuery Locked
Список pgsql-jdbc
People, I am having a very anoying problem:

I am issuing this:

        boolean result = false;
        Statement stm = null;
        ResultSet rs = null;
        try
        {
            stm = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY );
            stm.setQueryTimeout( timeout );           
            rs = stm.executeQuery( sql );  <- the proccess is stopped here for more than half an hour
            result = rs.next();
        }
        finally
        {
            DbUtils.closeQuietly( rs );
            DbUtils.closeQuietly( stm );
        }
        return result;


sql is a simple select that returns one row (if I take it and send to pgsql it works fine)
timeout = 120 (seconds) / I am using a DBCP pool / I use one or more connection per thread (I get it inside the method and release inside the method)

If I get my debbuger and interrupt the thread I see it stopped in some point of execution of stm.executeQuery (it seems to be waitng a response from the postgres server) but at the same time I go to the server and does not find the query itself runnning.

It seems to me that for some (weird) reason, the query timeout is bein achieved without throwing any error or the postgresql driver detecting that.

This is some know issue?
It is possible that the backend is cancelling the connection by timeout and the driver does not notice and continues waiting for it?

the driver I am using is postgresql-8.2dev-503.jdbc3.jar (and it happens the same thing with the 8.0 driver)

and the stack trace of one of such locked proccess:

Thread [zzzzzzz:12] (Suspended)
    SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]
    SocketInputStream.read(byte[], int, int) line: not available
    BufferedInputStream.fill() line: not available
    BufferedInputStream.read() line: not available
    PGStream.ReceiveChar() line: 256
    QueryExecutorImpl.processResults(ResultHandler, int) line: 1164
    QueryExecutorImpl.execute(Query, ParameterList, ResultHandler, int, int, int) line: 190
    Jdbc3Statement(AbstractJdbc2Statement).execute(Query, ParameterList, int) line: 452
    Jdbc3Statement(AbstractJdbc2Statement).executeWithFlags(String, int) line: 340
    Jdbc3Statement(AbstractJdbc2Statement).executeQuery(String) line: 239
    DelegatingStatement.executeQuery(String) line: 205
    xxxx() line: 580 <- this is the line in the code I sent.
    xxxx(int) line: 504
    xxxx(int) line: 523
    xxxx() line: 156
    NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
    NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
    DelegatingMethodAccessorImpl.invoke (Object, Object[]) line: not available
    Method.invoke(Object, Object...) line: not available
    ScheduleTaskRunner.run() line: 139
    Thread.run() line: not available

Has anyone seen this kind of situation before?


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Marc Herbert
Дата:
Сообщение: Re: Limit vs setMaxRows issue
Следующее
От: Albert Cardona
Дата:
Сообщение: subscribe