Hello! Last night I was beating my head against the wall over this piece of config:
acl toggle_delay str(delay),map(opt@/etc/haproxy/maps/toggles.map,on) -m str on acl toggle_guard str(guard),map(opt@/etc/haproxy/maps/toggles.map,off) -m str on acl toggle_ipinfo str(ipinfo),map(opt@/etc/haproxy/maps/toggles.map,on) -m str on The map: delay on guard off ipinfo on I expected that I could enable guard via runtime CLI, but it wasn't working, e.g. as a test I did: http-request deny if toggle_guard Yet the request wasn't being denied when setting guard to on. Then I did some show maps and noticed this: # id (file) description 137 (/etc/haproxy/maps/toggles.map) pattern loaded from file 'opt@/etc/haproxy/maps/toggles.map' used by map at file '/etc/haproxy/haproxy.cfg' line 605. curr_ver=0 next_ver=0 entry_cnt=3 138 (/etc/haproxy/maps/toggles.map) pattern loaded from file 'opt@/etc/haproxy/maps/toggles.map' used by map at file '/etc/haproxy/haproxy.cfg' line 606. curr_ver=0 next_ver=0 entry_cnt=3 139 (/etc/haproxy/maps/toggles.map) pattern loaded from file 'opt@/etc/haproxy/maps/toggles.map' used by map at file '/etc/haproxy/haproxy.cfg' line 607. curr_ver=0 next_ver=0 entry_cnt=3 So it looks like haproxy creates three separate instances of this map, and doing a 'set map /etc/haproxy/maps/toggles.map ...' only updates the first entry! I would have expected haproxy to create just one instance of the map, and to reference that same instance in subsequent calls. I can not find anything in the docs about this at all. I don't know where I got the idea to use toggles like this, but I swear they did more than one ACL each using map() for the lookup, but I can't find this anywhere either. Every example uses just one toggle + ACL entry, or uses a "use_backend ..." call to dynamically route traffic. Thought I'd email in to see if I'm doing something wrong, or if there is perhaps a better way to do this. I can't seem to find anyone doing something like this anywhere else! If I want to support multiple toggles like this with just one map entry per file, is the only way to do this via multiple maps, or changing the logic of my scripts to do a "show map" first, get the IDs, then loop through and "set map ..." on each ID? Which I guess wouldn't be too hard to do. Thanks, Brendon