I think the new signal handling in perl 5.8 causes problems here.

The signal is recorded by the *C* signal handler when it happens
but calling the specified *perl* handler is deferred until it's
"safe" to do so - generally the next perl statement boundary.

If the application is stuck in some OS call that gets automatically
restarted after the signal is 'handled' by the C signal handler then
it's going to remain stuck.

A workaround is to using the POSIX module to mark the signal
as non-restarting - or something like that - I've not had to
investigate in depth. Google may shed more light.

Tim.

On Mon, Jan 13, 2003 at 07:43:57PM -0800, Jared Still wrote:
> 
> Gee Dave, I know of a book that has scripts that
> already do this.  ;)
> 
> Here's an untested bit of code to demonstrate.
> 
>    my $dbh;
> 
>    eval {
> 
>       local $SIG{ALRM} = sub {
>          die "connection timeout\n";
>       };
> 
>       alarm 60;
> 
>    $dbh = DBI->connect(
>      'dbi:Oracle:' . $db,
>      $username, $password,
>      {
>          RaiseError => 1,
>          AutoCommit => 0,
>       }
>    
>    );
> 
>    };
> 
>    # the alarm reset must be outside the eval{}
>    alarm 0;
> 
> I say untested cuz I simplified it a bit after lifting
> it from a script.
> 
> HTH,
> 
> Jared
> 
> On Monday 13 January 2003 15:49, David Turner wrote:
> > Does anyone have some perl code that will return an error if it take longer
> > than a certain number of seconds to connect to or return the results from a
> > database? I'd like to have some of my queries connect to an alternate
> > database if there is a problem connecting or returning results within 10
> > seconds. Any other suggestions are appreciated.
> >
> > Dave
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: Jared Still
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from).  You may
> also send the HELP command for other information (like subscribing).
> 
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Tim Bunce
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to