Pgsql jdbc driver 8.3 Build 603: Commit deadlock

Поиск
Список
Период
Сортировка
От Shawn Chasse
Тема Pgsql jdbc driver 8.3 Build 603: Commit deadlock
Дата
Msg-id 1b81b11d0811101054p6aa5e919nbd5146e4c8c9b3a1@mail.gmail.com
обсуждение исходный текст
Ответы Re: Pgsql jdbc driver 8.3 Build 603: Commit deadlock  (Oliver Jowett <oliver@opencloud.com>)
Список pgsql-jdbc
Hi,
I'm running the 8.3 build 603 jdbc4 driver on a windows server machine running postgres 8.3.3, hibernate 3.2, and java 1.6.

Recently I have run into a problem where a commit call in my java code will propogate down to the driver and eventually deadlock waiting for a response. The specific call stack is as follows: 

"Analyzer" daemon prio=6 tid=0x67de4400 nid=0x1414 runnable [0x6890f000..0x6890fc18]
       java.lang.Thread.State: RUNNABLE
            at java.net.SocketInputStream.socketRead0(Native Method)
            at java.net.SocketInputStream.read(SocketInputStream.java:129)
            at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
            at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
            at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
            at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259)
            at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1166)
            at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:351)
                  - locked <0x0a1db010> (a org.postgresql.core.v3.QueryExecutorImpl)
            at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2674)
            at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
            at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
            at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
            at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:92)
            at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
            at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:222)
            at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2229)
            at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2665)
            at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:60)
            at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
            at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
            at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
            at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
            at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
            at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
            at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
            at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
            at com.exagrid.triage.recv.JarBreaker.processCurrentReportSection(JarBreaker.java:390)
            at com.exagrid.triage.recv.JarBreaker.processReportSegments(JarBreaker.java:353)
            at com.exagrid.triage.recv.JarBreaker.saveData(JarBreaker.java:79)
            at com.exagrid.triage.recv.ReportAnalyzer.analyzeReport(ReportAnalyzer.java:70)
            at com.exagrid.triage.threads.AnalyzerInstance.processWorkItem(AnalyzerInstance.java:121)
            at com.exagrid.triage.threads.AnalyzerInstance.run(AnalyzerInstance.java:51)
            at java.lang.Thread.run(Thread.java:619)

I am not sure if the problem is specifically related to the driver, or if it is a postgres problem. I did upgrade from postgres 8.1 to 8.3 and I still have this problem occurring. One option for me to get around this issue is to do a vacuum on the database. following the vacuum I do not see this problem. 

I saw this problem start up unexpectedly, it did not occur alongside an update of my source code so therefore it is hard to attribute it to something that I may have done. There is a bug that seems to follow the same path listed in the postgresql mailing lists:

http://archives.postgresql.org/pgsql-hackers/2006-10/msg00289.php

Shawn Chasse

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

Предыдущее
От: Alexander Panzhin
Дата:
Сообщение: Re: Passing Array from Java to Postgres
Следующее
От: Oliver Jowett
Дата:
Сообщение: Re: Pgsql jdbc driver 8.3 Build 603: Commit deadlock