in reply to Re^3: Problems with multiple inheritance
in thread Problems with multiple inheritance

The reason we're using Apache::Reload is because our servers are in a cluster behind a content switch and a rolling restart is complicated and can't be scripted as far as I know. So given the fact that we don't have access to restart the servers do you have any other recommendations?
  • Comment on Re^4: Problems with multiple inheritance

Replies are listed 'Best First'.
Re^5: Problems with multiple inheritance
by perrin (Chancellor) on Feb 23, 2007 at 20:15 UTC
    From Zaxo's comment, it sounds like you might need a newer perl on your production system. Regardless, it's still asking for trouble to use Apache::Reload in production. In fact, changes in inheritance are known to be a particular problem with it. You need to get together with whoever admins these servers and work out a way to do real restarts of them when you update your code.

      We're on 5.8.6, and multiple inheritance is generally working for us. This is the first time this has been an issue, but the Apache::Reload issue makes sense. We have actually been running into more and more problems with using Apache::Reload as our code base has gotten more and more complicated. Even simple inheritance breaks it sometimes. This might just be the straw that breaks the camel's back that forces us to figure out a way to actually get the servers restarted.

      BTW, we're running Solaris (9, soon 10) and it's my understanding that graceful restarts of apache are buggy, although I haven't checked to see if that's been fixed, otherwise we'd be using that.

      If anyone has any recommendations on how to deal with restarting Apache servers in a clustered environment (I know this is getting off topic now) please let me know.

        You shouldn't use graceful restarts with mod_perl. You should shut it down and start it up. Having a cluster makes this easier, since it means you can take half the machines out of the load balancer, restart apache on them, put them back in the load balancer, and then do the same on the other half.

        Obviously this doesn't work when you have database schema changes too, but neither does your current system with Apache::Reload.