mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
plugin: Add a status field to htlcs in listpeers
Annotating the htlc in `listpeers` with their current status, and which plugin is currently holding on to them with their `htlc_accepted` hook can help us debug where plugins may go wrong. Changelog-Added: jsonrpc: HTLCs in `listpeers` are now annotated with a status if they are waiting on an `htlc_accepted` hook of a plugin.
This commit is contained in:
parent
a503032bab
commit
610d8a0a74
@ -505,6 +505,8 @@ static void json_add_htlcs(struct lightningd *ld,
|
||||
channel->our_config.dust_limit, LOCAL,
|
||||
channel->option_anchor_outputs))
|
||||
json_add_bool(response, "local_trimmed", true);
|
||||
if (hin->status != NULL)
|
||||
json_add_string(response, "status", hin->status);
|
||||
json_object_end(response);
|
||||
}
|
||||
|
||||
|
@ -1015,8 +1015,14 @@ static void htlc_accepted_hook_serialize(struct htlc_accepted_hook_payload *p,
|
||||
struct plugin *plugin)
|
||||
{
|
||||
const struct route_step *rs = p->route_step;
|
||||
const struct htlc_in *hin = p->hin;
|
||||
struct htlc_in *hin = p->hin;
|
||||
s32 expiry = hin->cltv_expiry, blockheight = p->ld->topology->tip->height;
|
||||
|
||||
tal_free(hin->status);
|
||||
hin->status =
|
||||
tal_fmt(hin, "Waiting for the htlc_accepted hook of plugin %s",
|
||||
plugin->shortname);
|
||||
|
||||
json_object_start(s, "onion");
|
||||
|
||||
json_add_hex_talarr(s, "payload", rs->raw_payload);
|
||||
|
@ -1059,6 +1059,13 @@ def test_htlc_accepted_hook_direct_restart(node_factory, executor):
|
||||
f1 = executor.submit(l1.rpc.pay, i1)
|
||||
|
||||
l2.daemon.wait_for_log(r'Holding onto an incoming htlc for 10 seconds')
|
||||
|
||||
# Check that the status mentions the HTLC being held
|
||||
l2.rpc.listpeers()
|
||||
peers = l2.rpc.listpeers()['peers']
|
||||
htlc_status = peers[0]['channels'][0]['htlcs'][0].get('status', None)
|
||||
assert htlc_status == "Waiting for the htlc_accepted hook of plugin hold_htlcs.py"
|
||||
|
||||
needle = l2.daemon.logsearch_start
|
||||
l2.restart()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user