In session_count_new() the tracked counter was still incremented with
a "++" outside of any lock, resulting in occasional slightly off values
such as the following:
# table: foo, type: string, size:1000, used:1
0xb2a398: key=127.1.2.3 use=0 exp=
86398318 sess_cnt=999959 http_req_cnt=
1000004
Now with the correct atomic increment:
# table: foo, type: string, size:1000, used:1
0x7f82a4026d38: key=127.1.2.3 use=0 exp=
86399294 sess_cnt=
1000004 http_req_cnt=
1000004
This can be backported to 1.8.
ptr = stktable_data_ptr(stkctr->table, stkctr_entry(stkctr), STKTABLE_DT_SESS_CNT);
if (ptr)
- stktable_data_cast(ptr, sess_cnt)++;
+ HA_ATOMIC_ADD(&stktable_data_cast(ptr, sess_cnt), 1);
ptr = stktable_data_ptr(stkctr->table, stkctr_entry(stkctr), STKTABLE_DT_SESS_RATE);
if (ptr)