I upgraded from apache to apache 2 and mod_perl to mod_perl2. I'm using Rose::DB/Apache::DBI to manage the connections to PostgreSQL.
Between me and Postgres, all the SQL statements get PREPARE'd on the server and their $sth's cached. The name of each prepared query is generated by either DBI or DBD::Pg and is a combination of the apache child process id and a sequential number (dbdpg_20202_2, dbdpg_20202_3, ...). From what I can tell, I have no control over this naming convention.
For some reason, every time a block of code die()'s and throws a 503 error, either DBI, DBD::PG, Rose::DB or Apache::DBI thinks the database handle is reset and starts the sequential numbering again. The problem is, the process ID of the apache child is the same so new prepared statements get names that collide with older prepared statements. Postgres the server doesn't like this, throws an error to the client, and that trickles back up to you, the web browser.
Good times. It is far more obvious on my dev site than the live site though...We are Siamese if you please. We are Siamese if you don't please.[ Parent ]
Well, the good news is that all you have to do is rewrite your site to eliminate all the die clauses...
Noooo problem! :-)--Has anybody seen my clue? I know I had it when I came in here.[ Parent ]
I guess what I'm saying is.. "no worries, it'll get there!"--Has anybody seen my clue? I know I had it when I came in here.[ Parent ]