Workspace overflow handling

Dridi Boukelmoune dridi.boukelmoune at zenika.com
Mon Feb 9 22:54:35 CET 2015


On Mon, Feb 9, 2015 at 10:25 PM, Poul-Henning Kamp <phk at phk.freebsd.dk> wrote:
> But for threads in the same address space, using non-isolated means
> of intercommunication (ie: userland mtx/condvar with kernel assist)
> as opposed to kernel mediated means of intercommunication, it
> invariably becomes hairy, bugprone and full of races.
>
> Thus I'm not very thrilled about this idea.

That's what I meant in the second paragraph of my answer to Martin. So
assuming an "isolated" address space (my understanding of workspaces),
a worker thread could avoid a child panic on some code paths. Please
note the quotes around "isolated", I'm not saying workspaces actually are.

You could imagine new `wk_assert`, `WK_AZ`, `WK_AN` etc macros to
avoid boiler-plate code, but only in relevant places.

> I fully agree, but still preferable to running with inconsistent
> data structures.

It would become even harder to debug. My suggestion relies on the
supposition that it would (sometimes) be possible to kill a single worker
thread without corrupting the whole process.

Regards,
Dridi

PS. Maybe I'll start a new Tarnish Cache project in Rust :-)



More information about the varnish-dev mailing list