The user path drops expired streams without releasing their active-stream
count or their tot_rconns slot, unlike the stream-error path. Once -r is
reached with fewer completions, running_tasks never falls back to zero and
haload hangs until it is killed.
Release both there, matching the error path; the timeout is still counted
as an error. This was introduced with haload in 3.5-dev, no backport needed.
* count it as a failure, not a success
*/
thrs_info[tid].tot_perr++;
+ BUG_ON(!thrs_info[tid].cur_req);
+ thrs_info[tid].cur_req--;
+ if (arg_rcon > 0) {
+ BUG_ON(!hs->url->tot_rconn_sent);
+ hs->url->tot_rconn_sent--;
+ }
hs->url->mreqs++;
usr->nreqs = usr->nreqs == -1 ? -1 : usr->nreqs + 1;
LIST_DELETE(&hs->list);