VCL storage discussion summary

Dridi Boukelmoune dridi at varni.sh
Mon Oct 10 14:30:10 CEST 2016


Hello,

Following discussions on storage/stevedore literals vs hints in VCL
I've tried to sum up the current situation and suggest a direction to
take.

Currently we have:

1) a STEVEDORE type for VCL (storage namespace)
2) all storages resolved at boot time (typesafe)
3) beresp.storage_hint takes a STRING
4) no/wrong hint means round-robin among storages

Today during the bugwash, following two pull requests introducing a
storage hint for the request body (instead of systematically using
Transient) we discussed the possibility of removing the hint part. The
reason being 1) in the list above.

After some testing on master, it doesn't seem to be enforced:

    sub vcl_backend_response {
        set beresp.storage_hint = "some random junk";
        set beresp.storage_hint = beresp.http.x-storage;
    }

However, implicit stevedore conversion to string exists:

    sub vcl_backend_response {
        set beresp.storage_hint = storage.Transient;
    }

Suggestions:

A) Keep the _hint to allow backend- or vmod-driven _loose_ storage
   selection.

B) Maybe introduce besresp.storage to avoid conversions to and from
   STRING, but allow NULL to behave the same as 4) for the _hint.

C) Be consistent when storage selection is introduced for the request body.

Cheers,
Dridi



More information about the varnish-dev mailing list