When the ctdb statistics is reset, reset per database statistics to keep
it consistent with ctdb statistics.
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
(Imported from commit
7949ce103f2062aa703a24f72e11be96dc497a7a)
int ctdb_fetch_with_header_func(struct ctdb_call_info *call);
+void ctdb_db_statistics_reset(struct ctdb_db_context *ctdb_db);
+
int32_t ctdb_control_get_db_statistics(struct ctdb_context *ctdb,
uint32_t db_id,
TDB_DATA *outdata);
}
case CTDB_CONTROL_STATISTICS_RESET: {
+ struct ctdb_db_context *ctdb_db;
+
CHECK_CONTROL_DATA_SIZE(0);
ZERO_STRUCT(ctdb->statistics);
+ for (ctdb_db = ctdb->db_list;
+ ctdb_db != NULL;
+ ctdb_db = ctdb_db->next) {
+ ctdb_db_statistics_reset(ctdb_db);
+ }
ctdb->statistics.statistics_start_time = timeval_current();
return 0;
}
return 0;
}
+void ctdb_db_statistics_reset(struct ctdb_db_context *ctdb_db)
+{
+ struct ctdb_db_statistics *s = &ctdb_db->statistics;
+ int i;
+
+ for (i=0; i<MAX_HOT_KEYS; i++) {
+ if (s->hot_keys[i].key.dsize > 0) {
+ talloc_free(s->hot_keys[i].key.dptr);
+ }
+ }
+
+ ZERO_STRUCT(ctdb_db->statistics);
+}
+
int32_t ctdb_control_get_db_statistics(struct ctdb_context *ctdb,
uint32_t db_id,
TDB_DATA *outdata)