From a0c8961e4732d71aaed1f4cda663203ff722b23e Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Wed, 23 Apr 2014 00:13:50 +0200 Subject: [PATCH] backends: Destroy dbi/unixsock clients on shutdown. This would also be cleaned up when destroying the registered user data objects but doing so on shutdown in much cleaner. --- src/backend/collectd/unixsock.c | 5 +++++ src/backend/mk-livestatus.c | 12 ++++++++++++ src/backend/puppet/store-configs.c | 13 +++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/backend/collectd/unixsock.c b/src/backend/collectd/unixsock.c index 6fc2ef9..8ac829d 100644 --- a/src/backend/collectd/unixsock.c +++ b/src/backend/collectd/unixsock.c @@ -192,6 +192,11 @@ sdb_collectd_init(sdb_object_t *user_data) static int sdb_collectd_shutdown(__attribute__((unused)) sdb_object_t *user_data) { + if (! user_data) + return -1; + + sdb_unixsock_client_destroy(SDB_OBJ_WRAPPER(user_data)->data); + SDB_OBJ_WRAPPER(user_data)->data = NULL; return 0; } /* sdb_collectd_shutdown */ diff --git a/src/backend/mk-livestatus.c b/src/backend/mk-livestatus.c index 21c603a..e631ae7 100644 --- a/src/backend/mk-livestatus.c +++ b/src/backend/mk-livestatus.c @@ -146,6 +146,17 @@ sdb_livestatus_init(sdb_object_t *user_data) return 0; } /* sdb_livestatus_init */ +static int +sdb_livestatus_shutdown(sdb_object_t *user_data) +{ + if (! user_data) + return -1; + + sdb_unixsock_client_destroy(SDB_OBJ_WRAPPER(user_data)->data); + SDB_OBJ_WRAPPER(user_data)->data = NULL; + return 0; +} /* sdb_livestatus_shutdown */ + static int sdb_livestatus_collect(sdb_object_t *user_data) { @@ -279,6 +290,7 @@ sdb_livestatus_config_instance(oconfig_item_t *ci) } sdb_plugin_register_init(cb_name, sdb_livestatus_init, user_data); + sdb_plugin_register_shutdown(cb_name, sdb_livestatus_shutdown, user_data); sdb_plugin_register_collector(cb_name, sdb_livestatus_collect, /* interval */ NULL, user_data); diff --git a/src/backend/puppet/store-configs.c b/src/backend/puppet/store-configs.c index 5506b0a..0f95ae5 100644 --- a/src/backend/puppet/store-configs.c +++ b/src/backend/puppet/store-configs.c @@ -138,6 +138,17 @@ sdb_puppet_stcfg_init(sdb_object_t *user_data) return 0; } /* sdb_puppet_stcfg_init */ +static int +sdb_puppet_stcfg_shutdown(sdb_object_t *user_data) +{ + if (! user_data) + return -1; + + sdb_dbi_client_destroy(SDB_OBJ_WRAPPER(user_data)->data); + SDB_OBJ_WRAPPER(user_data)->data = NULL; + return 0; +} /* sdb_puppet_stcfg_shutdown */ + static int sdb_puppet_stcfg_collect(sdb_object_t *user_data) { @@ -330,6 +341,8 @@ sdb_puppet_stcfg_config_conn(oconfig_item_t *ci) } sdb_plugin_register_init(cb_name, sdb_puppet_stcfg_init, user_data); + sdb_plugin_register_shutdown(cb_name, sdb_puppet_stcfg_shutdown, + user_data); sdb_plugin_register_collector(cb_name, sdb_puppet_stcfg_collect, /* interval */ NULL, user_data); -- 2.30.2