Re: WARNING: ROLLBACK: no transaction in progress

From: Dave Cramer <Dave(at)micro-automation(dot)net>
To: Bjørn T Johansen <btj(at)havleik(dot)no>
Cc: Dmitry Tkach <dmitry(at)openratings(dot)com>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: WARNING: ROLLBACK: no transaction in progress
Date: 2003-06-10 02:59:38
Message-ID: 1055213978.1080.121.camel@inspiron.cramers
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Bjorn,

I have implemented a few of them

I use a linked list, and get the new connections from the head, and
return connections to the tail.

You need to clear warnings when you retrieve the connection, place a
limit on how many connections you will allow in the pool. That's about
it.

Dave
On Mon, 2003-06-09 at 15:28, Bjørn T Johansen wrote:
> 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(at)havleik(dot)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(at)postgresql(dot)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;
> > >>>> }
> > >>>> }
> > >>>>}
> > >>>>
> > >>>>
> > >>>>
> > >>>>
--
Dave Cramer <Dave(at)micro-automation(dot)net>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Amit_Wadhwa 2003-06-10 05:29:45 Re: Authentication problems
Previous Message Bjørn T Johansen 2003-06-09 19:28:37 Re: WARNING: ROLLBACK: no transaction in progress