Received: from maia.hub.org (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 676F96330EE for ; Wed, 3 Mar 2010 11:54:08 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 29267-03 for ; Wed, 3 Mar 2010 15:53:47 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from smadev.internal.net (host3.dynacom.ondsl.gr [62.103.35.211]) by mail.postgresql.org (Postfix) with ESMTP id 4219A632E91 for ; Wed, 3 Mar 2010 11:53:44 -0400 (AST) Received: from smadev.internal.net (localhost [127.0.0.1]) by smadev.internal.net (8.14.2/8.14.2) with ESMTP id o23FrH4M045318; Wed, 3 Mar 2010 17:53:17 +0200 (EET) (envelope-from achill@matrix.gatewaynet.com) Received: from localhost (localhost [[UNIX: localhost]]) by smadev.internal.net (8.14.2/8.14.2/Submit) id o23Fr4AU045315; Wed, 3 Mar 2010 17:53:04 +0200 (EET) (envelope-from achill@matrix.gatewaynet.com) From: Achilleas Mantzios Organization: Dynacom Tankers Mgmt To: pgsql-jdbc@postgresql.org Subject: Re: Very Dangerous bug in XA connection pooling and SL EJBs with jboss-4.2.3 & latest postgresql-8.4-701.jdbc3.jar Date: Wed, 3 Mar 2010 17:53:03 +0200 User-Agent: KMail/1.9.7 Cc: Heikki Linnakangas , jboss-user@lists.jboss.org References: <201003011731.15724.achill@matrix.gatewaynet.com> <201003031257.31670.achill@matrix.gatewaynet.com> <4B8E5530.5040901@enterprisedb.com> In-Reply-To: <4B8E5530.5040901@enterprisedb.com> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_gXojL18J67N9GLl" Message-Id: <201003031753.04467.achill@matrix.gatewaynet.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.383 tagged_above=-10 required=5 tests=AWL=-0.643, BAYES_20=-0.74 X-Spam-Level: X-Archive-Number: 201003/13 X-Sequence-Number: 20353 --Boundary-00=_gXojL18J67N9GLl Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Your test case worked as you described. I send you an ear app which you can deploy in a jboss-4.2.x, Postgresql mus= t be defined as pgsql=20 in xa-datasource inside jboss's deploy dir. You can go to the app by hitting: http://localhost/xabug and looking at the= directions there. Again, thanx for caring, and lets see if you can figure smth out off this. =CE=A3=CF=84=CE=B9=CF=82 Wednesday 03 March 2010 14:25:20 =CE=BF/=CE=B7 Hei= kki Linnakangas =CE=AD=CE=B3=CF=81=CE=B1=CF=88=CE=B5: > Thanks! >=20 > I tried to reproduce that with the attached test program. It's doing > essentially the same thing you did, right? The program works fine here, > producing a log identical to what you sent, except that I'm not seeing > the incorrect behavior you're seeing; the INSERT in the 2nd java block > is wrapped with BEGIN/COMMIT just like the 1st one. >=20 > I don't understand why we're seeing different behavior with what should > be the same sequence of calls as far as the driver is concerned. Can you > try the attached patch, rerun the test case, and send over the logs > again? The patch adds some logging to see all the setAutoCommit() and > commit/rollback calls, maybe that sheds some light on this. >=20 > BTW, you are using a recent version of the driver, right? There was some > fixes to setAutoCommit() and XA interactions a few years ago. >=20 > Achilleas Mantzios wrote: > > Thanx > > Here are the logs: > >=20 > > call to the ejb > > =3D=3D=3D=3D=3D=3D=3D=3D=3D > > 2010-03-03 12:47:57,177 INFO [STDOUT] 12:47:57.177 (2) XAResource 1291= 479: starting transaction xid =3D < 131075, 26, 24, 1-a09c8d8:d10e:4b8e3e06= :32a09c8d8:d10e:4b8e3e06:34 > > > 2010-03-03 12:47:57,181 INFO [STDOUT] 12:47:57.180 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandl= er@dd0f87, maxRows=3D0, fetchSize=3D0, flags=3D1 > > 2010-03-03 12:47:57,184 INFO [STDOUT] 12:47:57.183 (2) FE=3D> Parse(s= tmt=3DS_1,query=3D"BEGIN",oids=3D{}) > > 2010-03-03 12:47:57,185 INFO [STDOUT] 12:47:57.184 (2) FE=3D> Bind(st= mt=3DS_1,portal=3Dnull) > > 2010-03-03 12:47:57,185 INFO [STDOUT] 12:47:57.185 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:47:57,186 INFO [STDOUT] 12:47:57.186 (2) FE=3D> Parse(s= tmt=3Dnull,query=3D"select apptblidval,colname from status where assettable= =3D$1 and assetidval=3D$2 and appname=3D$3 and apptblname=3D$4 and status= =3D$5 and isvalid order by apptblidval",oids=3D{1043,23,1043,1043,1043}) > > 2010-03-03 12:47:57,188 INFO [STDOUT] 12:47:57.187 (2) FE=3D> Bind(st= mt=3Dnull,portal=3Dnull,$1=3D<'mariner'>,$2=3D<'14173'>,$3=3D<'Crew'>,$4=3D= <'marinercourses'>,$5=3D<'warn'>) > > 2010-03-03 12:47:57,189 INFO [STDOUT] 12:47:57.189 (2) FE=3D> Describ= e(portal=3Dnull) > > 2010-03-03 12:47:57,190 INFO [STDOUT] 12:47:57.190 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:47:57,192 INFO [STDOUT] 12:47:57.192 (2) FE=3D> Sync > > 2010-03-03 12:47:57,199 INFO [STDOUT] 12:47:57.199 (2) <=3DBE ParseCo= mplete [S_1] > > 2010-03-03 12:47:57,200 INFO [STDOUT] 12:47:57.200 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:47:57,200 INFO [STDOUT] 12:47:57.200 (2) <=3DBE Command= Status(BEGIN) > > 2010-03-03 12:47:57,201 INFO [STDOUT] 12:47:57.201 (2) <=3DBE ParseCo= mplete [null] > > 2010-03-03 12:47:57,202 INFO [STDOUT] 12:47:57.201 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:47:57,202 INFO [STDOUT] 12:47:57.202 (2) <=3DBE RowDesc= ription(2) > > 2010-03-03 12:47:57,203 INFO [STDOUT] 12:47:57.203 (2) <=3DBE Command= Status(SELECT) > > 2010-03-03 12:47:57,203 INFO [STDOUT] 12:47:57.203 (2) <=3DBE ReadyFo= rQuery(T) > > 2010-03-03 12:47:57,206 INFO [STDOUT] 12:47:57.204 (2) XAResource 1291= 479: ending transaction xid =3D < 131075, 26, 24, 1-a09c8d8:d10e:4b8e3e06:3= 2a09c8d8:d10e:4b8e3e06:34 > > > 2010-03-03 12:47:57,211 INFO [STDOUT] 12:47:57.211 (2) XAResource 1291= 479: committing xid =3D < 131075, 26, 24, 1-a09c8d8:d10e:4b8e3e06:32a09c8d8= :d10e:4b8e3e06:34 > (one phase) > > 2010-03-03 12:47:57,217 INFO [STDOUT] 12:47:57.217 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Connection$TransactionCommandH= andler@1a9b034, maxRows=3D0, fetchSize=3D0, flags=3D22 > > 2010-03-03 12:47:57,225 INFO [STDOUT] 12:47:57.225 (2) FE=3D> Parse(s= tmt=3DS_2,query=3D"COMMIT",oids=3D{}) > > 2010-03-03 12:47:57,227 INFO [STDOUT] 12:47:57.227 (2) FE=3D> Bind(st= mt=3DS_2,portal=3Dnull) > > 2010-03-03 12:47:57,229 INFO [STDOUT] 12:47:57.228 (2) FE=3D> Execute= (portal=3Dnull,limit=3D1) > > 2010-03-03 12:47:57,237 INFO [STDOUT] 12:47:57.237 (2) FE=3D> Sync > > 2010-03-03 12:47:57,246 INFO [STDOUT] 12:47:57.246 (2) <=3DBE ParseCo= mplete [S_2] > > 2010-03-03 12:47:57,248 INFO [STDOUT] 12:47:57.248 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:47:57,250 INFO [STDOUT] 12:47:57.250 (2) <=3DBE Command= Status(COMMIT) > > 2010-03-03 12:47:57,251 INFO [STDOUT] 12:47:57.251 (2) <=3DBE ReadyFo= rQuery(I) > >=20 > >=20 > > call to the java block - the one with con.setAutocommit(false) - (as we= see below its fine the very first time) > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > 2010-03-03 12:49:31,892 INFO [STDOUT] 12:49:31.892 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandl= er@19331eb, maxRows=3D0, fetchSize=3D0, flags=3D1 > > 2010-03-03 12:49:31,893 INFO [STDOUT] 12:49:31.893 (2) FE=3D> Bind(st= mt=3DS_1,portal=3Dnull) > > 2010-03-03 12:49:31,895 INFO [STDOUT] 12:49:31.895 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:49:31,896 INFO [STDOUT] 12:49:31.895 (2) FE=3D> Parse(s= tmt=3Dnull,query=3D"select now()",oids=3D{}) > > 2010-03-03 12:49:31,897 INFO [STDOUT] 12:49:31.897 (2) FE=3D> Bind(st= mt=3Dnull,portal=3Dnull) > > 2010-03-03 12:49:31,898 INFO [STDOUT] 12:49:31.898 (2) FE=3D> Describ= e(portal=3Dnull) > > 2010-03-03 12:49:31,899 INFO [STDOUT] 12:49:31.899 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:49:31,901 INFO [STDOUT] 12:49:31.901 (2) FE=3D> Sync > > 2010-03-03 12:49:31,903 INFO [STDOUT] 12:49:31.902 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:49:31,904 INFO [STDOUT] 12:49:31.904 (2) <=3DBE Command= Status(BEGIN) > > 2010-03-03 12:49:31,904 INFO [STDOUT] 12:49:31.904 (2) <=3DBE ParseCo= mplete [null] > > 2010-03-03 12:49:31,905 INFO [STDOUT] 12:49:31.905 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:49:31,905 INFO [STDOUT] 12:49:31.905 (2) <=3DBE RowDesc= ription(1) > > 2010-03-03 12:49:31,906 INFO [STDOUT] 12:49:31.906 (2) <=3DBE DataRow > > 2010-03-03 12:49:31,907 INFO [STDOUT] 12:49:31.907 (2) <=3DBE Command= Status(SELECT) > > 2010-03-03 12:49:31,908 INFO [STDOUT] 12:49:31.908 (2) <=3DBE ReadyFo= rQuery(T) > > 2010-03-03 12:49:31,909 INFO [STDOUT] 12:49:31.909 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Connection$TransactionCommandH= andler@1d7ce63, maxRows=3D0, fetchSize=3D0, flags=3D22 > > 2010-03-03 12:49:31,910 INFO [STDOUT] 12:49:31.910 (2) FE=3D> Bind(st= mt=3DS_2,portal=3Dnull) > > 2010-03-03 12:49:31,911 INFO [STDOUT] 12:49:31.911 (2) FE=3D> Execute= (portal=3Dnull,limit=3D1) > > 2010-03-03 12:49:31,913 INFO [STDOUT] 12:49:31.912 (2) FE=3D> Sync > > 2010-03-03 12:49:31,915 INFO [STDOUT] 12:49:31.915 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:49:31,916 INFO [STDOUT] 12:49:31.916 (2) <=3DBE Command= Status(COMMIT) > > 2010-03-03 12:49:31,917 INFO [STDOUT] 12:49:31.917 (2) <=3DBE ReadyFo= rQuery(I) > >=20 > > call to the ejb (again - 2nd time) > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > 2010-03-03 12:50:24,246 INFO [STDOUT] 12:50:24.245 (2) XAResource 1291= 479: starting transaction xid =3D < 131075, 26, 24, 1-a09c8d8:d10e:4b8e3e06= :3ca09c8d8:d10e:4b8e3e06:3e > > > 2010-03-03 12:50:24,248 INFO [STDOUT] 12:50:24.247 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandl= er@a06e8d, maxRows=3D0, fetchSize=3D0, flags=3D1 > > 2010-03-03 12:50:24,248 INFO [STDOUT] 12:50:24.248 (2) FE=3D> Bind(st= mt=3DS_1,portal=3Dnull) > > 2010-03-03 12:50:24,249 INFO [STDOUT] 12:50:24.249 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:50:24,249 INFO [STDOUT] 12:50:24.249 (2) FE=3D> Parse(s= tmt=3Dnull,query=3D"select apptblidval,colname from status where assettable= =3D$1 and assetidval=3D$2 and appname=3D$3 and apptblname=3D$4 and status= =3D$5 and isvalid order by apptblidval",oids=3D{1043,23,1043,1043,1043}) > > 2010-03-03 12:50:24,250 INFO [STDOUT] 12:50:24.250 (2) FE=3D> Bind(st= mt=3Dnull,portal=3Dnull,$1=3D<'mariner'>,$2=3D<'14173'>,$3=3D<'Crew'>,$4=3D= <'marinercourses'>,$5=3D<'warn'>) > > 2010-03-03 12:50:24,251 INFO [STDOUT] 12:50:24.251 (2) FE=3D> Describ= e(portal=3Dnull) > > 2010-03-03 12:50:24,252 INFO [STDOUT] 12:50:24.252 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:50:24,253 INFO [STDOUT] 12:50:24.252 (2) FE=3D> Sync > > 2010-03-03 12:50:24,255 INFO [STDOUT] 12:50:24.255 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:50:24,256 INFO [STDOUT] 12:50:24.256 (2) <=3DBE Command= Status(BEGIN) > > 2010-03-03 12:50:24,257 INFO [STDOUT] 12:50:24.257 (2) <=3DBE ParseCo= mplete [null] > > 2010-03-03 12:50:24,258 INFO [STDOUT] 12:50:24.258 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:50:24,260 INFO [STDOUT] 12:50:24.260 (2) <=3DBE RowDesc= ription(2) > > 2010-03-03 12:50:24,261 INFO [STDOUT] 12:50:24.261 (2) <=3DBE Command= Status(SELECT) > > 2010-03-03 12:50:24,262 INFO [STDOUT] 12:50:24.262 (2) <=3DBE ReadyFo= rQuery(T) > > 2010-03-03 12:50:24,263 INFO [STDOUT] 12:50:24.262 (2) XAResource 1291= 479: ending transaction xid =3D < 131075, 26, 24, 1-a09c8d8:d10e:4b8e3e06:3= ca09c8d8:d10e:4b8e3e06:3e > > > 2010-03-03 12:50:24,264 INFO [STDOUT] 12:50:24.263 (2) XAResource 1291= 479: committing xid =3D < 131075, 26, 24, 1-a09c8d8:d10e:4b8e3e06:3ca09c8d8= :d10e:4b8e3e06:3e > (one phase) > > 2010-03-03 12:50:24,265 INFO [STDOUT] 12:50:24.265 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Connection$TransactionCommandH= andler@1217fef, maxRows=3D0, fetchSize=3D0, flags=3D22 > > 2010-03-03 12:50:24,266 INFO [STDOUT] 12:50:24.266 (2) FE=3D> Bind(st= mt=3DS_2,portal=3Dnull) > > 2010-03-03 12:50:24,267 INFO [STDOUT] 12:50:24.267 (2) FE=3D> Execute= (portal=3Dnull,limit=3D1) > > 2010-03-03 12:50:24,269 INFO [STDOUT] 12:50:24.269 (2) FE=3D> Sync > > 2010-03-03 12:50:24,272 INFO [STDOUT] 12:50:24.272 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:50:24,273 INFO [STDOUT] 12:50:24.273 (2) <=3DBE Command= Status(COMMIT) > > 2010-03-03 12:50:24,274 INFO [STDOUT] 12:50:24.274 (2) <=3DBE ReadyFo= rQuery(I) > >=20 > > call to the java block - the one with con.setAutocommit(false) - again = =2D 2nd time - this time we have a problem > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > 2010-03-03 12:51:30,426 INFO [STDOUT] 12:51:30.426 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandl= er@13b64eb, maxRows=3D0, fetchSize=3D0, flags=3D17 > > 2010-03-03 12:51:30,427 INFO [STDOUT] 12:51:30.427 (2) FE=3D> Parse(s= tmt=3Dnull,query=3D"select now()",oids=3D{}) > > 2010-03-03 12:51:30,428 INFO [STDOUT] 12:51:30.428 (2) FE=3D> Bind(st= mt=3Dnull,portal=3Dnull) > > 2010-03-03 12:51:30,429 INFO [STDOUT] 12:51:30.429 (2) FE=3D> Describ= e(portal=3Dnull) > > 2010-03-03 12:51:30,429 INFO [STDOUT] 12:51:30.429 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:51:30,430 INFO [STDOUT] 12:51:30.430 (2) FE=3D> Sync > > 2010-03-03 12:51:30,433 INFO [STDOUT] 12:51:30.433 (2) <=3DBE ParseCo= mplete [null] > > 2010-03-03 12:51:30,434 INFO [STDOUT] 12:51:30.434 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:51:30,435 INFO [STDOUT] 12:51:30.435 (2) <=3DBE RowDesc= ription(1) > > 2010-03-03 12:51:30,436 INFO [STDOUT] 12:51:30.436 (2) <=3DBE DataRow > > 2010-03-03 12:51:30,437 INFO [STDOUT] 12:51:30.437 (2) <=3DBE Command= Status(SELECT) > > 2010-03-03 12:51:30,440 INFO [STDOUT] 12:51:30.440 (2) <=3DBE ReadyFo= rQuery(I) > >=20 > > call to a java block with con.setAutocommit(true) > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > > 2010-03-03 12:55:42,028 INFO [STDOUT] 12:55:42.028 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandl= er@18526aa, maxRows=3D0, fetchSize=3D0, flags=3D17 > > 2010-03-03 12:55:42,029 INFO [STDOUT] 12:55:42.028 (2) FE=3D> Parse(s= tmt=3Dnull,query=3D"select now()",oids=3D{}) > > 2010-03-03 12:55:42,029 INFO [STDOUT] 12:55:42.029 (2) FE=3D> Bind(st= mt=3Dnull,portal=3Dnull) > > 2010-03-03 12:55:42,030 INFO [STDOUT] 12:55:42.030 (2) FE=3D> Describ= e(portal=3Dnull) > > 2010-03-03 12:55:42,030 INFO [STDOUT] 12:55:42.030 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:55:42,030 INFO [STDOUT] 12:55:42.030 (2) FE=3D> Sync > > 2010-03-03 12:55:42,032 INFO [STDOUT] 12:55:42.032 (2) <=3DBE ParseCo= mplete [null] > > 2010-03-03 12:55:42,033 INFO [STDOUT] 12:55:42.033 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:55:42,034 INFO [STDOUT] 12:55:42.034 (2) <=3DBE RowDesc= ription(1) > > 2010-03-03 12:55:42,035 INFO [STDOUT] 12:55:42.035 (2) <=3DBE DataRow > > 2010-03-03 12:55:42,036 INFO [STDOUT] 12:55:42.035 (2) <=3DBE Command= Status(SELECT) > > 2010-03-03 12:55:42,036 INFO [STDOUT] 12:55:42.036 (2) <=3DBE ReadyFo= rQuery(I) > >=20 > > call to the java block - the one with con.setAutocommit(false) - again = =2D 3rd time - this time its ok again > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > 2010-03-03 12:56:51,374 INFO [STDOUT] 12:56:51.374 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandl= er@14a5594, maxRows=3D0, fetchSize=3D0, flags=3D1 > > 2010-03-03 12:56:51,378 INFO [STDOUT] 12:56:51.378 (2) FE=3D> Bind(st= mt=3DS_1,portal=3Dnull) > > 2010-03-03 12:56:51,380 INFO [STDOUT] 12:56:51.380 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:56:51,385 INFO [STDOUT] 12:56:51.385 (2) FE=3D> Parse(s= tmt=3Dnull,query=3D"select now()",oids=3D{}) > > 2010-03-03 12:56:51,387 INFO [STDOUT] 12:56:51.387 (2) FE=3D> Bind(st= mt=3Dnull,portal=3Dnull) > > 2010-03-03 12:56:51,388 INFO [STDOUT] 12:56:51.388 (2) FE=3D> Describ= e(portal=3Dnull) > > 2010-03-03 12:56:51,390 INFO [STDOUT] 12:56:51.390 (2) FE=3D> Execute= (portal=3Dnull,limit=3D0) > > 2010-03-03 12:56:51,391 INFO [STDOUT] 12:56:51.391 (2) FE=3D> Sync > > 2010-03-03 12:56:51,393 INFO [STDOUT] 12:56:51.393 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:56:51,395 INFO [STDOUT] 12:56:51.395 (2) <=3DBE Command= Status(BEGIN) > > 2010-03-03 12:56:51,397 INFO [STDOUT] 12:56:51.397 (2) <=3DBE ParseCo= mplete [null] > > 2010-03-03 12:56:51,398 INFO [STDOUT] 12:56:51.398 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:56:51,399 INFO [STDOUT] 12:56:51.399 (2) <=3DBE RowDesc= ription(1) > > 2010-03-03 12:56:51,400 INFO [STDOUT] 12:56:51.400 (2) <=3DBE DataRow > > 2010-03-03 12:56:51,402 INFO [STDOUT] 12:56:51.402 (2) <=3DBE Command= Status(SELECT) > > 2010-03-03 12:56:51,404 INFO [STDOUT] 12:56:51.404 (2) <=3DBE ReadyFo= rQuery(T) > > 2010-03-03 12:56:51,406 INFO [STDOUT] 12:56:51.406 (2) simple execute,= handler=3Dorg.postgresql.jdbc2.AbstractJdbc2Connection$TransactionCommandH= andler@13d3f62, maxRows=3D0, fetchSize=3D0, flags=3D22 > > 2010-03-03 12:56:51,409 INFO [STDOUT] 12:56:51.409 (2) FE=3D> Bind(st= mt=3DS_2,portal=3Dnull) > > 2010-03-03 12:56:51,411 INFO [STDOUT] 12:56:51.411 (2) FE=3D> Execute= (portal=3Dnull,limit=3D1) > > 2010-03-03 12:56:51,413 INFO [STDOUT] 12:56:51.413 (2) FE=3D> Sync > > 2010-03-03 12:56:51,417 INFO [STDOUT] 12:56:51.417 (2) <=3DBE BindCom= plete [null] > > 2010-03-03 12:56:51,419 INFO [STDOUT] 12:56:51.418 (2) <=3DBE Command= Status(COMMIT) > > 2010-03-03 12:56:51,421 INFO [STDOUT] 12:56:51.421 (2) <=3DBE ReadyFo= rQuery(I) > >=20 > > =CE=A3=CF=84=CE=B9=CF=82 Wednesday 03 March 2010 12:30:37 =CE=BF/=CE=B7= Heikki Linnakangas =CE=AD=CE=B3=CF=81=CE=B1=CF=88=CE=B5: > >> Achilleas Mantzios wrote: > >>> =CE=A3=CF=84=CE=B9=CF=82 Wednesday 03 March 2010 10:54:53 =CE=BF/=CE= =B7 Heikki Linnakangas =CE=AD=CE=B3=CF=81=CE=B1=CF=88=CE=B5: > >>>> Achilleas Mantzios wrote: > >>>>> i'll try to make a test case, but i think now there is enuf materia= l for anyone to make his own case, > >>>>> please ask whatever i may have missed, and thank you for your atten= tion. > >>>> If you can set logLevel to DEBUG (ie. loglevel=3D2 in connection str= ing), > >>>> run the code, and send over the logs, that would help a lot. From th= at > >>>> we should see what exactly is the sequence of XA commands the JDBC > >>>> driver is receiving from JBoss. > >>> As loglevel configuration property to org.postgresql.ds.common.BaseDa= taSource is not supported in the lastest driver,=20 > >>> i made this patch (i attach it) against postgresql-jdbc-8.4-701.src, = also i set in jboss=20 > >>> > >>> > >>> > >>> pgsql > >>> true > >>> org.postgresql.xa.PGXADataSource > >>> localhost > >>> 5432 > >>> dynacom > >>> postgres > >>> xxxx > >>> 8.2 > >>> 2 > >>> > >>> 1 > >>> 2 > >>> > >>> PostgreSQL 8.0 > >>> > >>> > >>> > >>> > >>> But i dont see anything spectacular comming out of PostgreSQL logs.=20 > >>> in postgresql.conf I have set=20 > >>> client_min_messages =3D debug5 > >>> log_min_messages =3D debug5 > >> The extra logs should go somewhere in the client side, in one of the > >> jboss log files. If you can't find it, you can do something like this = in > >> the application to redirect it to a file: > >> > >> java.io.Writer output =3D new > >> java.io.FileWriter("/tmp/postgresql-jdbc.debug.txt", true); > >> java.sql.DriverManager.setLogWriter(new > >> java.io.PrintWriter(output,true)); > >> > >> > >>> however playing with does not seem to change a thing. > >>> Am i missing something? > >> Not sure why that's not working, but here's one way of setting logleve= l: > >> > >> 1. Create file "org/postgresql/driverconfig.properties" with line > >> "loglevel=3D2" in it: > >> echo "loglevel=3D2" > org/postgresql/driverconfig.properties > >> 2. Add file to the driver jar: > >> jar uvf postgresql.jar org/postgresql/driverconfig.properties > >> > >> --=20 > >> Heikki Linnakangas > >> EnterpriseDB http://www.enterprisedb.com > >> > >=20 > >=20 > >=20 >=20 >=20 =2D-=20 Achilleas Mantzios --Boundary-00=_gXojL18J67N9GLl Content-Type: application/x-zip; name="XABUG.ear" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="XABUG.ear" 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 --Boundary-00=_gXojL18J67N9GLl--