You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Tim Bunce <Ti...@ig.co.uk> on 2000/12/15 08:24:47 UTC

Re: (Fwd) Re: is morning bug still relevant? (DBD::Sybase)

On Thu, Dec 14, 2000 at 09:34:58AM -0800, Michael Peppler wrote:
> Tim Bunce writes:
>  > 
>  > Was there a problem with ping on DBD::Sybase?
>  > Has it been resolved?
> 
> I believe that ping() was fixed in 0.90.

Thanks Michael.

Tim.

>  > ----- Forwarded message from Jie Gao <J....@isu.usyd.edu.au> -----
>  > 
>  > Mailing-List: contact modperl-help@apache.org; run by ezmlm
>  > Delivered-To: mailing list modperl@apache.org
>  > X-Authentication-Warning: solo.ucc.usyd.edu.au: jiegao owned process doing -bs
>  > Date: Thu, 14 Dec 2000 23:19:40 +1100 (EST)
>  > From: Jie Gao <J....@isu.usyd.edu.au>
>  > To: mod_perl list <mo...@apache.org>
>  > Subject: Re: is morning bug still relevant?
>  > In-Reply-To: <20...@ig.co.uk>
>  > Organisation: The University of Sydney
>  > Telephone: +61 (0)2 9351 5769(W)
>  > Fax: +61 (0)2 9351 5001(W)
>  > X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N
>  > 
>  > On Thu, 14 Dec 2000, Tim Bunce wrote:
>  > 
>  > > On Thu, Dec 14, 2000 at 11:47:58AM +1100, Jie Gao wrote:
>  > > > On Thu, 14 Dec 2000, Stas Bekman wrote:
>  > > > 
>  > > > > I think that this item from the guide is not relevant anymore. Can I
>  > > > > kill it? 
>  > > > > 
>  > > > > =head3 The Morning Bug
>  > > > > 
>  > > > > Relational database server keeps a connection to the client open for a
>  > > > > limited period of time. Many developers were bitten by so called
>  > > > > B<Morning bug>, when every morning the first users to use the site
>  > > > > received a C<No Data Returned> message, but after that everything
>  > > > > worked fine. The error is caused by C<Apache::DBI> returning a handle
>  > > > > of the invalid connection (the server closed it because of a timeout),
>  > > > > and the script was dying on that error. The infamous C<ping()> method
>  > > 
>  > > Why is/was ping() infamous?
>  > > 
>  > > > > was introduced to solve this problem, but still people were being
>  > > > > bitten by this problem. Another solution was found - to increase the
>  > > > > timeout parameter when starting the SQL server. Currently I startup
>  > > > > C<MySQL> server with a script C<safe_mysql>, so I have modified it to
>  > > > > use this option:
>  > > > > 
>  > > > >   nohup $ledir/mysqld [snipped other options] -O wait_timeout=172800
>  > > > > 
>  > > > > (172800 seconds is equal to 48 hours. This change solves the problem.)
>  > > > > 
>  > > > > Note that as from version C<0.82>, C<Apache::DBI> implements ping()
>  > > > > inside the C<eval> block.  This means that if the handle has timed out
>  > > > > it should be reconnected automatically, and avoid the morning bug.
>  > > > 
>  > > > Problem is it is not only relevant, but ping doesn't work in all cases.
>  > > > I have to cron-kill/start my servers in the morning.
>  > > 
>  > > With what database driver?
>  > > 
>  > > Some drivers don't support ping others might be buggy. It's not helpful
>  > > to say "ping doesn't work in all cases" without qualifiying why and/or
>  > > which drivers that applies to.
>  > 
>  > OK, fair enough. It's DBD::Sybase. I have posted the problem to dbi-users
>  > and nobody had a solution to it.
>  > 
>  > Regards,
>  > 
>  > 
>  > Jie
>  > 
>  > ----- End forwarded message -----