fix(driver): if the state of the node was stopped before restart, stop the node

This commit is contained in:
fengzero
2023-07-19 06:46:31 +00:00
parent 7bf3cfdcd4
commit 78e1cfe46d
7 changed files with 18 additions and 13 deletions
+2 -2
View File
@@ -257,8 +257,8 @@ typedef struct neu_resp_error {
} neu_resp_error_t;
typedef struct {
char node[NEU_NODE_NAME_LEN];
bool auto_start;
char node[NEU_NODE_NAME_LEN];
neu_node_running_state_e state;
} neu_req_node_init_t, neu_req_node_uninit_t, neu_resp_node_uninit_t;
typedef struct neu_req_add_plugin {
+3 -3
View File
@@ -244,7 +244,7 @@ int neu_adapter_rename(neu_adapter_t *adapter, const char *new_name)
return 0;
}
void neu_adapter_init(neu_adapter_t *adapter, bool auto_start)
void neu_adapter_init(neu_adapter_t *adapter, neu_node_running_state_e state)
{
neu_reqresp_head_t header = { .type = NEU_REQ_NODE_INIT };
neu_req_node_init_t init = { 0 };
@@ -254,8 +254,8 @@ void neu_adapter_init(neu_adapter_t *adapter, bool auto_start)
strcpy(header.receiver, "manager");
strcpy(init.node, adapter->name);
init.auto_start = auto_start;
init_msg = neu_msg_gen(&header, &init);
init.state = state;
init_msg = neu_msg_gen(&header, &init);
nng_sendmsg(adapter->sock, init_msg, 0);
}
+1 -1
View File
@@ -64,7 +64,7 @@ typedef struct adapter_msg_handler {
} adapter_msg_handler_t;
neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info);
void neu_adapter_init(neu_adapter_t *adapter, bool auto_start);
void neu_adapter_init(neu_adapter_t *adapter, neu_node_running_state_e state);
int neu_adapter_rename(neu_adapter_t *adapter, const char *new_name);
+5 -1
View File
@@ -274,10 +274,14 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
break;
}
if (init->auto_start) {
if (init->state == NEU_NODE_RUNNING_STATE_RUNNING ||
init->state == NEU_NODE_RUNNING_STATE_STOPPED) {
neu_adapter_t *adapter =
neu_node_manager_find(manager->node_manager, init->node);
neu_adapter_start(adapter);
if (init->state == NEU_NODE_RUNNING_STATE_STOPPED) {
neu_adapter_stop(adapter);
}
}
nlog_notice("bind node %s to pipe(%d)", init->node, pipe.id);
+3 -2
View File
@@ -45,7 +45,8 @@ UT_array *neu_manager_get_plugins(neu_manager_t *manager)
}
int neu_manager_add_node(neu_manager_t *manager, const char *node_name,
const char *plugin_name, bool start)
const char * plugin_name,
neu_node_running_state_e state)
{
neu_adapter_t * adapter = NULL;
neu_plugin_instance_t instance = { 0 };
@@ -79,7 +80,7 @@ int neu_manager_add_node(neu_manager_t *manager, const char *node_name,
adapter = neu_adapter_create(&adapter_info);
neu_node_manager_add(manager->node_manager, adapter);
neu_adapter_init(adapter, start);
neu_adapter_init(adapter, state);
return NEU_ERR_SUCCESS;
}
+2 -1
View File
@@ -52,7 +52,8 @@ int neu_manager_del_plugin(neu_manager_t *manager, const char *plugin);
UT_array *neu_manager_get_plugins(neu_manager_t *manager);
int neu_manager_add_node(neu_manager_t *manager, const char *node_name,
const char *plugin_name, bool start);
const char * plugin_name,
neu_node_running_state_e state);
int neu_manager_del_node(neu_manager_t *manager, const char *node_name);
UT_array *neu_manager_get_nodes(neu_manager_t *manager, int type,
const char *plugin, const char *node);
+2 -3
View File
@@ -362,9 +362,8 @@ int manager_load_node(neu_manager_t *manager)
utarray_foreach(node_infos, neu_persist_node_info_t *, node_info)
{
rv = neu_manager_add_node(
manager, node_info->name, node_info->plugin_name,
node_info->state == NEU_NODE_RUNNING_STATE_RUNNING);
rv = neu_manager_add_node(manager, node_info->name,
node_info->plugin_name, node_info->state);
const char *ok_or_err = (0 == rv) ? "success" : "fail";
nlog_notice("load adapter %s type:%d, name:%s plugin:%s state:%d",
ok_or_err, node_info->type, node_info->name,