

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
6 messages in org.postgresql.pgsql-jdbcRe: executeQuery Locked| From | Sent On | Attachments |
|---|---|---|
| Lucas Sousa | Jul 11, 2006 9:29 am | |
| Mark Lewis | Jul 11, 2006 10:07 am | |
| Mark Lewis | Jul 11, 2006 11:26 am | |
| Oliver Jowett | Jul 11, 2006 10:08 pm | |
| Lucas Sousa | Jul 12, 2006 4:44 am | |
| Oliver Jowett | Jul 12, 2006 2:42 pm |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: executeQuery Locked | Actions... |
|---|---|---|
| From: | Mark Lewis (mark...@mir3.com) | |
| Date: | Jul 11, 2006 11:26:48 am | |
| List: | org.postgresql.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 <luca...@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...@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? > >







