> 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



Reply via email to