rgb-cln/lightningd
Rusty Russell 59e75f1b2c gossipd: reply to large listchannels in parts.
This has two effects: most importantly, it avoids the problem where
lightningd creates a 800MB JSON blob in response to listchannels,
which causes OOM on the Raspberry Pi (our previous max allocation was
832MB).  This is because lightning-cli can start draining the JSON
while we're filling the buffer, so we end up with a max allocation of
68MB.

But despite being less efficient (multiple queries to gossipd), it
actually speeds things up due to the parallelism:

MCP with -O3 -flto before vs after:
-listchannels_sec:8.980000-9.330000(9.206+/-0.14)
+listchannels_sec:7.500000-7.830000(7.656+/-0.11)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2019-05-22 11:28:44 +00:00
..
test lightningd: hang up on clients if they make us run out of memory. 2019-05-22 11:28:44 +00:00
.gitignore handshaked: remove. 2017-10-20 18:31:32 +02:00
Makefile lightningd: group crypto_state and fds into a convenient structure. 2019-05-13 05:16:18 +00:00
bitcoind.c Remove Sensitive RPC Data from Logs (#2520) 2019-04-03 03:06:06 +00:00
bitcoind.h lightningd: allow more than one bitcoind request at once, run multiple queues. 2018-09-19 13:21:21 +02:00
chaintopology.c wally: Migrate main daemon to use wally transactions 2019-04-08 00:00:00 +00:00
chaintopology.h openingd/json_fund_channel: 2019-01-29 04:50:01 +00:00
channel.c openingd: check with lightningd when we receive an offer. 2019-05-20 20:31:07 -04:00
channel.h db: add support for remote end specify option_upfront_shutdown_script. 2019-05-02 01:18:33 +00:00
channel_control.c gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
channel_control.h lightningd: group crypto_state and fds into a convenient structure. 2019-05-13 05:16:18 +00:00
channel_state.h lightningd: new state AWAITING_UNILATERAL. 2018-08-23 14:46:22 +02:00
closing_control.c gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
closing_control.h lightningd: group crypto_state and fds into a convenient structure. 2019-05-13 05:16:18 +00:00
connect_control.c gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
connect_control.h Use node_id everywhere for nodes. 2019-04-09 12:37:16 -07:00
gossip_control.c gossipd: reply to large listchannels in parts. 2019-05-22 11:28:44 +00:00
gossip_control.h connectd: wean off gossip_wire message types, use our own. 2018-07-25 02:13:52 +00:00
gossip_msg.c gossipd: make more compact getchannels entries. 2019-04-09 12:37:16 -07:00
gossip_msg.h gossipd: make more compact getchannels entries. 2019-04-09 12:37:16 -07:00
hsm_control.c Use node_id everywhere for nodes. 2019-04-09 12:37:16 -07:00
hsm_control.h Use node_id everywhere for nodes. 2019-04-09 12:37:16 -07:00
htlc_end.c wallet: Add `received_time` to `htlc_in` for forwarding times 2019-04-10 23:48:39 +00:00
htlc_end.h wallet: Add `received_time` to `htlc_in` for forwarding times 2019-04-10 23:48:39 +00:00
invoice.c autoclean: make this a plugin. 2019-05-22 00:18:29 +02:00
invoice.h lightningd: move local invoice resolution into invoice.c function. 2019-04-12 03:32:48 +00:00
json.c json: rename json_add_amount_sat to json_add_amount_sat_compat. 2019-05-20 20:31:07 -04:00
json.h json: rename json_add_amount_sat to json_add_amount_sat_compat. 2019-05-20 20:31:07 -04:00
json_stream.c lightningd: hang up on clients if they make us run out of memory. 2019-05-22 11:28:44 +00:00
json_stream.h update-mocks: make sure we can find json_add functions. 2019-02-21 00:44:57 +00:00
jsonrpc.c Rpc: sort help output by command name 2019-05-21 09:16:39 +00:00
jsonrpc.h lightningd: re-enable IO logging for JSON output. 2019-02-21 00:44:57 +00:00
lightningd.c gossipd: remove unnecessary dev_unknown_channel_satoshis arg. 2019-05-22 11:28:44 +00:00
lightningd.h lightningd: hang up on clients if they make us run out of memory. 2019-05-22 11:28:44 +00:00
log.c log: truncate giant IO logging. 2019-04-08 04:41:43 +00:00
log.h log: truncate giant IO logging. 2019-04-08 04:41:43 +00:00
log_status.c Remove tal_len, use tal_count() or tal_bytelen(). 2018-07-30 11:31:17 +02:00
log_status.h status: add multiple levels of logging. 2018-02-07 00:46:49 +00:00
memdump.c jsonrpc: probe sites for usage information once, at start. 2019-02-07 20:33:50 +00:00
memdump.h lightningd: add code to search strmaps for memleak detection. 2019-02-07 20:33:50 +00:00
notification.c Use node_id everywhere for nodes. 2019-04-09 12:37:16 -07:00
notification.h Use node_id everywhere for nodes. 2019-04-09 12:37:16 -07:00
onchain_control.c lightningd: group crypto_state and fds into a convenient structure. 2019-05-13 05:16:18 +00:00
onchain_control.h onchaind: Replay stored channeltxs to restore onchaind state 2018-04-25 14:33:38 +02:00
opening_control.c openingd: add openchannel hook. 2019-05-20 20:31:07 -04:00
opening_control.h openingd: check with lightningd when we receive an offer. 2019-05-20 20:31:07 -04:00
options.c gossipd: remove unnecessary dev_unknown_channel_satoshis arg. 2019-05-22 11:28:44 +00:00
options.h opts: Split early from non-early args so plugins can register theirs 2018-11-13 00:44:50 +01:00
pay.c json: rename json_add_amount_sat to json_add_amount_sat_compat. 2019-05-20 20:31:07 -04:00
pay.h lightningd: move pay internals back into pay.c 2019-01-23 22:08:08 +01:00
peer_comms.c gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
peer_comms.h gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
peer_control.c json: rename json_add_amount_sat to json_add_amount_sat_compat. 2019-05-20 20:31:07 -04:00
peer_control.h gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
peer_htlcs.c json: rename json_add_amount_sat to json_add_amount_sat_compat. 2019-05-20 20:31:07 -04:00
peer_htlcs.h lightningd: move local invoice resolution into invoice.c function. 2019-04-12 03:32:48 +00:00
ping.c Use node_id everywhere for nodes. 2019-04-09 12:37:16 -07:00
ping.h ping: complete JSON RPC ping commands even if one ping gets no response. 2018-09-14 22:11:23 +02:00
plugin.c plugins: don't hand empty strings for unset options. 2019-05-22 00:18:29 +02:00
plugin.h Add a default 'plugins' directory in the lightning dir 2019-05-21 07:05:43 +00:00
plugin_hook.c lightningd: remove deserialize step for plugin hooks. 2019-04-23 15:26:42 +02:00
plugin_hook.h lightningd: remove deserialize step for plugin hooks. 2019-04-23 15:26:42 +02:00
subd.c gossipd: hand a gossip_store_fd to all subdaemons. 2019-05-13 05:16:18 +00:00
subd.h lightningd: group crypto_state and fds into a convenient structure. 2019-05-13 05:16:18 +00:00
watch.c txwatch: hand ld to callback, don't assume channel is non-NULL. 2018-08-21 00:48:02 +02:00
watch.h txwatch: hand ld to callback, don't assume channel is non-NULL. 2018-08-21 00:48:02 +02:00