On 6/18/06, Ruediger Pluem <[EMAIL PROTECTED]> wrote:
On 06/18/2006 04:03 PM, Jeff Trawick wrote: >> > On 06/17/2006 08:57 AM, Alexander Lazic wrote: >> > > On Sam 17.06.2006 00:54, Ruediger Pluem wrote: >> > >> From my current point of view the answer is: No, this is not >> possible >> > >> out of the box. >> > >> It may be possible if you modify the hook macros. > > > yep > > Getting inside these macros is what enables diagnostic features such as > > a) mod_status display of where a request is being held up But this feature is not in our codebase, right? Is it a patch to the macros + an additional module that hooks itself into the status_hook? Just curious.
not in our code base what I do is replace stuff like ap_run_handler (a macro) with foo_run_handler (a function) which will check ap_extended_status; if off, it will just "return ap_run_handler"; otherwise, it essentially has the macro expansion, but it has the following logic around the module call: worker_score->module_index = handler_modindexes[n]; rv = pHook[n].dummy(r); if (rv != DECLINED) { worker_score->module_index = 0; apr_table_set(r->subprocess_env, REQUEST_ENVVAR, apr_psprintf(r->pool, "(%s/%d/handler)", modnames[handler_modindexes[n]], rv); return rv; } If we reach the end without a module handling it: worker_score->module_index = 0; return DECLINED; At initialization, the handler_modindexes function is built to correspond to the hook_array. Meanwhile, mod_status and a few other diagnostic modules know how to turn a module index into a module name. I put this problem determination aid in four hook calls which have proven interesting w.r.t. third-party modules: handler, access checker, check user id, log transaction. I didn't care about any performance difference between a hook macro in mainline vs. call to a function which checks ap_extended_status and then invokes the macro. I did check the CPU usage difference between ExtendedStatus on and ExtendedStatus off after adding this logic. It is still in the neighborhood of a 1-2% increase, which is well worth it. --/-- [EMAIL PROTECTED] or [EMAIL PROTECTED] Implementation wise, what we are using is not a simple function call or two which could be cleanly inserted into the apr-util hook macro expansion. The problem determination aid is dependent on * the data structures behind the hook macros * the Apache module index, which needs to be stored in those data structures or in a parallel data structure so that it can be accessed efficiently while walking through the hook array * the worker_score If httpd *developers* are interested, we should decide what type of processing is acceptable/required first and worry about whether it can be fitted into apr second. As I recall from the last discussion of this perhaps 15 months ago, most all of the interest was from web admin lurkers, and there was insufficient developer interest anyway.