From 483c3c4318136132c719fe09dc5c573ac7a3a92b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Al=D0=B5x=D0=B0nder=20Lysik=D0=BEv?= <alexander.lysikov@demlabs.net> Date: Fri, 13 Mar 2020 21:08:30 +0500 Subject: [PATCH] fixed selection of start item for synchronization --- dap_chain_node_cli_cmd.c | 4 ++++ dap_chain_node_client.c | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dap_chain_node_cli_cmd.c b/dap_chain_node_cli_cmd.c index 3869b1631a..6b6b4f5d82 100644 --- a/dap_chain_node_cli_cmd.c +++ b/dap_chain_node_cli_cmd.c @@ -1140,9 +1140,12 @@ int com_node(int a_argc, char ** a_argv, char **a_str_reply) dap_chain_node_cli_set_reply_text(a_str_reply, "Error: can't sync with node "NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS_S(l_node_client->remote_node_addr)); + log_it(L_WARNING, "Gdb synced err -2"); return -2; } + log_it(L_INFO, "Gdb synced Ok"); + // Requesting chains dap_chain_t *l_chain = NULL; DL_FOREACH(l_net->pub.chains, l_chain) @@ -1158,6 +1161,7 @@ int com_node(int a_argc, char ** a_argv, char **a_str_reply) // clean client struct dap_chain_node_client_close(l_node_client); DAP_DELETE(l_remote_node_info); + log_it(L_INFO, "Chain '%s' synced error: Can't send sync chains request", l_chain->name); return -3; } log_it(L_NOTICE, "Requested syncronization for chain \"%s\"", l_chain->name); diff --git a/dap_chain_node_client.c b/dap_chain_node_client.c index 3ac5e2c326..8ec2378dcc 100644 --- a/dap_chain_node_client.c +++ b/dap_chain_node_client.c @@ -287,12 +287,17 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha if(a_pkt_type == DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB) { a_ch_chain->request_last_ts = dap_db_log_get_last_id(); uint64_t l_start_item = l_request->id_start; + dap_db_log_list_t *l_db_log = NULL; // If the current global_db has been truncated, but the remote node has not known this + uint64_t l_last_id = dap_db_log_get_last_id(); if(l_request->id_start > a_ch_chain->request_last_ts){ - l_start_item = 0; + l_db_log = dap_db_log_list_start(l_start_item + 1); + if(!l_db_log) + l_start_item = 0; } //dap_list_t *l_list = dap_db_log_get_list(l_request->id_start + 1); - dap_db_log_list_t *l_db_log = dap_db_log_list_start(l_start_item + 1); + if(!l_db_log) + l_db_log = dap_db_log_list_start(l_start_item + 1); if(l_db_log) { // Add it to outgoing list //l_list->prev = a_ch_chain->request_global_db_trs; -- GitLab