Hi again,
> -----Ursprüngliche Nachricht-----
> Von: Andrus Adamchik [mailto:[EMAIL PROTECTED]
> Gesendet: Dienstag, 24. April 2007 12:23
> An: [email protected]
> Betreff: Re: postgres, idle in transaction
>
>
> On Apr 24, 2007, at 12:58 PM, Oilid Adsi wrote:
>
> > Normally I thought we can do the workaround with committing every
> > query (method commitChanges in the DataContext) or setting the JDBC-
> > parameter defaultAutoCommit="true". But both of these workarounds
> > didn't work properly.
>
> I am sure they did not. I was surprised when Peter reported that
> 'commitChanges' worked as a workaround. This shouldn't make any
> difference.
>
> > Postgres-JDBC-driver 8.2-504.jdbc3
>
> Worth checking a different version as well (I've see strangest cross-
> version issues with the driver in the past).
>
The postgres mailinglist is sure that this problem/bug was fixed (see
attachment). I also switched to the newest jdbc-version: PostgreSQL 8.3devel
JDBC3 with SSL (build 600).
<< Re JDBC idle in transaction problem.txt >>
>
> >> Also could you possibly switch the DataSource to DBCP [2] and see if
> >> that DBCP DataSource does the right thing?
> > We will do this switch and give feedback.
>
> Please do. This will be an indication of whether we need to fix our
> connection pool or not.
>
Same behaviour and still the same problem with DBCP DataSource ;-(
Sometimes the transaction will be committed sometimes not:
<< postgres_debug_transaction.txt >>
>
> > Why cayenne uses a transaction (BEGIN - COMMIT) for performing a
> > select-query? Is this the useful way as described on this link:
> > http://www.ashtech.net/~syntax/blog/archives/56-Hibernate-and-
> > PostgreSQL-Require-Transactions.html
>
> Main reason is consistency. There can be select queries that are not
> just select (e.g. stored procedure queries that both select and
> update). So Cayenne handles all queries the same way, instead of
> trying to analyze each query coming down the pipe.
>
> Andrus
>
Von: Dave Cramer [EMAIL PROTECTED]
Gesendet: Dienstag, 24. April 2007 14:38
An: Oilid Adsi
Cc: [EMAIL PROTECTED]
Betreff: Re: [JDBC] idle in transaction problem
Hi,
Are you sure you are closing your connections properly ?
The bug has been fixed.
Dave
On 24-Apr-07, at 7:56 AM, Oilid Adsi wrote:
> Hi all,
>
> i have a problem with some connections in "idle in transaction" state,
> wich indicates some transactions not beeing properly closed.
>
> I followed the mailing list and read that this bug should be fixed in
> the newer jdbc driver versions. But i tried out several newer driver
> versions.
> And now I used the newest one 8.3devel (build 600) and still have this
> problem.
>
> What's abound this information from the year in 2004?
> http://jdbc.postgresql.org/changes.html#version_dev302
>
> "Track transaction status and only issue a BEGIN command on the first
> statement executed, not immediately after the previous commit or
> rollback. This should help the long standing, but recently very
> unpopular "idle in transaction" behavior. (jurka)"
>
> The postgres server runs with version 8.1.4
>
> The postgres jdbc debugging shows that the transaction will use BEGIN
> but no COMMIT:
>
> 12:59:53.135 (4) PostgreSQL 8.3devel JDBC3 with SSL (build 600)
> 12:59:53.136 (4) Trying to establish a protocol version 3 connection
> to
> 194.97.110.106:5432
> 12:59:53.137 (4) FE=> StartupPacket(user=whitelabel_service,
> database=vitrado, client_encoding=UNICODE, DateStyle=ISO)
> 12:59:53.138 (4) <=BE AuthenticationReqMD5(salt=0caa6b40)
> 12:59:53.138 (4) FE=>
> Password(md5digest=md55f0de5c331bb8e4658422b78683fc50d)
> 12:59:53.141 (4) <=BE AuthenticationOk
> 12:59:53.141 (4) <=BE ParameterStatus(client_encoding = UNICODE)
> 12:59:53.141 (4) <=BE ParameterStatus(DateStyle = ISO, DMY)
> 12:59:53.141 (4) <=BE ParameterStatus(integer_datetimes = on)
> 12:59:53.141 (4) <=BE ParameterStatus(is_superuser = off)
> 12:59:53.141 (4) <=BE ParameterStatus(server_encoding = UTF8)
> 12:59:53.141 (4) <=BE ParameterStatus(server_version = 8.1.4)
> 12:59:53.141 (4) <=BE ParameterStatus(session_authorization =
> whitelabel_service)
> 12:59:53.141 (4) <=BE ParameterStatus(standard_conforming_strings =
> off)
> 12:59:53.142 (4) <=BE ParameterStatus(TimeZone = Europe/Berlin)
> 12:59:53.142 (4) <=BE BackendKeyData(pid=4123,ckey=1807219524)
> 12:59:53.142 (4) <=BE ReadyForQuery(I)
> 12:59:53.142 (4) compatible = 8.3
> 12:59:53.142 (4) loglevel = 2
> 12:59:53.142 (4) prepare threshold = 5
> 12:59:53.143 (4) simple execute,
> handler=org.postgresql.jdbc2.AbstractJdbc2Statement
> $StatementResultHandl
> [EMAIL PROTECTED], maxRows=0, fetchSize=0, flags=1
> 12:59:53.143 (4) FE=> Parse(stmt=S_1,query="BEGIN",oids={})
> 12:59:53.143 (4) FE=> Bind(stmt=S_1,portal=null)
> 12:59:53.143 (4) FE=> Execute(portal=null,limit=0)
> 12:59:53.143 (4) FE=> Parse(stmt=null,query="SELECT t0.angelegt,
> t0.bezeichnung, t0.nochange_allowed, t0.partner_aktiv, t0.partner_id,
> t0.produktanbieter_akt iv, t0.produkte_id, t0.werbearten_id, t0.id
> FROM public.tracking t0 LIMIT 2",oids={})
> 12:59:53.143 (4) FE=> Bind(stmt=null,portal=null)
> 12:59:53.143 (4) FE=> Describe(portal=null)
> 12:59:53.143 (4) FE=> Execute(portal=null,limit=0)
> 12:59:53.143 (4) FE=> Sync
> 12:59:53.148 (4) <=BE ParseComplete [S_1]
> 12:59:53.148 (4) <=BE BindComplete [null]
> 12:59:53.148 (4) <=BE CommandStatus(BEGIN)
> 12:59:53.148 (4) <=BE ParseComplete [null]
> 12:59:53.148 (4) <=BE BindComplete [null]
> 12:59:53.148 (4) <=BE RowDescription(9)
> 12:59:53.148 (4) <=BE DataRow
> 12:59:53.148 (4) <=BE DataRow
> 12:59:53.148 (4) <=BE CommandStatus(SELECT)
> 12:59:53.149 (4) <=BE ReadyForQuery(T)
>
> For me this is still a bug, isn't it?
>
> Best regards
> Oilid
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to [EMAIL PROTECTED] so that
> your
> message can get through to the mailing list cleanly
15:31:05.990 (1) PostgreSQL 8.3devel JDBC3 with SSL (build 600)
15:31:05.998 (1) Trying to establish a protocol version 3 connection to
194.97.110.106:5432
15:31:06.007 (1) FE=> StartupPacket(user=whitelabel_service, database=vitrado,
client_encoding=UNICODE, DateStyle=ISO)
15:31:06.009 (1) <=BE AuthenticationReqMD5(salt=53855318)
15:31:06.010 (1) FE=> Password(md5digest=md5dc90b78c11e3b15462bffbaa05687497)
15:31:06.014 (1) <=BE AuthenticationOk
15:31:06.029 (1) <=BE ParameterStatus(client_encoding = UNICODE)
15:31:06.029 (1) <=BE ParameterStatus(DateStyle = ISO, DMY)
15:31:06.029 (1) <=BE ParameterStatus(integer_datetimes = on)
15:31:06.029 (1) <=BE ParameterStatus(is_superuser = off)
15:31:06.029 (1) <=BE ParameterStatus(server_encoding = UTF8)
15:31:06.029 (1) <=BE ParameterStatus(server_version = 8.1.4)
15:31:06.029 (1) <=BE ParameterStatus(session_authorization =
whitelabel_service)
15:31:06.030 (1) <=BE ParameterStatus(standard_conforming_strings = off)
15:31:06.030 (1) <=BE ParameterStatus(TimeZone = Europe/Berlin)
15:31:06.030 (1) <=BE BackendKeyData(pid=5503,ckey=1736595556)
15:31:06.030 (1) <=BE ReadyForQuery(I)
15:31:06.030 (1) compatible = 8.3
15:31:06.030 (1) loglevel = 2
15:31:06.030 (1) prepare threshold = 5
getConnection returning driver[className=org.postgresql.Driver,[EMAIL PROTECTED]
15:31:06.075 (1) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=17
15:31:06.075 (1) FE=> Parse(stmt=null,query="SHOW TRANSACTION ISOLATION
LEVEL",oids={})
15:31:06.075 (1) FE=> Bind(stmt=null,portal=null)
15:31:06.075 (1) FE=> Describe(portal=null)
15:31:06.075 (1) FE=> Execute(portal=null,limit=0)
15:31:06.075 (1) FE=> Sync
15:31:06.076 (1) <=BE ParseComplete [null]
15:31:06.076 (1) <=BE BindComplete [null]
15:31:06.077 (1) <=BE RowDescription(1)
15:31:06.078 (1) <=BE DataRow
15:31:06.078 (1) <=BE CommandStatus(SHOW)
15:31:06.093 (1) <=BE ReadyForQuery(I)
15:31:06.093 (1) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=23
15:31:06.093 (1) FE=> Parse(stmt=null,query="SET SESSION CHARACTERISTICS AS
TRANSACTION ISOLATION LEVEL SERIALIZABLE",oids={})
15:31:06.093 (1) FE=> Bind(stmt=null,portal=null)
15:31:06.094 (1) FE=> Execute(portal=null,limit=1)
15:31:06.094 (1) FE=> Sync
15:31:06.096 (1) <=BE ParseComplete [null]
15:31:06.096 (1) <=BE BindComplete [null]
15:31:06.096 (1) <=BE CommandStatus(SET)
15:31:06.096 (1) <=BE ReadyForQuery(I)
15:31:06.135 (1) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=1
15:31:06.136 (1) FE=> Parse(stmt=S_1,query="BEGIN",oids={})
15:31:06.136 (1) FE=> Bind(stmt=S_1,portal=null)
15:31:06.136 (1) FE=> Execute(portal=null,limit=0)
15:31:06.137 (1) FE=> Parse(stmt=null,query="SELECT t0.angelegt,
t0.bezeichnung, t0.nochange_allowed, t0.partner_aktiv, t0.partner_id,
t0.produktanbieter_akt
iv, t0.produkte_id, t0.werbearten_id, t0.id FROM public.tracking t0 LIMIT
2",oids={})
15:31:06.137 (1) FE=> Bind(stmt=null,portal=null)
15:31:06.137 (1) FE=> Describe(portal=null)
15:31:06.137 (1) FE=> Execute(portal=null,limit=0)
15:31:06.137 (1) FE=> Sync
15:31:06.141 (1) <=BE ParseComplete [S_1]
15:31:06.141 (1) <=BE BindComplete [null]
15:31:06.141 (1) <=BE CommandStatus(BEGIN)
15:31:06.142 (1) <=BE ParseComplete [null]
15:31:06.142 (1) <=BE BindComplete [null]
15:31:06.142 (1) <=BE RowDescription(9)
15:31:06.142 (1) <=BE DataRow
15:31:06.142 (1) <=BE DataRow
15:31:06.142 (1) <=BE CommandStatus(SELECT)
15:31:06.142 (1) <=BE ReadyForQuery(T)
15:33:08.244 (2) PostgreSQL 8.3devel JDBC3 with SSL (build 600)
15:33:08.244 (2) Trying to establish a protocol version 3 connection to
194.97.110.106:5432
15:33:08.245 (2) FE=> StartupPacket(user=whitelabel_service, database=vitrado,
client_encoding=UNICODE, DateStyle=ISO)
15:33:08.248 (2) <=BE AuthenticationReqMD5(salt=5578a668)
15:33:08.248 (2) FE=> Password(md5digest=md543adaaf299bbf604a883c13f60adb698)
15:33:08.255 (2) <=BE AuthenticationOk
15:33:08.256 (2) <=BE ParameterStatus(client_encoding = UNICODE)
15:33:08.256 (2) <=BE ParameterStatus(DateStyle = ISO, DMY)
15:33:08.256 (2) <=BE ParameterStatus(integer_datetimes = on)
15:33:08.256 (2) <=BE ParameterStatus(is_superuser = off)
15:33:08.256 (2) <=BE ParameterStatus(server_encoding = UTF8)
15:33:08.256 (2) <=BE ParameterStatus(server_version = 8.1.4)
15:33:08.256 (2) <=BE ParameterStatus(session_authorization =
whitelabel_service)
15:33:08.257 (2) <=BE ParameterStatus(standard_conforming_strings = off)
15:33:08.257 (2) <=BE ParameterStatus(TimeZone = Europe/Berlin)
15:33:08.257 (2) <=BE BackendKeyData(pid=5850,ckey=143834877)
15:33:08.257 (2) <=BE ReadyForQuery(I)
15:33:08.257 (2) compatible = 8.3
15:33:08.257 (2) loglevel = 2
15:33:08.257 (2) prepare threshold = 5
getConnection returning driver[className=org.postgresql.Driver,[EMAIL PROTECTED]
15:33:08.258 (2) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=17
15:33:08.258 (2) FE=> Parse(stmt=null,query="SHOW TRANSACTION ISOLATION
LEVEL",oids={})
15:33:08.258 (2) FE=> Bind(stmt=null,portal=null)
15:33:08.258 (2) FE=> Describe(portal=null)
15:33:08.258 (2) FE=> Execute(portal=null,limit=0)
15:33:08.258 (2) FE=> Sync
15:33:08.259 (2) <=BE ParseComplete [null]
15:33:08.259 (2) <=BE BindComplete [null]
15:33:08.259 (2) <=BE RowDescription(1)
15:33:08.260 (2) <=BE DataRow
15:33:08.260 (2) <=BE CommandStatus(SHOW)
15:33:08.260 (2) <=BE ReadyForQuery(I)
15:33:08.260 (2) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=23
15:33:08.260 (2) FE=> Parse(stmt=null,query="SET SESSION CHARACTERISTICS AS
TRANSACTION ISOLATION LEVEL SERIALIZABLE",oids={})
15:33:08.260 (2) FE=> Bind(stmt=null,portal=null)
15:33:08.260 (2) FE=> Execute(portal=null,limit=1)
15:33:08.260 (2) FE=> Sync
15:33:08.261 (2) <=BE ParseComplete [null]
15:33:08.261 (2) <=BE BindComplete [null]
15:33:08.261 (2) <=BE CommandStatus(SET)
15:33:08.261 (2) <=BE ReadyForQuery(I)
15:33:08.267 (2) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=1
15:33:08.267 (2) FE=> Parse(stmt=S_1,query="BEGIN",oids={})
15:33:08.268 (2) FE=> Bind(stmt=S_1,portal=null)
15:33:08.268 (2) FE=> Execute(portal=null,limit=0)
15:33:08.268 (2) FE=> Parse(stmt=null,query="SELECT wm.views, wm.clicks, datum
FROM (
SELECT sum(prepare.views) AS views, sum(prepare.clicks) AS clicks,
prepare.datum AS datum FROM (
SELECT tracking_id, summe_views AS views, summe_clicks AS clicks,
datum FROM statistik_partner_tag WHERE partner_id = 783028 AND
(werbearten_id = 3 OR 0 = 3) AND date_trunc('MONTH', datum) =
date_trunc('MONTH', 'Sat Sep 30 01:00:00 CEST 2006'::date)
) AS prepare GROUP BY prepare.datum
) AS wm ORDER BY datum",oids={})
15:33:08.268 (2) FE=> Bind(stmt=null,portal=null)
15:33:08.268 (2) FE=> Describe(portal=null)
15:33:08.268 (2) FE=> Execute(portal=null,limit=0)
15:33:08.268 (2) FE=> Sync
15:33:28.451 (2) <=BE ParseComplete [S_1]
15:33:28.451 (2) <=BE BindComplete [null]
15:33:28.451 (2) <=BE CommandStatus(BEGIN)
15:33:28.452 (2) <=BE ParseComplete [null]
15:33:28.452 (2) <=BE BindComplete [null]
15:33:28.452 (2) <=BE RowDescription(3)
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.452 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.453 (2) <=BE DataRow
15:33:28.454 (2) <=BE DataRow
15:33:28.454 (2) <=BE DataRow
15:33:28.454 (2) <=BE DataRow
15:33:28.454 (2) <=BE DataRow
15:33:28.454 (2) <=BE DataRow
15:33:28.454 (2) <=BE DataRow
15:33:28.454 (2) <=BE CommandStatus(SELECT)
15:33:28.454 (2) <=BE ReadyForQuery(T)
15:33:28.461 (2) simple execute, [EMAIL PROTECTED], maxRows=0, fetchSize=0,
flags=22
15:33:28.461 (2) FE=> Parse(stmt=S_2,query="COMMIT",oids={})
15:33:28.461 (2) FE=> Bind(stmt=S_2,portal=null)
15:33:28.461 (2) FE=> Execute(portal=null,limit=1)
15:33:28.461 (2) FE=> Sync
15:33:28.462 (2) <=BE ParseComplete [S_2]
15:33:28.462 (2) <=BE BindComplete [null]
15:33:28.462 (2) <=BE CommandStatus(COMMIT)
15:33:28.462 (2) <=BE ReadyForQuery(I)