We've been having some problems with our Oracle 8.1.5 database on AIX, which has highlighted what looks like a problem with Apache::DBI. To cut a very long story short, due to an Oracle problem database handles are becoming invalid reasonably frequently. In this case, we would expect Apache::DBI to ping on each connect request as the ping timeout is set to zero. However, it has been returning dead handles. Enabling the trace feature showed that it did not always ping, the problem being that if there is a request for a handle within one second, even if the ping timeout is zero it will not ping.
A patch for this follows, it is simply a matter of changing the time test from a > to a >= in line 103 of version 0.88: my $needping = (($PingTimeOut{$dsn} == 0 or $PingTimeOut{$dsn} > 0) and $now - $LastPingTime{$dsn} >= PingTimeOut{$dsn}) ? 1 : 0; So far as I can tell this still applies to the most recent version. I would like to ask the maintainer of this module if this patch or equivalent fix could be included in the next release of the module. Apologies if this message is posted to the wrong place, I think I got it right... Regards Dennis Ingram ********************************************************************** This email with any attachments is confidential and may be subject to legal privilege. If it is not intended for you please reply immediately, destroy it and do not copy, disclose or use it in any way. **********************************************************************