char *keystr;
/* smallest value is always at index 0 */
- if (count <= ctdb_db->statistics.hot_keys[0].count) {
+ if (count <= ctdb_db->hot_keys[0].count) {
return;
}
/* see if we already know this key */
for (i = 0; i < MAX_HOT_KEYS; i++) {
- if (key.dsize != ctdb_db->statistics.hot_keys[i].key.dsize) {
+ if (key.dsize != ctdb_db->hot_keys[i].key.dsize) {
continue;
}
- if (memcmp(key.dptr, ctdb_db->statistics.hot_keys[i].key.dptr, key.dsize)) {
+ if (memcmp(key.dptr, ctdb_db->hot_keys[i].key.dptr, key.dsize)) {
continue;
}
/* found an entry for this key */
- if (count <= ctdb_db->statistics.hot_keys[i].count) {
+ if (count <= ctdb_db->hot_keys[i].count) {
return;
}
- ctdb_db->statistics.hot_keys[i].count = count;
+ ctdb_db->hot_keys[i].count = count;
goto sort_keys;
}
id = 0;
}
- if (ctdb_db->statistics.hot_keys[id].key.dptr != NULL) {
- talloc_free(ctdb_db->statistics.hot_keys[id].key.dptr);
+ if (ctdb_db->hot_keys[id].key.dptr != NULL) {
+ talloc_free(ctdb_db->hot_keys[id].key.dptr);
}
- ctdb_db->statistics.hot_keys[id].key.dsize = key.dsize;
- ctdb_db->statistics.hot_keys[id].key.dptr = talloc_memdup(ctdb_db, key.dptr, key.dsize);
- ctdb_db->statistics.hot_keys[id].count = count;
+ ctdb_db->hot_keys[id].key.dsize = key.dsize;
+ ctdb_db->hot_keys[id].key.dptr = talloc_memdup(ctdb_db,
+ key.dptr,
+ key.dsize);
+ ctdb_db->hot_keys[id].count = count;
keystr = hex_encode_talloc(ctdb_db,
(unsigned char *)key.dptr, key.dsize);
sort_keys:
for (i = 1; i < MAX_HOT_KEYS; i++) {
- if (ctdb_db->statistics.hot_keys[i].count == 0) {
+ if (ctdb_db->hot_keys[i].count == 0) {
continue;
}
- if (ctdb_db->statistics.hot_keys[i].count < ctdb_db->statistics.hot_keys[0].count) {
- count = ctdb_db->statistics.hot_keys[i].count;
- ctdb_db->statistics.hot_keys[i].count = ctdb_db->statistics.hot_keys[0].count;
- ctdb_db->statistics.hot_keys[0].count = count;
-
- key = ctdb_db->statistics.hot_keys[i].key;
- ctdb_db->statistics.hot_keys[i].key = ctdb_db->statistics.hot_keys[0].key;
- ctdb_db->statistics.hot_keys[0].key = key;
+ if (ctdb_db->hot_keys[i].count < ctdb_db->hot_keys[0].count) {
+ count = ctdb_db->hot_keys[i].count;
+ ctdb_db->hot_keys[i].count = ctdb_db->hot_keys[0].count;
+ ctdb_db->hot_keys[0].count = count;
+
+ key = ctdb_db->hot_keys[i].key;
+ ctdb_db->hot_keys[i].key = ctdb_db->hot_keys[0].key;
+ ctdb_db->hot_keys[0].key = key;
}
}
}
void ctdb_db_statistics_reset(struct ctdb_db_context *ctdb_db)
{
- struct ctdb_db_statistics_old *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);
+ if (ctdb_db->hot_keys[i].key.dsize > 0) {
+ TALLOC_FREE(ctdb_db->hot_keys[i].key.dptr);
+ ctdb_db->hot_keys[i].key.dsize = 0;
}
+ ctdb_db->hot_keys[i].count = 0;
}
ZERO_STRUCT(ctdb_db->statistics);
len = offsetof(struct ctdb_db_statistics_old, hot_keys_wire);
for (i = 0; i < MAX_HOT_KEYS; i++) {
- len += ctdb_db->statistics.hot_keys[i].key.dsize;
+ struct ctdb_db_statistics_old *s = &ctdb_db->statistics;
+
+ s->hot_keys[i].key.dsize = ctdb_db->hot_keys[i].key.dsize;
+ s->hot_keys[i].key.dptr = ctdb_db->hot_keys[i].key.dptr;
+ s->hot_keys[i].count = ctdb_db->hot_keys[i].count;
+
+ len += s->hot_keys[i].key.dsize;
}
stats = talloc_size(outdata, len);