Commit c903ef42 authored by QM's avatar QM

fix commit

parent d63cc036
......@@ -341,10 +341,14 @@ func (client *commitMsgClient) checkConsensusStop(checks *commitCheckParams) {
func (client *commitMsgClient) checkAuthAccountIn() {
nodeStr, err := client.getNodeGroupAddrs()
if err != nil {
nodeSupervisionStr, errSupervision := client.getSupervisionNodeGroupAddrs() // 判断是否是监督节点
if err != nil && errSupervision != nil {
return
}
authExist := strings.Contains(nodeStr, client.authAccount)
authExist1 := strings.Contains(nodeStr, client.authAccount)
authExist2 := strings.Contains(nodeSupervisionStr, client.authAccount)
authExist := authExist1 || authExist2
//如果授权节点重新加入,需要从当前共识高度重新发送
if !client.authAccountIn && authExist {
......@@ -403,7 +407,6 @@ func (client *commitMsgClient) isSync() bool {
}
return true
}
func (client *commitMsgClient) getSendingTx(startHeight, endHeight int64) (*types.Transaction, int64) {
......
......@@ -357,10 +357,10 @@ func updateCommitAddrs(stat *pt.ParacrossHeightStatus, nodes map[string]struct{}
func updateSupervisionDetailsCommitAddrs(stat *pt.ParacrossHeightStatus, nodes map[string]struct{}) {
supervisionDetailsDetails := &pt.ParacrossStatusDetails{}
for i, addr := range stat.Details.Addrs {
for i, addr := range stat.SupervisionDetails.Addrs {
if _, ok := nodes[addr]; ok {
supervisionDetailsDetails.Addrs = append(supervisionDetailsDetails.Addrs, addr)
supervisionDetailsDetails.BlockHash = append(supervisionDetailsDetails.BlockHash, stat.Details.BlockHash[i])
supervisionDetailsDetails.BlockHash = append(supervisionDetailsDetails.BlockHash, stat.SupervisionDetails.BlockHash[i])
}
}
stat.SupervisionDetails = supervisionDetailsDetails
......@@ -613,7 +613,12 @@ func (a *action) Commit(commit *pt.ParacrossCommitAction) (*types.Receipt, error
func (a *action) proCommitMsg(commit *pt.ParacrossNodeStatus, nodes map[string]struct{}, commitAddrs []string, supervisionNodes map[string]struct{}, supervisionValidAddrs []string) (*types.Receipt, error) {
cfg := a.api.GetConfig()
err := a.preCheckCommitInfo(commit, commitAddrs)
var err error
if len(commitAddrs) > 0 {
err = a.preCheckCommitInfo(commit, commitAddrs)
} else {
err = a.preCheckCommitInfo(commit, supervisionValidAddrs)
}
if err != nil {
return nil, err
}
......@@ -641,10 +646,11 @@ func (a *action) proCommitMsg(commit *pt.ParacrossNodeStatus, nodes map[string]s
var copyStat *pt.ParacrossHeightStatus
if isNotFound(err) {
stat = &pt.ParacrossHeightStatus{
Status: pt.ParacrossStatusCommiting,
Title: commit.Title,
Height: commit.Height,
Details: &pt.ParacrossStatusDetails{},
Status: pt.ParacrossStatusCommiting,
Title: commit.Title,
Height: commit.Height,
Details: &pt.ParacrossStatusDetails{},
SupervisionDetails: &pt.ParacrossStatusDetails{},
}
if pt.IsParaForkHeight(cfg, a.exec.GetMainHeight(), pt.ForkCommitTx) {
stat.MainHeight = commit.MainBlockHeight
......@@ -667,12 +673,12 @@ func (a *action) proCommitMsg(commit *pt.ParacrossNodeStatus, nodes map[string]s
for _, addr := range supervisionValidAddrs {
// 如有分叉, 同一个节点可能再次提交commit交易
found, index := hasCommited(stat.Details.Addrs, addr)
found, index := hasCommited(stat.SupervisionDetails.Addrs, addr)
if found {
stat.SupervisionDetails.BlockHash[index] = commit.BlockHash
} else {
stat.SupervisionDetails.Addrs = append(stat.Details.Addrs, addr)
stat.SupervisionDetails.BlockHash = append(stat.Details.BlockHash, commit.BlockHash)
stat.SupervisionDetails.Addrs = append(stat.SupervisionDetails.Addrs, addr)
stat.SupervisionDetails.BlockHash = append(stat.SupervisionDetails.BlockHash, commit.BlockHash)
}
}
......@@ -735,7 +741,6 @@ func (a *action) commitTxDone(nodeStatus *pt.ParacrossNodeStatus, stat *pt.Parac
for i, v := range stat.SupervisionDetails.Addrs {
clog.Debug("paracross.Commit commit SupervisionDetails", "addr", v, "hash", common.ToHex(stat.SupervisionDetails.BlockHash[i]))
}
mostSupervisionCount, mostSupervisionHash := GetMostCommit(stat.SupervisionDetails.BlockHash)
if !isCommitDone(len(supervisionNodes), mostSupervisionCount) {
return receipt, nil
......
......@@ -80,9 +80,9 @@ func setPrefix() {
paraSupervisionNodes = "mavl-paracross-supervision-nodes-title-"
paraSupervisionNodeAddr = "mavl-paracross-supervision-nodes-titleAddr-"
paraSupervisionNodeGroupStatusAddrs = "mavl-paracross-supervision-nodegroup-apply-title-"
paraSupervisionNodeGroupIDPrefix = "mavl-paracross-supervision-title-nodegroupid-"
paraSupervisionNodeGroupIDPrefix = "mavl-paracross-title-nodegroupid-supervision-"
paraSupervisionSelfConsensStages = "mavl-paracross-supervision-selfconsens-stages-"
paraSupervisionSelfConsensStageIDPrefix = "mavl-paracross-supervision-selfconsens-id-"
paraSupervisionSelfConsensStageIDPrefix = "mavl-paracross-selfconsens-id-supervision-"
localSupervisionNodeGroupStatusTitle = "LODB-paracross-supervision-nodegroupStatusTitle-"
}
......
......@@ -245,6 +245,10 @@ func (p *Paracross) Query_GetSupervisionNodeGroupStatus(in *pt.ReqParacrossNodeI
return nil, types.ErrInvalidParam
}
stat, err := getSupervisionNodeGroupStatus(p.GetStateDB(), in.Title)
if err != nil {
return stat, err
}
stat.Id = getParaNodeIDSuffix(stat.Id)
return stat, err
}
......@@ -286,6 +290,14 @@ func (p *Paracross) Query_ListSupervisionNodeGroupStatus(in *pt.ReqParacrossNode
}
resp, err := listNodeGroupStatus(p.GetLocalDB(), prefix)
if err != nil {
return resp, err
}
addrs := resp.(*pt.RespParacrossNodeGroups)
for _, id := range addrs.Ids {
id.Id = getParaNodeIDSuffix(id.Id)
}
return resp, err
}
......
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