Follow up. We're not sure what the code want's to achieve here, but at least the attached patch let's us use names the way we think it should be ;-)
FWIW, ./Marian patch by [email protected] On 27.03.13 15:21, "Hettwer, Marian" <[email protected]> wrote: >Hi Ho, > >seems like the parser for specifying the backend is buggy. >Should I file a bug report? > >But first the details. Look what's happening. > >We have this backend list: > >varnish> backend.list >200 >Backend name Refs Admin Probe >speedy(10.47.28.60,,9062) 1 probe Healthy 5/5 >speedy(10.47.28.61,,9062) 1 probe Sick 0/5 >speedy47_1(10.47.60.1,,9062) 1 probe Healthy 8/8 >speedy47_10(10.47.60.10,,9062) 1 probe Healthy 8/8 >speedy47_11(10.47.60.11,,9062) 1 probe Healthy 8/8 >speedy47_12(10.47.60.12,,9062) 1 probe Healthy 8/8 >speedy47_13(10.47.60.13,,9062) 1 probe Healthy 8/8 >speedy47_14(10.47.60.14,,9062) 1 probe Healthy 8/8 >speedy47_15(10.47.60.15,,9062) 1 probe Healthy 8/8 >speedy47_16(10.47.60.16,,9062) 1 probe Healthy 8/8 >speedy47_17(10.47.60.17,,9062) 1 probe Healthy 8/8 >speedy47_18(10.47.60.18,,9062) 1 probe Healthy 8/8 >speedy47_2(10.47.60.2,,9062) 1 probe Healthy 8/8 >speedy47_3(10.47.60.3,,9062) 1 probe Healthy 8/8 >speedy47_4(10.47.60.4,,9062) 1 probe Healthy 8/8 >speedy47_5(10.47.60.5,,9062) 1 probe Healthy 8/8 >speedy47_6(10.47.60.6,,9062) 1 probe Healthy 8/8 >speedy47_7(10.47.60.7,,9062) 1 probe Healthy 8/8 >speedy47_8(10.47.60.8,,9062) 1 probe Healthy 8/8 >speedy47_9(10.47.60.9,,9062) 1 probe Healthy 8/8 > >And are now setting speedy47_1 to sick: > >varnish> backend.set_health speedy47_1(10.47.60.1) sick >200 > > >Now let's have a look at the backend list: > >varnish> backend.list >200 >Backend name Refs Admin Probe >speedy(10.47.28.60,,9062) 1 probe Healthy 5/5 >speedy(10.47.28.61,,9062) 1 probe Sick 0/5 >speedy47_1(10.47.60.1,,9062) 1 sick Healthy 8/8 >speedy47_10(10.47.60.10,,9062) 1 sick Healthy 8/8 >speedy47_11(10.47.60.11,,9062) 1 sick Healthy 8/8 >speedy47_12(10.47.60.12,,9062) 1 sick Healthy 8/8 >speedy47_13(10.47.60.13,,9062) 1 sick Healthy 8/8 >speedy47_14(10.47.60.14,,9062) 1 sick Healthy 8/8 >speedy47_15(10.47.60.15,,9062) 1 sick Healthy 8/8 >speedy47_16(10.47.60.16,,9062) 1 sick Healthy 8/8 >speedy47_17(10.47.60.17,,9062) 1 sick Healthy 8/8 >speedy47_18(10.47.60.18,,9062) 1 sick Healthy 8/8 >speedy47_2(10.47.60.2,,9062) 1 probe Healthy 8/8 >speedy47_3(10.47.60.3,,9062) 1 probe Healthy 8/8 >speedy47_4(10.47.60.4,,9062) 1 probe Healthy 8/8 >speedy47_5(10.47.60.5,,9062) 1 probe Healthy 8/8 >speedy47_6(10.47.60.6,,9062) 1 probe Healthy 8/8 >speedy47_7(10.47.60.7,,9062) 1 probe Healthy 8/8 >speedy47_8(10.47.60.8,,9062) 1 probe Healthy 8/8 >speedy47_9(10.47.60.9,,9062) 1 probe Healthy 8/8 > > > >Oh No! I only wanted one backend to go sick. Damn. > >Let's try Name, IP address and port instead... > >varnish> backend.list >200 >Backend name Refs Admin Probe >speedy(10.47.28.60,,9062) 1 probe Healthy 5/5 >speedy(10.47.28.61,,9062) 1 probe Sick 0/5 >speedy47_1(10.47.60.1,,9062) 1 sick Healthy 8/8 >speedy47_10(10.47.60.10,,9062) 1 sick Healthy 8/8 >speedy47_11(10.47.60.11,,9062) 1 sick Healthy 8/8 >speedy47_12(10.47.60.12,,9062) 1 sick Healthy 8/8 >speedy47_13(10.47.60.13,,9062) 1 sick Healthy 8/8 >speedy47_14(10.47.60.14,,9062) 1 sick Healthy 8/8 >speedy47_15(10.47.60.15,,9062) 1 sick Healthy 8/8 >speedy47_16(10.47.60.16,,9062) 1 sick Healthy 8/8 >speedy47_17(10.47.60.17,,9062) 1 sick Healthy 8/8 >speedy47_18(10.47.60.18,,9062) 1 sick Healthy 8/8 >speedy47_2(10.47.60.2,,9062) 1 probe Healthy 8/8 >speedy47_3(10.47.60.3,,9062) 1 probe Healthy 8/8 >speedy47_4(10.47.60.4,,9062) 1 probe Healthy 8/8 >speedy47_5(10.47.60.5,,9062) 1 probe Healthy 8/8 >speedy47_6(10.47.60.6,,9062) 1 probe Healthy 8/8 >speedy47_7(10.47.60.7,,9062) 1 probe Healthy 8/8 >speedy47_8(10.47.60.8,,9062) 1 probe Healthy 8/8 >speedy47_9(10.47.60.9,,9062) 1 probe Healthy 8/8 >varnish> backend.set_health speedy47_1(10.47.60.1:9062) auto >200 > >varnish> backend.list >200 >Backend name Refs Admin Probe >speedy(10.47.28.60,,9062) 1 probe Healthy 5/5 >speedy(10.47.28.61,,9062) 1 probe Sick 0/5 >speedy47_1(10.47.60.1,,9062) 1 probe Healthy 8/8 >speedy47_10(10.47.60.10,,9062) 1 probe Healthy 8/8 >speedy47_11(10.47.60.11,,9062) 1 probe Healthy 8/8 >speedy47_12(10.47.60.12,,9062) 1 probe Healthy 8/8 >speedy47_13(10.47.60.13,,9062) 1 probe Healthy 8/8 >speedy47_14(10.47.60.14,,9062) 1 probe Healthy 8/8 >speedy47_15(10.47.60.15,,9062) 1 probe Healthy 8/8 >speedy47_16(10.47.60.16,,9062) 1 probe Healthy 8/8 >speedy47_17(10.47.60.17,,9062) 1 probe Healthy 8/8 >speedy47_18(10.47.60.18,,9062) 1 probe Healthy 8/8 >speedy47_2(10.47.60.2,,9062) 1 probe Healthy 8/8 >speedy47_3(10.47.60.3,,9062) 1 probe Healthy 8/8 >speedy47_4(10.47.60.4,,9062) 1 probe Healthy 8/8 >speedy47_5(10.47.60.5,,9062) 1 probe Healthy 8/8 >speedy47_6(10.47.60.6,,9062) 1 probe Healthy 8/8 >speedy47_7(10.47.60.7,,9062) 1 probe Healthy 8/8 >speedy47_8(10.47.60.8,,9062) 1 probe Healthy 8/8 >speedy47_9(10.47.60.9,,9062) 1 probe Healthy 8/8 > >Again, matched all. Meeeeep! > > > >hm. Looks like something is wrong down here in the code: > >bin/varnishd/cache/cache_backend_cfg.c >367 if (port_b != NULL && strncmp(b->port, port_b, port_l) != 0) >369 if (name_b != NULL && strncmp(b->vcl_name, name_b, name_l) != 0) >373 strncmp(b->ipv4_addr, ip_b, ip_l)) && >375 strncmp(b->ipv6_addr, ip_b, ip_l))) > >should also take the strlen(b->port)... into account. > >Example: >367 if (port_b != NULL && strlen(b->port) == port_l && >strncmp(b->port, port_b, port_l) != 0) > > > >best regards, >Marian > > >_______________________________________________ >varnish-misc mailing list >[email protected] >https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
fix-backend-matcher.patch
Description: fix-backend-matcher.patch
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
