Upgrading v3 -> v4; vcl check fails @ req.backend . What have I missed?

Dridi Boukelmoune dridi.boukelmoune at zenika.com
Sun May 4 18:57:24 CEST 2014


On Sun, May 4, 2014 at 6:27 PM,  <grantksupport at operamail.com> wrote:
> Hi Dridi,
>
> Thanks! Knowing what to look for, I found the relevant commit at
>
>   http://www.gossamer-threads.com/lists/varnish/commits/29579
>
> Useful to add to docs, too!
>
> Once that's fixed (no more error), I get the NEXT error, Maybe related?
>
> According to
>
>         "req.backend.healthy replaced by std.healthy(req.backend)"
>
> I changed in my vcl
>
>                 ...
>         -           if (req.backend.healthy) {
> 223     +           if (std.healthy(req.backend)) {
>                         set req.grace = 30s;
>                     } else {
>                         set req.grace = 1h;
>                     }
>                 ...
>
>
> but config check reports
>
>         Message from VCC-compiler:
>         Symbol not found: 'std.healthy' (expected type BOOL):
>         ('input' Line 223 Pos 13)
>                 if (std.healthy(req.backend)) {
>         ------------###########----------------
>
>         Running VCC-compiler failed, exit 1
>
>         VCL compilation failed
>
> Looking in the examples, too ...

I have no idea why it doesn't find the healthy function.

Can you run the following command and paste the output?
readelf -s /usr/lib64/varnish/vmods/libvmod_std.so | grep vmod_

It might be in a different place on your system.

Dridi

> Grant
>
>
> On Sun, May 4, 2014, at 09:22 AM, Dridi Boukelmoune wrote:
>> On Sun, May 4, 2014 at 6:04 PM,  <grantksupport at operamail.com> wrote:
>> > Hi,
>> >
>> > I've upgraded from Varnish 3 -> 4, and am working on converting my VCL,
>> > following
>> >
>> >         "Upgrading to Varnish 4"
>> >          https://www.varnish-cache.org/docs/trunk/whats-new/upgrading.html
>> >
>> > After making changes as I've understood them, I thing I've gotten most
>> > right, but on config file check, I still get a fail,
>> >
>> >         varnishd -C -f vcl.SITE.conf
>> >         Message from VCC-compiler:
>> >         Unknown variable 'req.backend'
>> >         At: ('input' Line 94 Pos 81)
>> >                         if     (req.url ~
>> >                         "\.(css|css?.*|woff|eot|svg|ttf|otf)$") { set
>> >                         req.backend = css_SITE1; }
>> >         --------------------------------------------------------------------------------###########-------------------------
>> >
>> >         Running VCC-compiler failed, exit 1
>> >
>> >         VCL compilation failed
>> >
>> >
>> > I've likely missed/misunderstood a required change :-/
>> >
>> > Here's the relevant snip from my config
>> >
>> >                 ...
>> >
>> >             backend def_SITE1 { .port = "10100"; include
>> >             "/usr/local/etc/varnish/backend_common.vcl"; }
>> >             backend css_SITE1 { .port = "10101"; include
>> >             "/usr/local/etc/varnish/backend_common.vcl"; }
>> >             backend  js_SITE1 { .port = "10102"; include
>> >             "/usr/local/etc/varnish/backend_common.vcl"; }
>> >             backend img_SITE1 { .port = "10103"; include
>> >             "/usr/local/etc/varnish/backend_common.vcl"; }
>> >
>> >             backend def_FALLBACK   { .port = "9999"; include
>> >             "/usr/local/etc/varnish/backend_common.vcl"; }
>> >
>> >         sub hostname_normalize {
>> >             if (req.http.host == "www.mydomain.net"  )              {
>> >             set req.http.host =   "mydomain.net"; }
>> >
>> >         sub backend_assign {
>> >             if (req.http.host == "mydomain.net" ) {
>> > 94              if     (req.url ~
>> > "\.(css|css?.*|woff|eot|svg|ttf|otf)$") { set req.backend = css_SITE1; }
>> >                 elseif (req.url ~ "\.(js|js?.*)$"
>> >                 ) { set req.backend =  js_SITE1; }
>> >                 elseif (req.url ~ "\.(jp(e?)g|gif|png|ti(f?)f)$"
>> >                 ) { set req.backend = img_SITE1; }
>> >                 else
>> >                  { set req.backend = def_SITE1; }
>> >             }
>> >
>> >         ...
>> >
>> > What's "req.backend" need to be changed to?
>>
>> Hi,
>>
>> You need to change it to backend_hint.
>>
>> It is not clearly documented in the "upgrading" page but you can see
>> it on the directors examples.
>>
>> Cheers,
>> Dridi
>>
>> > Grant
>> >
>> > _______________________________________________
>> > varnish-misc mailing list
>> > varnish-misc at varnish-cache.org
>> > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc



More information about the varnish-misc mailing list