mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
lightningd/plugin.c: Add a --dev-builtin-plugins-unimportant for developers who want to mess around with the builtin plugins.
This commit is contained in:
committed by
neil saitug
parent
1aa076845a
commit
1ded3fc52f
@@ -566,6 +566,10 @@ static void dev_register_opts(struct lightningd *ld)
|
|||||||
opt_register_noarg("--dev-no-version-checks", opt_set_bool,
|
opt_register_noarg("--dev-no-version-checks", opt_set_bool,
|
||||||
&ld->dev_no_version_checks,
|
&ld->dev_no_version_checks,
|
||||||
"Skip calling subdaemons with --version on startup");
|
"Skip calling subdaemons with --version on startup");
|
||||||
|
opt_register_early_noarg("--dev-builtin-plugins-unimportant",
|
||||||
|
opt_set_bool,
|
||||||
|
&ld->plugins->dev_builtin_plugins_unimportant,
|
||||||
|
"Make builtin plugins unimportant so you can plugin stop them.");
|
||||||
}
|
}
|
||||||
#endif /* DEVELOPER */
|
#endif /* DEVELOPER */
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ struct plugins *plugins_new(const tal_t *ctx, struct log_book *log_book,
|
|||||||
p->json_cmds = tal_arr(p, struct command *, 0);
|
p->json_cmds = tal_arr(p, struct command *, 0);
|
||||||
p->blacklist = tal_arr(p, const char *, 0);
|
p->blacklist = tal_arr(p, const char *, 0);
|
||||||
p->shutdown = false;
|
p->shutdown = false;
|
||||||
|
#if DEVELOPER
|
||||||
|
p->dev_builtin_plugins_unimportant = false;
|
||||||
|
#endif /* DEVELOPER */
|
||||||
uintmap_init(&p->pending_requests);
|
uintmap_init(&p->pending_requests);
|
||||||
memleak_add_helper(p, memleak_help_pending_requests);
|
memleak_add_helper(p, memleak_help_pending_requests);
|
||||||
|
|
||||||
@@ -1328,6 +1331,27 @@ void plugins_init(struct plugins *plugins)
|
|||||||
plugins->default_dir = path_join(plugins, plugins->ld->config_basedir, "plugins");
|
plugins->default_dir = path_join(plugins, plugins->ld->config_basedir, "plugins");
|
||||||
plugins_add_default_dir(plugins);
|
plugins_add_default_dir(plugins);
|
||||||
|
|
||||||
|
#if DEVELOPER
|
||||||
|
if (plugins->dev_builtin_plugins_unimportant) {
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
log_debug(plugins->log, "Builtin plugins now unimportant");
|
||||||
|
|
||||||
|
/* For each builtin plugin, check for a matching plugin
|
||||||
|
* and make it unimportant. */
|
||||||
|
for (i = 0; list_of_builtin_plugins[i]; ++i) {
|
||||||
|
const char *name = list_of_builtin_plugins[i];
|
||||||
|
struct plugin *p;
|
||||||
|
list_for_each(&plugins->plugins, p, list) {
|
||||||
|
if (plugin_paths_match(p->cmd, name)) {
|
||||||
|
p->important = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* DEVELOPER */
|
||||||
|
|
||||||
setenv("LIGHTNINGD_PLUGIN", "1", 1);
|
setenv("LIGHTNINGD_PLUGIN", "1", 1);
|
||||||
setenv("LIGHTNINGD_VERSION", version(), 1);
|
setenv("LIGHTNINGD_VERSION", version(), 1);
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,11 @@ struct plugins {
|
|||||||
|
|
||||||
/* Whether we are shutting down (`plugins_free` is called) */
|
/* Whether we are shutting down (`plugins_free` is called) */
|
||||||
bool shutdown;
|
bool shutdown;
|
||||||
|
|
||||||
|
#if DEVELOPER
|
||||||
|
/* Whether builtin plugins should be overridden as unimportant. */
|
||||||
|
bool dev_builtin_plugins_unimportant;
|
||||||
|
#endif /* DEVELOPER */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The value of a plugin option, which can have different types.
|
/* The value of a plugin option, which can have different types.
|
||||||
|
|||||||
@@ -1596,3 +1596,9 @@ def test_important_plugin(node_factory):
|
|||||||
# node should die as well.
|
# node should die as well.
|
||||||
n.daemon.wait_for_log('pay: Plugin marked as important, shutting down lightningd')
|
n.daemon.wait_for_log('pay: Plugin marked as important, shutting down lightningd')
|
||||||
wait_for(lambda: not n.daemon.running)
|
wait_for(lambda: not n.daemon.running)
|
||||||
|
|
||||||
|
|
||||||
|
@unittest.skipIf(not DEVELOPER, "tests developer-only option.")
|
||||||
|
def test_dev_builtin_plugins_unimportant(node_factory):
|
||||||
|
n = node_factory.get_node(options={"dev-builtin-plugins-unimportant": None})
|
||||||
|
n.rpc.plugin_stop(plugin="pay")
|
||||||
|
|||||||
Reference in New Issue
Block a user