diff --git a/src/core/manager.c b/src/core/manager.c index 60d4ef33..20c7cde7 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -152,6 +152,8 @@ neu_manager_t *neu_manager_create() nlog_warn("load plugin error"); } + manager_load_node(manager); + UT_array *single_plugins = neu_plugin_manager_get_single(manager->plugin_manager); @@ -162,7 +164,6 @@ neu_manager_t *neu_manager_create() } utarray_free(single_plugins); - manager_load_node(manager); while (neu_node_manager_exist_uninit(manager->node_manager)) { usleep(1000 * 100); } @@ -1866,6 +1867,11 @@ static void start_static_adapter(neu_manager_t *manager, const char *name) static void start_single_adapter(neu_manager_t *manager, const char *name, const char *plugin_name, bool display) { + if (neu_node_manager_is_exist(manager->node_manager, name)) { + nlog_warn("adapter %s already exist", name); + return; + } + neu_adapter_t * adapter = NULL; neu_plugin_instance_t instance = { 0 }; neu_adapter_info_t adapter_info = { @@ -1883,9 +1889,7 @@ static void start_single_adapter(neu_manager_t *manager, const char *name, adapter = neu_adapter_create(&adapter_info, true); neu_node_manager_add_single(manager->node_manager, adapter, display); - if (display) { - manager_storage_add_node(manager, name, ""); - } + manager_storage_add_node(manager, name, ""); neu_adapter_init(adapter, false); neu_adapter_start_single(adapter); diff --git a/src/core/node_manager.c b/src/core/node_manager.c index f3fd2074..4b6f6314 100644 --- a/src/core/node_manager.c +++ b/src/core/node_manager.c @@ -459,6 +459,18 @@ bool neu_node_manager_is_driver(neu_node_manager_t *mgr, const char *name) return false; } +bool neu_node_manager_is_exist(neu_node_manager_t *mgr, const char *name) +{ + node_entity_t *node = NULL; + + HASH_FIND_STR(mgr->nodes, name, node); + if (node != NULL) { + return true; + } + + return false; +} + UT_array *neu_node_manager_get_addrs(neu_node_manager_t *mgr, int type) { UT_icd icd = { sizeof(struct sockaddr_un), NULL, NULL, NULL }; diff --git a/src/core/node_manager.h b/src/core/node_manager.h index 7ac2a285..087420d6 100644 --- a/src/core/node_manager.h +++ b/src/core/node_manager.h @@ -63,6 +63,7 @@ UT_array * neu_node_manager_get_adapter(neu_node_manager_t *mgr, int type); neu_adapter_t *neu_node_manager_find(neu_node_manager_t *mgr, const char *name); bool neu_node_manager_is_single(neu_node_manager_t *mgr, const char *name); bool neu_node_manager_is_driver(neu_node_manager_t *mgr, const char *name); +bool neu_node_manager_is_exist(neu_node_manager_t *mgr, const char *name); // addr array UT_array *neu_node_manager_get_addrs(neu_node_manager_t *mgr, int type);