trace: Instrument topology functions

This commit is contained in:
Christian Decker 2023-07-27 14:43:58 +09:30 committed by Rusty Russell
parent 3da974ca19
commit 039aaaf777
2 changed files with 19 additions and 0 deletions

View file

@ -15,6 +15,7 @@
#include <common/configdir.h> #include <common/configdir.h>
#include <common/json_parse.h> #include <common/json_parse.h>
#include <common/memleak.h> #include <common/memleak.h>
#include <common/trace.h>
#include <db/exec.h> #include <db/exec.h>
#include <lightningd/bitcoind.h> #include <lightningd/bitcoind.h>
#include <lightningd/chaintopology.h> #include <lightningd/chaintopology.h>
@ -464,6 +465,8 @@ getrawblockbyheight_callback(const char *buf, const jsmntok_t *toks,
const char *block_str, *err; const char *block_str, *err;
struct bitcoin_blkid blkid; struct bitcoin_blkid blkid;
struct bitcoin_block *blk; struct bitcoin_block *blk;
trace_span_resume(call);
trace_span_end(call);
/* If block hash is `null`, this means not found! Call the callback /* If block hash is `null`, this means not found! Call the callback
* with NULL values. */ * with NULL values. */
@ -514,6 +517,9 @@ void bitcoind_getrawblockbyheight_(struct bitcoind *bitcoind,
call->cb = cb; call->cb = cb;
call->cb_arg = cb_arg; call->cb_arg = cb_arg;
trace_span_start("plugin/bitcoind", call);
trace_span_tag(call, "method", "getrawblockbyheight");
trace_span_suspend(call);
req = jsonrpc_request_start(bitcoind, "getrawblockbyheight", NULL, true, req = jsonrpc_request_start(bitcoind, "getrawblockbyheight", NULL, true,
bitcoind->log, bitcoind->log,
NULL, getrawblockbyheight_callback, NULL, getrawblockbyheight_callback,

View file

@ -10,6 +10,7 @@
#include <common/json_command.h> #include <common/json_command.h>
#include <common/json_param.h> #include <common/json_param.h>
#include <common/timeout.h> #include <common/timeout.h>
#include <common/trace.h>
#include <common/type_to_string.h> #include <common/type_to_string.h>
#include <db/exec.h> #include <db/exec.h>
#include <lightningd/bitcoind.h> #include <lightningd/bitcoind.h>
@ -971,13 +972,22 @@ static void add_tip(struct chain_topology *topo, struct block *b)
b->prev = topo->tip; b->prev = topo->tip;
topo->tip->next = b; /* FIXME this doesn't seem to be used anywhere */ topo->tip->next = b; /* FIXME this doesn't seem to be used anywhere */
topo->tip = b; topo->tip = b;
trace_span_start("wallet_block_add", b);
wallet_block_add(topo->ld->wallet, b); wallet_block_add(topo->ld->wallet, b);
trace_span_end(b);
trace_span_start("topo_add_utxo", b);
topo_add_utxos(topo, b); topo_add_utxos(topo, b);
trace_span_end(b);
trace_span_start("topo_update_spends", b);
topo_update_spends(topo, b); topo_update_spends(topo, b);
trace_span_end(b);
/* Only keep the transactions we care about. */ /* Only keep the transactions we care about. */
trace_span_start("filter_block_txs", b);
filter_block_txs(topo, b); filter_block_txs(topo, b);
trace_span_end(b);
block_map_add(topo->block_map, b); block_map_add(topo->block_map, b);
topo->max_blockheight = b->height; topo->max_blockheight = b->height;
@ -1056,6 +1066,7 @@ static void get_new_block(struct bitcoind *bitcoind,
if (!blkid && !blk) { if (!blkid && !blk) {
/* No such block, we're done. */ /* No such block, we're done. */
updates_complete(topo); updates_complete(topo);
trace_span_end(topo);
return; return;
} }
assert(blkid && blk); assert(blkid && blk);
@ -1075,6 +1086,7 @@ static void get_new_block(struct bitcoind *bitcoind,
} }
/* Try for next one. */ /* Try for next one. */
trace_span_end(topo);
try_extend_tip(topo); try_extend_tip(topo);
} }
@ -1083,6 +1095,7 @@ static void try_extend_tip(struct chain_topology *topo)
topo->extend_timer = NULL; topo->extend_timer = NULL;
if (topo->stopping) if (topo->stopping)
return; return;
trace_span_start("extend_tip", topo);
bitcoind_getrawblockbyheight(topo->bitcoind, topo->tip->height + 1, bitcoind_getrawblockbyheight(topo->bitcoind, topo->tip->height + 1,
get_new_block, topo); get_new_block, topo);
} }