For the next 2.4 release, I would like to add scoreboard support to mod_http2.
There are several options for doing so and I would like your feedback on which route we should take. I try to outline what options I see: A) Make mod_http2 workers general MPM workers. They would then become part of scoreboard without changes to the board itself. B) Extend scoreboard to handle "thread sets", where MPM threads are the set it has not. mod_http2 would register a new set. scoreboard handles, an opaque struct pointer for everyone, would get an additional "set id". C) Mix both. MPM has thread sets and scoreboard learns to handle them. Discussion: 1. A), doing it naively, will mess heavily with MPM module code. MPM modules now use for(0...num_threads) {} heavily to setup threads that handle sockets and pollsets and other nice things. This is not relevant for the http2 workers which are, framed more generally, "slave connection workers", whereas the current MPM threads are "master connection workers". 2. B) will not mess with MPM at all, just extend scoreboard and mod_status. mod_http2 would register itself for a new thread set and update the status regularly. This approach offers least API disturbance for a backport to 2.4.x 3. C) is an extension of B). Thread sets get registered at MPM, scoreboard interrogates the new MPM sets and can hand out "scoreboard handles" for them. Bringing these sets into the MPM could be done, so that spare threads are shared between different sets. Don't know if that's desirable. 4. For mod_http2, the existing status indicators will continue to work, as slave connection workers do the same tasks as MPM threads, more or less. For more flexible use, one could provide for status indicators provided by the registrar. Thoughts? //Stefan