Re: Connection pool deadlock

From: Dave Cramer <Dave(at)micro-automation(dot)net>
To: Anil Kumar <techbreeze(at)yahoo(dot)com>
Cc: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Connection pool deadlock
Date: 2003-02-28 11:33:49
Message-ID: 1046432028.14901.183.camel@inspiron.cramers
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Ok,

I think you can do a few things here.

1) make sure you give up your connections right away. This really should
solve your problem.

2) don't block on your connection pool, instead return without a
connection and tell the user that you can't service the request at this
time.

3) change your connection pool so that you "reserve" 3 connections upon
entry into the request thereby ensuring that it will complete.

Realize however that you need to redesign your code to not keep the
connections, or to share the connection.

Dave

On Fri, 2003-02-28 at 06:17, Anil Kumar wrote:
> --- Dave Cramer <Dave(at)micro-automation(dot)net> wrote:
> ...
>
> > Why didn't the multiple of 3 thing work?
>
> If there are 3 connections left in the pool and 3 concurrent
> requests come in each will be provided with one connection and it
> will go to wait status when the first thread asks for its second
> connection.
>
> Anil
>
>
>
> >
> > Dave
> > On Fri, 2003-02-28 at 05:46, Anil Kumar wrote:
> > > Hi Dave,
> > >
> > > The reason for multiple connections is that the Objects in my
> > > application contact the database directly for their
> > persisitency
> > > requirements. And I am not creating any connection object in
> > that
> > > jsp page directly. Instead I'm making calls to those objects
> > and
> > > they in-turn contact the database to get the data. This is the
> > > reason for multiple connections. I think I can reduce the
> > number of
> > > concurrent connections required while rendering that page but I
> > > cannot eliminated it completely.
> > >
> > > Me too had the idea of keeping the pool size as an integral
> > > multiple of 3 but didn't work :(
> > >
> > >
> > > --- Dave Cramer <Dave(at)micro-automation(dot)net> wrote:
> > > > Anil,
> > > >
> > > > Other than re-coding which is the real solution; (There is no
> > > > reason for
> > > > more than on connection per request) make sure your pool has
> > > > multiple of
> > > > 3 connections, ie 9, 12, 15, but not 10.
> > > >
> > > > Dave
> > > > On Fri, 2003-02-28 at 00:25, Anil Kumar wrote:
> > > > > Hi All,
> > > > >
> > > > > I'm facing a problem with connection pooling. I'm using the
> > > > > pg73jdbc3.jar
> > > > > with PG 7.2 on RH 7.3.
> > > > >
> > > > > This is a Web application running on Tomcat. To render one
> > of
> > > > its
> > > > > pages it
> > > > > requires three concurrent connections to the database. It
> > > > requests
> > > > > one
> > > > > connection after another and return them in the reverse
> > order
> > > > (the
> > > > > last
> > > > > obtained connection is returned first and so on). This
> > creates
> > > > a
> > > > > dead-lock
> > > > > if multiple requests are coming for this particular page.
> > For
> > > > > example if
> > > > > the pool size is 10 and if the application is getting 4
> > > > > simultaneous
> > > > > requests for this page I found that the connection
> > allocation
> > > > > happens in
> > > > > the following way:
> > > > >
> > > > > conn 1 -> request 1
> > > > > conn 2 -> request 2
> > > > > conn 3 -> request 3
> > > > > conn 4 -> request 4
> > > > > conn 5 -> request 1
> > > > > conn 6 -> request 2
> > > > > ...
> > > > > conn 10 -> request 2
> > > > >
> > > > > Here no request (or thread) will get enough number of
> > > > connections
> > > > > to
> > > > > complete the request and all requests will go to an
> > indefinite
> > > > wait
> > > > > state.
> > > > > Of course this happens only when the connection requests
> > > > reaches
> > > > > the pool
> > > > > capacity.
> > > > >
> > > > > I guess that some of you must have experienced this
> > problem.
> > > > What
> > > > > is the
> > > > > way out (other that re-coding the application to complete
> > the
> > > > > request with
> > > > > single connection)?
> > > > >
> > > > > best regards
> > > > > Anil
> > > > >
> > > > > __________________________________________________
> > > > > Do you Yahoo!?
> > > > > Yahoo! Tax Center - forms, calculators, tips, more
> > > > > http://taxes.yahoo.com/
> > > > >
> > > > > ---------------------------(end of
> > > > broadcast)---------------------------
> > > > > TIP 5: Have you checked our extensive FAQ?
> > > > >
> > > > > http://www.postgresql.org/users-lounge/docs/faq.html
> > > > --
> > > > Dave Cramer <Dave(at)micro-automation(dot)net>
> > > >
> > >
> > >
> > > __________________________________________________
> > > Do you Yahoo!?
> > > Yahoo! Tax Center - forms, calculators, tips, more
> > > http://taxes.yahoo.com/
> > --
> > Dave Cramer <Dave(at)micro-automation(dot)net>
> >
>
>
> __________________________________________________
> Do you Yahoo!?
> Yahoo! Tax Center - forms, calculators, tips, more
> http://taxes.yahoo.com/
--
Dave Cramer <Dave(at)micro-automation(dot)net>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dirk Bromberg 2003-02-28 12:55:34 ConnectionPool howto
Previous Message Anil Kumar 2003-02-28 11:17:56 Re: Connection pool deadlock