Commit 0fc2c2e5 authored by mdj33's avatar mdj33 Committed by vipwzw

fix para get consens height sequence

parent 33abf21a
......@@ -528,9 +528,31 @@ out:
client.paraClient.wg.Done()
}
func (client *commitMsgClient) getConsensusStatus(block *types.Block) (*pt.ParacrossStatus, error) {
//获取主链共识高度
if !isParaSelfConsensusForked(block.MainHeight) {
if isParaSelfConsensusForked(block.MainHeight) {
//从本地查询共识高度
ret, err := client.paraClient.GetAPI().QueryChain(&types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitle",
Param: types.Encode(&types.ReqString{Data: types.GetTitle()}),
})
if err != nil {
plog.Error("getConsensusHeight ", "err", err.Error())
return nil, err
}
resp, ok := ret.(*pt.ParacrossStatus)
if !ok {
plog.Error("getConsensusHeight ParacrossStatus nok")
return nil, err
}
//开启自共识后也要等到自共识真正切换之后再使用,如果本地区块已经过了自共识高度,但自共识的高度还没达成,就会导致共识机制出错
if resp.Height > -1 {
return resp, nil
}
}
//去主链获取共识高度
reply, err := client.paraClient.grpcClient.QueryChain(context.Background(), &types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitleByHash",
......@@ -551,24 +573,7 @@ func (client *commitMsgClient) getConsensusStatus(block *types.Block) (*pt.Parac
return nil, err
}
return &result, nil
}
//从本地查询共识高度
ret, err := client.paraClient.GetAPI().QueryChain(&types.ChainExecutor{
Driver: "paracross",
FuncName: "GetTitle",
Param: types.Encode(&types.ReqString{Data: types.GetTitle()}),
})
if err != nil {
plog.Error("getConsensusHeight ", "err", err.Error())
return nil, err
}
resp, ok := ret.(*pt.ParacrossStatus)
if !ok {
plog.Error("getConsensusHeight ParacrossStatus nok")
return nil, err
}
return resp, nil
}
func (client *commitMsgClient) fetchPrivacyKey(ch chan crypto.PrivKey) {
......
......@@ -35,8 +35,7 @@ function para_set_toml() {
sed -i $xsedfix 's/^emptyBlockInterval=.*/emptyBlockInterval=4/g' "${1}"
sed -i $xsedfix '/^emptyBlockInterval=.*/a MainBlockHashForkHeight=1' "${1}"
#测试使用,主链也要替换ForkParacrossCommitTx 为300
# sed -i $xsedfix '/^emptyBlockInterval=.*/a MainParaSelfConsensusForkHeight=300' "${1}"
sed -i $xsedfix '/^emptyBlockInterval=.*/a MainParaSelfConsensusForkHeight=50' "${1}"
sed -i $xsedfix 's/^MainForkParacrossCommitTx=.*/MainForkParacrossCommitTx=1/g' "${1}"
# rpc
......
......@@ -32,11 +32,14 @@ func (e *Paracross) ExecDelLocal_Commit(payload *pt.ParacrossCommitAction, tx *t
key = calcLocalHeightKey(g.Title, g.Height)
set.KV = append(set.KV, &types.KeyValue{Key: key, Value: nil})
if !types.IsPara(){
r, err := e.saveLocalParaTxs(tx, true)
if err != nil {
return nil, err
}
set.KV = append(set.KV, r.KV...)
}
} else if log.Ty == pt.TyLogParacrossCommitRecord {
var g pt.ReceiptParacrossRecord
types.Decode(log.Log, &g)
......
......@@ -31,12 +31,14 @@ func (e *Paracross) ExecLocal_Commit(payload *pt.ParacrossCommitAction, tx *type
key = calcLocalHeightKey(g.Title, g.Height)
set.KV = append(set.KV, &types.KeyValue{Key: key, Value: types.Encode(&g)})
if !types.IsPara(){
r, err := e.saveLocalParaTxs(tx, false)
if err != nil {
return nil, err
}
set.KV = append(set.KV, r.KV...)
}
} else if log.Ty == pt.TyLogParacrossCommitRecord {
var g pt.ReceiptParacrossRecord
types.Decode(log.Log, &g)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment