Hello,
<div><br></div><div>i'm adding bans (lurker friendly) in vcl using headers set by the backend.</div><div>I'm also using ESI includes. Usually the bans match a specific esi include.</div><div>I'm banning before the call to process the request for esi includes.</div>
<div><br></div><div>Usage example: "You have 2 unread notifications" -> click -> backend marks notifications as read, backends add header for varnish -> varnish adds ban, requests new partial -> "you have 0 unread notifications"</div>
<div><br></div><div>This works quite fine. But sometimes it doesnt.</div><div>Varnish seems to deliver the old cached partial rather than fetching a new one from the backend.</div><div>This does not happen a lot and i havent found a way yet to reproduce it.</div>
<div><br></div><div>One could write a small programm to do stresstest and prove this problem, but before i do that i would like to know if you can confirm that there might occur such a race condition (maybe from own experience, or you know the code)</div>
<div><br></div><div>vcl example:</div><div><br></div><div><div>sub vcl_fetch {</div></div><div>  ban("obj.http.x-url ~ /some/uri");</div><div>  set beresp.do_esi = true;</div><div>}</div><div><br></div><div>im using varnish 3.0.0 (havent upgraded yet because of the bug about the ban lurker) and my ban list is usually below 200.</div>
<div><br></div><div><br></div><div>Thanks a lot,</div><div><br></div><div>Moritz</div>