Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
cellframe-sdk
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Code
Merge requests
20
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
cellframe
cellframe-sdk
Commits
215487b1
Commit
215487b1
authored
4 years ago
by
Roman Khlopkov
🔜
Browse files
Options
Downloads
Patches
Plain Diff
[*] Synchronization is done with minimum link_require now
parent
3dadda5b
No related branches found
No related tags found
1 merge request
!100
bugs-3427
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
modules/net/dap_chain_net.c
+22
-19
22 additions, 19 deletions
modules/net/dap_chain_net.c
with
22 additions
and
19 deletions
modules/net/dap_chain_net.c
+
22
−
19
View file @
215487b1
...
@@ -118,10 +118,11 @@ typedef struct dap_chain_net_pvt{
...
@@ -118,10 +118,11 @@ typedef struct dap_chain_net_pvt{
dap_chain_node_info_t
*
node_info
;
// Current node's info
dap_chain_node_info_t
*
node_info
;
// Current node's info
dap_chain_node_client_t
*
links
;
dap_chain_node_client_t
*
links
;
size_t
links_count
;
dap_chain_node_addr_t
*
links_addrs
;
dap_chain_node_addr_t
*
links_addrs
;
size_t
links_count
;
size_t
links_addrs_count
;
size_t
links_addrs_count
;
size_t
links_success
;
size_t
addr_request_attempts
;
size_t
addr_request_attempts
;
bool
load_mode
;
bool
load_mode
;
...
@@ -393,7 +394,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -393,7 +394,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
l_links_addrs_count
*
sizeof
(
dap_chain_node_addr_t
));
l_links_addrs_count
*
sizeof
(
dap_chain_node_addr_t
));
// add linked nodes for connect
// add linked nodes for connect
for
(
uint16_t
i
=
0
;
i
<
min
(
4
,
l_cur_node_info
->
hdr
.
links_number
);
i
++
)
{
for
(
uint16_t
i
=
0
;
i
<
min
(
s_max_links_count
,
l_cur_node_info
->
hdr
.
links_number
);
i
++
)
{
dap_chain_node_addr_t
*
l_addr
=
l_cur_node_info
->
links
+
i
;
dap_chain_node_addr_t
*
l_addr
=
l_cur_node_info
->
links
+
i
;
//dap_chain_node_addr_t link_addr = l_cur_node_info->links[i];
//dap_chain_node_addr_t link_addr = l_cur_node_info->links[i];
dap_chain_node_info_t
*
l_remore_node_info
=
dap_chain_node_info_read
(
l_net
,
l_addr
);
dap_chain_node_info_t
*
l_remore_node_info
=
dap_chain_node_info_read
(
l_net
,
l_addr
);
...
@@ -411,8 +412,8 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -411,8 +412,8 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
}
}
// if no links then add root nodes for connect
// if no links then add root nodes for connect
if
(
!
l_pvt_net
->
links_addrs_count
){
if
(
!
l_pvt_net
->
links_addrs_count
){
// use no more then
4
root node
// use no more then
s_max_links_count
root node
int
l_use_root_nodes
=
min
(
4
,
l_pvt_net
->
seed_aliases_count
);
int
l_use_root_nodes
=
min
(
s_max_links_count
,
l_pvt_net
->
seed_aliases_count
);
l_pvt_net
->
links_addrs
=
DAP_NEW_Z_SIZE
(
dap_chain_node_addr_t
,
l_pvt_net
->
links_addrs
=
DAP_NEW_Z_SIZE
(
dap_chain_node_addr_t
,
l_use_root_nodes
*
sizeof
(
dap_chain_node_addr_t
));
l_use_root_nodes
*
sizeof
(
dap_chain_node_addr_t
));
...
@@ -453,13 +454,18 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -453,13 +454,18 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
log_it
(
L_WARNING
,
"Target state is NET_STATE_LINKS_PREPARE? Realy?"
);
log_it
(
L_WARNING
,
"Target state is NET_STATE_LINKS_PREPARE? Realy?"
);
l_pvt_net
->
state
=
NET_STATE_OFFLINE
;
l_pvt_net
->
state
=
NET_STATE_OFFLINE
;
}
}
l_pvt_net
->
links_success
=
0
;
}
}
break
;
break
;
case
NET_STATE_LINKS_CONNECTING
:{
case
NET_STATE_LINKS_CONNECTING
:{
size_t
l_links_count
=
l_pvt_net
->
links_count
;
size_t
l_links_count
=
l_pvt_net
->
links_count
;
if
(
l_links_count
>=
s_required_links_count
||
(
l_links_count
+
1
)
>=
s_max_links_count
)
{
if
(
l_pvt_net
->
links_success
>=
s_required_links_count
)
{
// TODO what if other failed and we want more?
log_it
(
L_INFO
,
"Synchronization done"
);
l_pvt_net
->
links_count
=
0
;
l_pvt_net
->
links_success
=
0
;
l_pvt_net
->
flags
&=
~
F_DAP_CHAIN_NET_GO_SYNC
;
l_pvt_net
->
state
=
NET_STATE_ONLINE
;
}
}
if
(
l_links_count
<
l_pvt_net
->
links_addrs_count
)
{
if
(
l_links_count
<
l_pvt_net
->
links_addrs_count
)
{
l_pvt_net
->
links_count
++
;
l_pvt_net
->
links_count
++
;
...
@@ -490,7 +496,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -490,7 +496,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
}
else
{
}
else
{
log_it
(
L_DEBUG
,
"Cant establish link %u"
,
l_links_count
);
log_it
(
L_DEBUG
,
"Cant establish link %u"
,
l_links_count
);
dap_chain_node_client_close
(
l_node_client
);
dap_chain_node_client_close
(
l_node_client
);
l_
node_client
=
NULL
;
l_
pvt_net
->
links
=
NULL
;
}
}
}
}
}
}
...
@@ -578,7 +584,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -578,7 +584,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
if
(
res
==
0
)
{
if
(
res
==
0
)
{
log_it
(
L_WARNING
,
"Can't send NODE_ADDR_REQUEST packet"
);
log_it
(
L_WARNING
,
"Can't send NODE_ADDR_REQUEST packet"
);
dap_chain_node_client_close
(
l_node_client
);
dap_chain_node_client_close
(
l_node_client
);
l_
node_client
=
NULL
;
l_
pvt_net
->
links
=
NULL
;
l_pvt_net
->
state
=
NET_STATE_LINKS_CONNECTING
;
l_pvt_net
->
state
=
NET_STATE_LINKS_CONNECTING
;
break
;
// try with another link
break
;
// try with another link
}
}
...
@@ -644,7 +650,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -644,7 +650,7 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
if
(
l_res
==
0
)
{
if
(
l_res
==
0
)
{
log_it
(
L_WARNING
,
"Can't send GDB sync request"
);
log_it
(
L_WARNING
,
"Can't send GDB sync request"
);
dap_chain_node_client_close
(
l_node_client
);
dap_chain_node_client_close
(
l_node_client
);
l_
node_client
=
NULL
;
l_
pvt_net
->
links
=
NULL
;
l_pvt_net
->
state
=
NET_STATE_LINKS_CONNECTING
;
l_pvt_net
->
state
=
NET_STATE_LINKS_CONNECTING
;
break
;
//try another link
break
;
//try another link
}
}
...
@@ -669,8 +675,8 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -669,8 +675,8 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
if
(
l_pvt_net
->
state_target
>=
NET_STATE_SYNC_CHAINS
){
if
(
l_pvt_net
->
state_target
>=
NET_STATE_SYNC_CHAINS
){
l_pvt_net
->
state
=
NET_STATE_SYNC_CHAINS
;
l_pvt_net
->
state
=
NET_STATE_SYNC_CHAINS
;
}
else
{
}
else
{
l_pvt_net
->
flags
&=
~
F_DAP_CHAIN_NET_GO_SYNC
;
l_pvt_net
->
links_success
++
;
l_pvt_net
->
state
=
NET_STATE_
ON
LIN
E
;
l_pvt_net
->
state
=
NET_STATE_LIN
KS_CONNECTING
;
}
}
}
}
break
;
break
;
...
@@ -734,15 +740,12 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
...
@@ -734,15 +740,12 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
//DAP_DELETE( l_atom_iter );
//DAP_DELETE( l_atom_iter );
}
}
dap_chain_node_client_close
(
l_node_client
);
dap_chain_node_client_close
(
l_node_client
);
l_node_client
=
NULL
;
l_pvt_net
->
links
=
NULL
;
if
(
l_sync_errors
)
{
if
(
!
l_sync_errors
)
{
l_pvt_net
->
state
=
NET_STATE_LINKS_CONNECTING
;
l_pvt_net
->
links_success
++
;
break
;
}
}
log_it
(
L_INFO
,
"Synchronization done"
);
l_pvt_net
->
state
=
NET_STATE_LINKS_CONNECTING
;
l_pvt_net
->
flags
&=
~
F_DAP_CHAIN_NET_GO_SYNC
;
break
;
l_pvt_net
->
state
=
NET_STATE_ONLINE
;
l_pvt_net
->
links_count
=
0
;
}
}
break
;
break
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment