Re: WARNING: ROLLBACK: no transaction in progress - Mailing list pgsql-jdbc
From | Bjørn T Johansen |
---|---|
Subject | Re: WARNING: ROLLBACK: no transaction in progress |
Date | |
Msg-id | 1055186917.16559.57.camel@pennywise.havleik.no Whole thread Raw |
In response to | Re: WARNING: ROLLBACK: no transaction in progress (Dmitry Tkach <dmitry@openratings.com>) |
Responses |
Re: WARNING: ROLLBACK: no transaction in progress
|
List | pgsql-jdbc |
Well, that sounds about right... :) Maybe I need to do some soul searching to discover whats "right" for me.. ;) BTJ On Mon, 2003-06-09 at 20:59, Dmitry Tkach wrote: > Bjørn T Johansen wrote: > > >Well, I just saw it as more convenient to use an existing connection > >pooling, i.e Tomcat's (since it is running under Tomcat). But what you > >are saying, is that the "right" way is to implement a connection polling > >class myself? > > > > > I don't know :-) > Depends on what you mean by the "right" way :-) > > What I was saying was that if you implemented it yourself, you would not > have this problem. > What is the "right" way is up to you - it depends on whether you believe > that figuring out causes of (and workarounds for) problems like this is > worth the saved effort of writing a connection pool on your own. My > opinion is that it isn't, but once again, it is just my opinion, whether > you agree with it or not is up toi you, and that would define what is > the "right" choice for you :-) > > Dima > > > > >BTJ > > > >On Mon, 2003-06-09 at 16:33, Dmitry Tkach wrote: > > > > > >>Bjørn T Johansen wrote: > >> > >> > >> > >>>Hmmm, I am using the connection pooling in Tomcat to get database > >>>connection, don't know if that would make a difference.... > >>> > >>> > >>> > >>> > >>I bet, it does. > >>I suspect, when you do c.close(), it doesn't really close the > >>connectino, but rather just returns it to the pool... When it does that, > >>it, probably, does rollback() on it to make sure that, if somebody > >>forgot to complete his transaction, it doesn't get into the pool that > >>way.... > >> > >>Frankly, I could never understand why people are so inclined to use all > >>those third party connection pooling mechanisms - they have all kinds of > >>problems - they 'swallow' native sql exceptions, they do funny stuff > >>with transactions etc, etc... The main problem being, they are 'black > >>boxes' - you never know what exactly happens to the connection > >>before/after you get your hands on it.... :-( > >>This seems way too much price to pay for the benefit of not having to > >>implement the pool on your own (which is, more or less, just having a > >>Vector of active connections somewhere) ... > >> > >>Dima > >> > >> > >> > >> > >>>BTJ > >>> > >>>On Thu, 2003-06-05 at 02:55, Barry Lind wrote: > >>> > >>> > >>> > >>> > >>>>Bjørn, > >>>> > >>>>I can't reproduce your problem. I used the attached program that I > >>>>wrote from the information you provided below and it doesn't have any > >>>>such warning in the log files. > >>>> > >>>>thanks, > >>>>--Barry > >>>> > >>>> > >>>>Bjørn T Johansen wrote: > >>>> > >>>> > >>>> > >>>> > >>>>>I am using the new version 7.3.3 where I also compiled the jdbc driver.. > >>>>> > >>>>>The code I use looks something like this..: > >>>>> > >>>>> Connection conn = DBPool.getInstance().getConnection(); > >>>>> PreparedStatement stmt = null; > >>>>> Statement stmt2 = null; > >>>>> > >>>>> try > >>>>> { > >>>>> conn.setAutoCommit(false); > >>>>> > >>>>> String sql= "Insert into table () Values (?)"; > >>>>> stmt = conn.prepareStatement(sql); > >>>>> int ant = stmt.executeUpdate(); > >>>>> stmt.close(); > >>>>> stmt = null; > >>>>> conn.commit(); > >>>>> conn.close(); > >>>>> conn = null; > >>>>> } > >>>>> catch (SQLException ex) > >>>>> { > >>>>> conn.rollback(); > >>>>> conn.close(); > >>>>> throw new Exception; > >>>>> } > >>>>> > >>>>> > >>>>> > >>>>>Hope this helps... > >>>>> > >>>>>BTJ > >>>>> > >>>>> > >>>>>On Wed, 2003-05-28 at 11:53, Dave Cramer wrote: > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>>What version of the driver are you using, this sounds like a bug > >>>>>> > >>>>>>Can you send some code to re-create it? > >>>>>> > >>>>>>Dave > >>>>>>On Tue, 2003-05-27 at 06:33, Bjorn T Johansen wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>Why do I get this in my logfile, when I never call rollback, only > >>>>>>>commit? Should I just ignore this or?? > >>>>>>> > >>>>>>> > >>>>>>>Regards, > >>>>>>> > >>>>>>>BTJ > >>>>>>> > >>>>>>> > >>>>>>>----------------------------------------------------------------------------------------------- > >>>>>>>Bjørn T Johansen (BSc,MNIF) > >>>>>>>Executive Manager > >>>>>>>btj@havleik.no Havleik Consulting > >>>>>>>Phone: +47 67 54 15 17 Conradisvei 4 > >>>>>>>Fax: +47 67 54 13 91 N-1338 Sandvika > >>>>>>>Cellular: +47 926 93 298 http://www.havleik.no > >>>>>>>----------------------------------------------------------------------------------------------- > >>>>>>>"The stickers on the side of the box said "Supported Platforms: Windows > >>>>>>>98, Windows NT 4.0, > >>>>>>>Windows 2000 or better", so clearly Linux was a supported platform." > >>>>>>>----------------------------------------------------------------------------------------------- > >>>>>>> > >>>>>>> > >>>>>>>---------------------------(end of broadcast)--------------------------- > >>>>>>>TIP 2: you can get off all lists at once with the unregister command > >>>>>>> (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>______________________________________________________________________ > >>>> > >>>>import java.sql.*; > >>>> > >>>>public final class test25 { > >>>> private static String DB_URL = "jdbc:postgresql://localhost:5432/test"; > >>>> private static String DB_USER = "test"; > >>>> private static String DB_PASS = "test"; > >>>> > >>>> public static void main(String[] args) throws Exception { > >>>> // load driver > >>>> Class.forName("org.postgresql.Driver"); > >>>> // open connection to postgres > >>>> Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS); > >>>> PreparedStatement stmt = null; > >>>> > >>>> try > >>>> { > >>>> conn.setAutoCommit(false); > >>>> //This test assumes a table 'test' exists with one column 'cola' of type text > >>>> String sql= "Insert into test (cola) values (?)"; > >>>> stmt = conn.prepareStatement(sql); > >>>> stmt.setString(1,"foo"); > >>>> int ant = stmt.executeUpdate(); > >>>> stmt.close(); > >>>> stmt = null; > >>>> conn.commit(); > >>>> conn.close(); > >>>> conn = null; > >>>> } > >>>> catch (SQLException ex) > >>>> { > >>>> conn.rollback(); > >>>> conn.close(); > >>>> throw ex; > >>>> } > >>>> } > >>>>} > >>>> > >>>> > >>>> > >>>> -- ----------------------------------------------------------------------------------------------- Bjørn T Johansen (BSc,MNIF) Executive Manager btj@havleik.no Havleik Consulting Phone : +47 67 54 15 17 Conradisvei 4 Fax : +47 67 54 13 91 N-1338 Sandvika Cellular : +47 926 93 298 http://www.havleik.no ----------------------------------------------------------------------------------------------- "The stickers on the side of the box said "Supported Platforms: Windows 98, Windows NT 4.0, Windows 2000 or better", so clearly Linux was a supported platform." -----------------------------------------------------------------------------------------------
pgsql-jdbc by date: