|
|
@ -412,6 +412,7 @@ struct stratifier_data { |
|
|
|
workbase_t *current_workbase; |
|
|
|
workbase_t *current_workbase; |
|
|
|
int workbases_generated; |
|
|
|
int workbases_generated; |
|
|
|
txntable_t *txns; |
|
|
|
txntable_t *txns; |
|
|
|
|
|
|
|
int txns_generated; |
|
|
|
|
|
|
|
|
|
|
|
/* Workbases from remote trusted servers */ |
|
|
|
/* Workbases from remote trusted servers */ |
|
|
|
workbase_t *remote_workbases; |
|
|
|
workbase_t *remote_workbases; |
|
|
@ -1227,6 +1228,7 @@ static void update_txns(ckpool_t *ckp, sdata_t *sdata, txntable_t *txns, bool lo |
|
|
|
json_array_append_new(txn_array, txn_val); |
|
|
|
json_array_append_new(txn_array, txn_val); |
|
|
|
/* Move to the sdata transaction table */ |
|
|
|
/* Move to the sdata transaction table */ |
|
|
|
HASH_ADD_STR(sdata->txns, hash, tmp); |
|
|
|
HASH_ADD_STR(sdata->txns, hash, tmp); |
|
|
|
|
|
|
|
sdata->txns_generated++; |
|
|
|
added++; |
|
|
|
added++; |
|
|
|
} |
|
|
|
} |
|
|
|
ck_wunlock(&sdata->txn_lock); |
|
|
|
ck_wunlock(&sdata->txn_lock); |
|
|
@ -1614,6 +1616,7 @@ static bool rebuild_txns(ckpool_t *ckp, sdata_t *sdata, workbase_t *wb) |
|
|
|
txn->data = data; |
|
|
|
txn->data = data; |
|
|
|
txn->refcount = REFCOUNT_REMOTE; |
|
|
|
txn->refcount = REFCOUNT_REMOTE; |
|
|
|
HASH_ADD_STR(sdata->txns, hash, txn); |
|
|
|
HASH_ADD_STR(sdata->txns, hash, txn); |
|
|
|
|
|
|
|
sdata->txns_generated++; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
free(data); |
|
|
|
free(data); |
|
|
|
txn->refcount = REFCOUNT_REMOTE; |
|
|
|
txn->refcount = REFCOUNT_REMOTE; |
|
|
@ -3813,10 +3816,14 @@ char *stratifier_stats(ckpool_t *ckp, void *data) |
|
|
|
objects = HASH_COUNT(sdata->workbases); |
|
|
|
objects = HASH_COUNT(sdata->workbases); |
|
|
|
memsize = SAFE_HASH_OVERHEAD(sdata->workbases) + sizeof(workbase_t) * objects; |
|
|
|
memsize = SAFE_HASH_OVERHEAD(sdata->workbases) + sizeof(workbase_t) * objects; |
|
|
|
generated = sdata->workbases_generated; |
|
|
|
generated = sdata->workbases_generated; |
|
|
|
ck_runlock(&sdata->workbase_lock); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JSON_CPACK(subval, "{si,si,si}", "count", objects, "memory", memsize, "generated", generated); |
|
|
|
JSON_CPACK(subval, "{si,si,si}", "count", objects, "memory", memsize, "generated", generated); |
|
|
|
json_set_object(val, "workbases", subval); |
|
|
|
json_set_object(val, "workbases", subval); |
|
|
|
|
|
|
|
objects = HASH_COUNT(sdata->remote_workbases); |
|
|
|
|
|
|
|
memsize = SAFE_HASH_OVERHEAD(sdata->remote_workbases) + sizeof(workbase_t) * objects; |
|
|
|
|
|
|
|
ck_runlock(&sdata->workbase_lock); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JSON_CPACK(subval, "{si,si}", "count", objects, "memory", memsize); |
|
|
|
|
|
|
|
json_set_object(val, "remote_workbases", subval); |
|
|
|
|
|
|
|
|
|
|
|
ck_rlock(&sdata->instance_lock); |
|
|
|
ck_rlock(&sdata->instance_lock); |
|
|
|
objects = HASH_COUNT(sdata->user_instances); |
|
|
|
objects = HASH_COUNT(sdata->user_instances); |
|
|
@ -3847,6 +3854,14 @@ char *stratifier_stats(ckpool_t *ckp, void *data) |
|
|
|
JSON_CPACK(subval, "{si,si,si}", "count", objects, "memory", memsize, "generated", generated); |
|
|
|
JSON_CPACK(subval, "{si,si,si}", "count", objects, "memory", memsize, "generated", generated); |
|
|
|
json_set_object(val, "shares", subval); |
|
|
|
json_set_object(val, "shares", subval); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ck_rlock(&sdata->txn_lock); |
|
|
|
|
|
|
|
objects = HASH_COUNT(sdata->txns); |
|
|
|
|
|
|
|
memsize = SAFE_HASH_OVERHEAD(sdata->txns) + sizeof(txntable_t) * objects; |
|
|
|
|
|
|
|
generated = sdata->txns_generated; |
|
|
|
|
|
|
|
JSON_CPACK(subval, "{si,si,si}", "count", objects, "memory", memsize, "generated", generated); |
|
|
|
|
|
|
|
json_set_object(val, "transactions", subval); |
|
|
|
|
|
|
|
ck_runlock(&sdata->txn_lock); |
|
|
|
|
|
|
|
|
|
|
|
ckmsgq_stats(sdata->ssends, sizeof(smsg_t), &subval); |
|
|
|
ckmsgq_stats(sdata->ssends, sizeof(smsg_t), &subval); |
|
|
|
json_set_object(val, "ssends", subval); |
|
|
|
json_set_object(val, "ssends", subval); |
|
|
|
/* Don't know exactly how big the string is so just count the pointer for now */ |
|
|
|
/* Don't know exactly how big the string is so just count the pointer for now */ |
|
|
|