Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
23971884
Commit
23971884
authored
Dec 06, 2018
by
mdj33
Committed by
vipwzw
Dec 14, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add support main node switch feature readme
parent
57900caa
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
0 deletions
+33
-0
para.go
plugin/consensus/para/para.go
+12
-0
para.md
plugin/consensus/para/para.md
+21
-0
No files found.
plugin/consensus/para/para.go
View file @
23971884
...
...
@@ -489,6 +489,18 @@ func (client *client) findHashMatchedBlock(currSeq *int64, preMainBlockHash *[]b
plog
.
Error
(
"Parachain RequestLastBlock fail"
,
"err"
,
err
)
return
}
//genesis block scenario, get new main node's blockHash as preMainHash, genesis sequence as currSeq
if
lastBlock
.
Height
==
0
{
lastSeq
,
_
,
lastSeqMainHash
,
_
,
err
:=
client
.
getLastBlockInfo
()
if
err
!=
nil
{
plog
.
Error
(
"Parachain GetLastSeq fail"
,
"err"
,
err
)
return
}
*
currSeq
=
lastSeq
*
preMainBlockHash
=
lastSeqMainHash
return
}
findDepth
:=
searchHashMatchBlockDepth
for
height
:=
lastBlock
.
Height
;
height
>
0
&&
findDepth
>
0
;
height
--
{
block
,
err
:=
client
.
GetBlockByHeight
(
height
)
...
...
plugin/consensus/para/para.md
0 → 100644
View file @
23971884
# para
#支持主节点在云端,且允许自由切换,负载均衡
1.
平行链主节点设置在云端作为一个集群,提供统一ip和端口
## 场景
1.
主节点集群同步主网数据,各主节点保持独立
1.
某主节点挂掉,云端自动切换到新的主节点,平行链节点需要检查在新节点获取到的区块和之前的区块hash保持一致,一致指的是新区块是add type,parentHash和之前的
主链hash相同,del type的区块hash和之前主链的hash相同
1.
如果不一致,搜索平行链记录的主节点blockHash在新主节点上的seq作为下一个seq获取tx
1.
如果当前平行链block的mainBlockHash在新节点上找不到,可能是分叉的场景,需要找到分叉处,把以后的平行链block删除,从分叉处下一个seq同步平行链数据
## 测试场景
1.
平行链在blockHeight=1之前主节点切换,平行链重新从seq=startSeq处同步数据(startSeq=0 or 非0场景)
1.
主节点切换,新的主节点seq和blockhash和老的完全一致
1.
主节点切换, 老的blockhash在新的节点上找不到,平行链最后一个节点的mainHash可以找到
1.
主节点切换, 老的blockhash在新的节点上找不到,平行链最后一个节点的mainHash找不到,回退查找到,删除分叉后节点重新同步
1.
主节点切换, 老的blockhash在新的节点上找不到,平行链最后一个节点的mainHash找不到,回退查找到,删除分叉节点中间失败,重新查找同步
1.
主节点切换, 老的blockhash在新的节点上找不到,平行链所有节点都找不到场景,会无限循环查找,直到切换新主节点
1.
系统重启,主节点切换场景
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment