On Sat, Jun 19, 2004 at 11:17:28PM +0300, Stas Bekman wrote:
Joe Orton wrote:
Hiya folks, just wondering what impact (if any) these changes I've been working on would have on mod_perl and filters implemented using mod_perl?
The change is simply that after calling ap_pass_brigade() on a brigade, any subsequent use of that brigade is likely to segfault since the brigade structure really is free'd.
I understood that only the content/buckets are lost, but the bb itself remains re-usable. We have quite a few tests that go like this (.e.g see: t/filter/TestFilter/both_str_con_add.pm):
...
OK, thanks, useful info. I guess you prefer the model where a filter may never destroy the brigade which it is passed, and it's the responsibility of whomever *creates* the brigade to destroy it.
I think it's more effective to be able to reuse the bb shell.
Why should we create bb in a tight loop when we can make things faster and re-use the shell? Sounds like a waste of CPU cycles and memory to me.
With the patches I have it's not really expensive. But currently we're in a mess where it's not clear who should destroy the brigade, and so they are often getting destroyed and then reused, or sometimes never destroyed at all. And destroy doesn't really free the brigade anyway so the memory is leaked everywhere.
I'm going to go through and see if all the memory leaks can be fixed using the "creator must destroy" model and see if that will work instead since it will probably be less disruptive to third-party filters.
Cool. Either way, since mp2 is not released yet, we can adjust to whatever the right model is, as long as it's consistent with Apache 2.0. So please let us know what approach should we use.
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]