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

fix para get consens height sequence

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