> Am 24.06.2015 um 15:50 schrieb Jim Jagielski <j...@jagunet.com>: > > >> On Jun 24, 2015, at 9:39 AM, Eric Covener <cove...@gmail.com> wrote: >> >> On Wed, Jun 24, 2015 at 9:26 AM, Graham Leggett <minf...@sharp.fm> wrote: >>> I believe we should be treating the “pseudo” connections as real >>> connections, and perhaps by linking a “subconnection” to a “connection” >>> (c->main) in the same way we currently link a subrequest to a request >>> (r->main). >> >> There are some basics for this in trunk from jim. I think if the slave >> connections had their own bucket_alloc it might remove some of the >> copying in h2. > > +1... that's the thought at least ;)
Hmm, yes, well. It's the thought that counts... ;-) I think this will not be enough, though, if I understood the failures of my various attempts correctly. But it will certainly be good if more heads than one have a go at this. Let Tm :-= main thread, Tw := worker thread, TmB() the main connection bucket brigade, TwB() the worker (request) brigade. When a response from a worker starts: TmB( , , , , , , , ) TwB(b1,b2,b3, , , , ) so we move buckets across threads TmB(b1,b2, , , , , , ) TwB(b3, , , , , , ) and send b1 out and new response data arrives TmB(b2, , , , , , , ) TwB(b3,b4, , , , , ) we have the destruction of b1 and the creation of b4 that go against the same bucket_alloc_t instance from two threads. Similar operations happen when b1 needs to be split or is a file bucket that gets read. So refraining from destroying buckets in the main thread is not enough. Have I missed something here? <green/>bytes GmbH Hafenweg 16, 48155 Münster, Germany Phone: +49 251 2807760. Amtsgericht Münster: HRB5782