Re: executeQuery Locked - Mailing list pgsql-jdbc
From | Mark Lewis |
---|---|
Subject | Re: executeQuery Locked |
Date | |
Msg-id | 1152642431.30994.391.camel@archimedes Whole thread Raw |
In response to | executeQuery Locked ("Lucas Sousa" <lucas75@gmail.com>) |
List | pgsql-jdbc |
Please remember to CC the list on any emails. This one is beyond my skill, so hopefully somebody else can help you out. -- Mark Lewis On Tue, 2006-07-11 at 15:23 -0300, Lucas Sousa wrote: > I think that has something to do with the PhantomReferences > > The problem seem to be related with the garbage collector... > > My application force the garbage collector to run periodically. I > stopped that for testing purposes and that locking problem does not > happened for the last hour and a half. > > > > On 7/11/06, Lucas Sousa <lucas75@gmail.com> wrote: > autocommit is off > > the query is a plain "select 1 from tb_1 where a=b and b=c and > c=d" > > where a=b and b=c and c=d is the primary key of the table > it should not last more than millisseconds (in fact doesn't) > but sometimes one of the threads that is executing that sql > seems to stop rigth there waiting for the result. That is why > I set the queryTimeout for 120 seconds, but seems that the > query timeout is not working at all. > > > > On 7/11/06, Mark Lewis <mark.lewis@mir3.com> wrote: > It could possibly be a bug in the driver, but much > more likely it's just > the server waiting on some normal condition. > > What exactly is the query in question? Are you > running with autocommit > on or off? > > -- Mark Lewis > > On Tue, 2006-07-11 at 13:29 -0300, Lucas Sousa wrote: > > 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 by date: