diff --git a/core/stat.m b/core/stat.m index 9ca48d52e0bc1de644ce79533cc351ba8182da68..343757009dc06b5194ad969adc10348fcc2f846c 100644 --- a/core/stat.m +++ b/core/stat.m @@ -130,3 +130,11 @@ stat_init(void) timer.repeat = 1.; ev_timer_again(&timer); } + +void +stat_cleanup(int base, size_t max_idx) +{ + for (int i = base; i < max_idx; i++) + for (int j = 0; j < SECS + 1; j++) + stats[i].value[j] = 0; +} diff --git a/include/stat.h b/include/stat.h index 5fb30612ff51a0fc93574679a2901ee2a38f248f..0549a2e0f52c83596e8f9ae9a988a78aafc3eb4f 100644 --- a/include/stat.h +++ b/include/stat.h @@ -29,6 +29,7 @@ #include <tbuf.h> void stat_init(void); +void stat_cleanup(int base, size_t max_idx); int stat_register(char **name, size_t count); void stat_collect(int base, int name, i64 value); void stat_print(struct tbuf *buf); diff --git a/mod/box/box.m b/mod/box/box.m index d044c84d103101fce30ca12a81ac2fb5ca89d8ff..350d80b697169c646584b55a7d6bad92fad21dd7 100644 --- a/mod/box/box.m +++ b/mod/box/box.m @@ -1201,7 +1201,7 @@ box_process(struct box_txn *txn, u32 op, struct tbuf *request_data) { ev_tstamp start = ev_now(), stop; - stat_collect(stat_base, txn->op, 1); + stat_collect(stat_base, op, 1); @try { txn_begin(txn, op, request_data); @@ -1452,6 +1452,7 @@ mod_init(void) return; recover(recovery_state, 0); + stat_cleanup(stat_base, messages_MAX); title("build_indexes");