From: | Marcin Waldowski <M(dot)Waldowski(at)sulechow(dot)net> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Locking on PGStream.ReceiveChar(PGStream.java:256) |
Date: | 2006-12-01 13:16:10 |
Message-ID: | 45702B1A.4030401@sulechow.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Hello.
JDBC version: 8.1-407 JDBC 3
<http://jdbc.postgresql.org/download/postgresql-8.1-407.jdbc3.jar>
PostgreSQL version: 8.1.5-1 for Windows
Database encoding: UTF8
I observed a lock at at
org.postgresql.core.PGStream.ReceiveChar(PGStream.java:256)
Thread dump:
"Thread-1" prio=6 tid=0x02ea9008 nid=0x638 runnable [0x0388f000..0x0388f9e8]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
- locked <0x10bc1d48> (a java.io.BufferedInputStream)
at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:256)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1163)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
- locked <0x10bc1d98> (a org.postgresql.core.v3.QueryExecutorImpl)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:340)
at
org.postgresql.jdbc2.AbstractJdbc2Connection.execSQLUpdate(AbstractJdbc2Connection.java:217)
at
org.postgresql.jdbc2.AbstractJdbc2Connection.setTransactionIsolation(AbstractJdbc2Connection.java:737)
It looks like it wait forever for next char from database (but it never
comes) at jdbc driver code:
public int ReceiveChar() throws IOException
{
int c = pg_input.read();
if (c < 0)
throw new EOFException();
return c;
}
It happens after about hour of our perfomance test (high workload - 50
threads are executing various short operations on database)
In our aplication it lock at following code:
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
which is executed after taking connection from pool. It is possible that
this code is executing serveral times for the same connection.
What can I do to avoid this problem?
Regards
Marcin Waldowski
From | Date | Subject | |
---|---|---|---|
Next Message | Kris Jurka | 2006-12-01 13:38:58 | Re: PostgreSQL 8.2rc1 with JDBC/HEAD |
Previous Message | Kris Jurka | 2006-12-01 13:05:09 | 8.2 driver release |