On Sat, Dec 15, 2018 at 05:18:08PM +0100, PiBa-NL wrote: > > > **** h1 0.0 CLI recv|0x8026612c0: key=127.0.0.1 use=1 exp=0 gpt0=0 > > > gpc0=0 > > > gpc0_rate(10000)=0 conn_rate(10000)=1 http_req_cnt=1 > > > http_req_rate(10000)=1 > > > http_err_cnt=0 http_err_rate(10000)=0 > > > **** h1 0.0 CLI recv| > > > ---- h1 0.0 CLI expect failed ~ "table: http1, type: ip, size:1024, > > > used:(0|1\n0x[0-9a-f]*: key=127\.0\.0\.1 use=0 exp=[0-9]* gpt0=0 gpc0=0 > > > gpc0_rate\(10000\)=0 conn_rate\(10000\)=1 http_req_cnt=1 > > > http_req_rate\(10000\)=1 http_err_cnt=0 http_err_rate\(10000\)=0)\n$" > > Hmmm here I think we're really hitting corner cases depending on whether > > the tracked counters are released before or after the logs are emitted. > > In the case of htx, the logs are emitted slightly later than before, > > which may induce this. Quite honestly I'd be inclined to set use=[01] > > here in the regex to cover the race condition that exists in both cases, > > as there isn't any single good value. Christopher, are you also OK with > > this ? I can do the patch if you're OK. > Its not about emitting logs, its querying the stats admin socket,
Ah of course you're right, I recognize the output now! > and even > with a added 'delay 2' before doing so the results seem to show the same > difference with/without htx. I don't think its a matter of 'timing' .? I still don't know well. Without htx, the stream is created when the connection is accepted and maintained till its end, so it may very well hold a reference to the table entry even while the connection is idle waiting for a new request. With HTX, it's like with H2, the stream only lives for the time it takes to perform a request/response. I think that using barriers to get the output after the request is sent but before the server starts to respond could reveal the use=1 here. But apparently it's the barrier in the "haproxy-cli" section of varnishtest that makes it crash so it might not be the easiest thing to try for now. Maybe you can try placing the delay between the rxreq and txresp statements in the server section and try to make sure your CLI access happens in the middle :-/ Thanks, Willy

