diff --git a/cli/cmd/fmt.go b/cli/cmd/fmt.go index 5d85638a3..2bd9725e9 100644 --- a/cli/cmd/fmt.go +++ b/cli/cmd/fmt.go @@ -1340,6 +1340,7 @@ func formatDiskDataPartitionTableRow(view *proto.DataPartitionReport) string { func formatDataNodeDecommissionProgress(progress *proto.DataDecommissionProgress) string { sb := strings.Builder{} sb.WriteString(fmt.Sprintf("Status : %v\n", progress.StatusMessage)) + sb.WriteString(fmt.Sprintf("Weight : %v\n", progress.Weight)) sb.WriteString(fmt.Sprintf("Progress : %v\n", progress.Progress)) sb.WriteString(fmt.Sprintf("TotalDpCnt : %v\n", progress.TotalDpCnt)) sb.WriteString(fmt.Sprintf("RemainingDpCnt: %v\n", progress.RemainingDpCnt)) @@ -1362,6 +1363,8 @@ func formatDataNodeDecommissionProgress(progress *proto.DataDecommissionProgress func formatDecommissionProgress(progress *proto.DecommissionProgress) string { sb := strings.Builder{} sb.WriteString(fmt.Sprintf("Status : %v\n", progress.StatusMessage)) + sb.WriteString(fmt.Sprintf("Type : %v\n", progress.DecommissionType)) + sb.WriteString(fmt.Sprintf("Weight : %v\n", progress.Weight)) sb.WriteString(fmt.Sprintf("Progress : %v\n", progress.Progress)) sb.WriteString(fmt.Sprintf("TotalDpCnt : %v\n", progress.TotalDpCnt)) sb.WriteString(fmt.Sprintf("RemainingDpCnt: %v\n", progress.RemainingDpCnt)) @@ -1391,6 +1394,7 @@ func formatDataPartitionDecommissionProgress(info *proto.DecommissionDataPartiti sb := strings.Builder{} sb.WriteString(fmt.Sprintf("Status: %v\n", info.Status)) sb.WriteString(fmt.Sprintf("SpecialStep: %v\n", info.SpecialStep)) + sb.WriteString(fmt.Sprintf("Progress: %v\n", info.Progress)) sb.WriteString(fmt.Sprintf("DiskRetryMap: %v\n", info.DiskRetryMap)) sb.WriteString(fmt.Sprintf("Retry: %v\n", info.Retry)) sb.WriteString(fmt.Sprintf("RaftForce: %v\n", info.RaftForce)) diff --git a/master/api_service.go b/master/api_service.go index 539c86e7d..7a3e7d309 100644 --- a/master/api_service.go +++ b/master/api_service.go @@ -2329,6 +2329,8 @@ func (m *Server) queryDataPartitionDecommissionStatus(w http.ResponseWriter, r * err error replicas []string diskRetryMap map[string]int + dataReplica *DataReplica + progress string ) if partitionID, err = parseRequestToLoadDataPartition(r); err != nil { @@ -2344,11 +2346,18 @@ func (m *Server) queryDataPartitionDecommissionStatus(w http.ResponseWriter, r * replicas = append(replicas, replica.Addr) } diskRetryMap = dp.cloneDecommissionDiskRetryMap() + if dp.DecommissionDstAddr != "" { + if dataReplica, err = dp.getReplica(dp.DecommissionDstAddr); err == nil { + progress = fmt.Sprintf("%.2f%%", dataReplica.DecommissionRepairProgress*float64(100)) + } + } + info := &proto.DecommissionDataPartitionInfo{ PartitionId: partitionID, ReplicaNum: dp.ReplicaNum, Status: GetDecommissionStatusMessage(dp.GetDecommissionStatus()), SpecialStep: GetSpecialDecommissionStatusMessage(dp.GetSpecialReplicaDecommissionStep()), + Progress: progress, DiskRetryMap: diskRetryMap, Retry: dp.DecommissionRetry, RaftForce: dp.DecommissionRaftForce, @@ -5042,6 +5051,8 @@ func (m *Server) queryDiskDecoProgress(w http.ResponseWriter, r *http.Request) { resp := &proto.DecommissionProgress{ Progress: fmt.Sprintf("%.2f%%", progress*float64(100)), StatusMessage: GetDecommissionStatusMessage(status), + DecommissionType: GetDecommissionTypeMessage(disk.Type), + Weight: disk.DecommissionWeight, TotalDpCnt: disk.GetDecommissionTotalDpCnt(m.cluster), IgnoreDps: disk.IgnoreDecommissionDps, ResidualDps: disk.residualDecommissionDpsGetAll(), @@ -5117,6 +5128,8 @@ func (m *Server) queryAllDecommissionDisk(w http.ResponseWriter, r *http.Request decommissionProgress := proto.DecommissionProgress{ Progress: fmt.Sprintf("%.2f%%", progress*float64(100)), StatusMessage: GetDecommissionStatusMessage(status), + DecommissionType: GetDecommissionTypeMessage(disk.Type), + Weight: disk.DecommissionWeight, TotalDpCnt: disk.GetDecommissionTotalDpCnt(m.cluster), IgnoreDps: disk.IgnoreDecommissionDps, ResidualDps: disk.residualDecommissionDpsGetAll(), @@ -5136,10 +5149,9 @@ func (m *Server) queryAllDecommissionDisk(w http.ResponseWriter, r *http.Request retryOverLimitDps := disk.GetDecommissionDiskRetryOverLimitDP(m.cluster) decommissionProgress.RetryOverLimitDps = retryOverLimitDps resp.Infos = append(resp.Infos, proto.DecommissionDiskInfo{ - SrcAddr: disk.SrcAddr, - DiskPath: disk.DiskPath, - DecommissionWeight: disk.DecommissionWeight, - ProgressInfo: decommissionProgress, + SrcAddr: disk.SrcAddr, + DiskPath: disk.DiskPath, + ProgressInfo: decommissionProgress, }) } return true @@ -6869,6 +6881,7 @@ func (m *Server) queryDataNodeDecoProgress(w http.ResponseWriter, r *http.Reques progress, _ = FormatFloatFloor(progress, 4) resp := &proto.DataDecommissionProgress{ Status: status, + Weight: dn.DecommissionWeight, Progress: fmt.Sprintf("%.2f%%", progress*float64(100)), StatusMessage: GetDecommissionStatusMessage(status), TotalDpCnt: dn.DecommissionDpTotal, diff --git a/proto/model.go b/proto/model.go index 54ca6a00f..123fbc9e8 100644 --- a/proto/model.go +++ b/proto/model.go @@ -451,6 +451,8 @@ type IgnoreDecommissionDP struct { type DecommissionProgress struct { StatusMessage string + DecommissionType string + Weight int Progress string TotalDpCnt int RemainingDpCnt int @@ -466,6 +468,7 @@ type DecommissionProgress struct { type DataDecommissionProgress struct { Status uint32 StatusMessage string + Weight int Progress string TotalDpCnt int RemainingDpCnt int @@ -599,10 +602,9 @@ type DecommissionDiskLimitDetail struct { } type DecommissionDiskInfo struct { - SrcAddr string - DiskPath string - DecommissionWeight int - ProgressInfo DecommissionProgress + SrcAddr string + DiskPath string + ProgressInfo DecommissionProgress } type DecommissionDisksResponse struct { @@ -614,6 +616,7 @@ type DecommissionDataPartitionInfo struct { ReplicaNum uint8 Status string SpecialStep string + Progress string DiskRetryMap map[string]int Retry int RaftForce bool