Re: Bug #15390: Persistent OCI8 Connections Get Poisoned
| From: | Hans Zaunere | Date: | Tue, 05 Feb 2002 21:23:56 +0000 |
| Subject: | Re: Bug #15390: Persistent OCI8 Connections Get Poisoned | ||
| References: | 1 2 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-79280@lists.php.net to get a copy of this message | ||
Good idea (for the situation anyway). It works. I have all custom error
handlers anyway, so when I detect a ORA-03313 error, I kill the current
process with a SIGTERM. Since I use header() to redirect to the error page,
sometimes I get a blank page, but atleast when the database comes back, the
whole system is back.
Although PHP should handle this better in some manner. :)
Thank you,
Hans
mlwmohawk@mohawksoft.com wrote:
> We are seeing this problem too. I am thinking of having a standard error
> page which executes
>
> posix_kill ( pos_getpid()) ;
>
> On Oracle errors.
>
> > From: hz11@nyu.edu
> > Operating system: RedHat 6.2
> > PHP version: 4.0.6
> > PHP Bug Type: OCI8 related
> > Bug description: Persistent OCI8 Connections Get Poisoned
> >
> > I have PHP 4.0.6 compiled as an Apache 1.3.20 module with OCI8 and
> > MySQL on RedHat 6.2. I use persistent connections with OCI8 to avoid
> > the costly connection construction for Oracle for each request.
> > However, I notice that these persistent connections get "poisoned"
> > under certain
> > circumstances. What I mean by this is this:
> >
> > Since each persistent connection stays with it's corresponding Apache
> > process, if the database happens to be down when a request comes in,
> > the persistent connection that is used throws an ORA-03113. However,
> > even when the database comes back, the persistent connection still
> > thinks the database is down somehow, and will continue to throw the
> > ORA-03113 error. As a result, if a request happens to hit the poisoned
> > Apache process, it appears the database is down. If a request hits
> > another Apache process, all is OK.
> >
> > So far, the only way I've seen to deal this is to restart Apache, and
> > have the persistent connections build up again. Obviously, this is not
> > a good thing, and if database connectivity is lost in any form, the
> > persistent connections get poisoned again, and the cycle begins.
> >
> > Now as this might not be a bug per se, I would think that persistent
> > connections should at least check that they aren't corrupted in some
> > way; or 'freshen' themselves. Although I haven't tested it fully, I
> > have never seen this behavior with persistent MySQL connections.
> >
> > Please contact me for any further details or clarification if needed.
> >
> > Thank you,
> >
> > Hans
> > --
> > Edit bug report at
> > http://bugs.php.net/?id=15390&edit=1
> > --
> > Fixed in CVS:
> > http://bugs.php.net/fix.php?id=15390&r=fixedcvs
> > Fixed in release:
> > http://bugs.php.net/fix.php?id=15390&r=alreadyfixed
> > Need backtrace:
> > http://bugs.php.net/fix.php?id=15390&r=needtrace Try
> > newer version:
> > http://bugs.php.net/fix.php?id=15390&r=oldversion Not
> > developer issue:
> > http://bugs.php.net/fix.php?id=15390&r=support
> > Expected behavior:
> > http://bugs.php.net/fix.php?id=15390&r=notwrong Not
> > enough info:
> > http://bugs.php.net/fix.php?id=15390&r=notenoughinfo
> >
> >
> > --
> > PHP Development Mailing List <http://www.php.net/>
> > To unsubscribe, visit: http://www.php.net/unsub.php