diff --git a/cdn/rpcserver/rpcserver.go b/cdn/rpcserver/rpcserver.go index 1e5ff0af4..f0f16d04e 100644 --- a/cdn/rpcserver/rpcserver.go +++ b/cdn/rpcserver/rpcserver.go @@ -220,7 +220,9 @@ func (css *Server) GetPieceTasks(ctx context.Context, req *base.PieceTaskRequest } } pieceMd5Sign := seedTask.PieceMd5Sign + // TODO The calculation of sign has been completed after the source has been completed. This is just a fallback if len(taskPieces) == int(seedTask.TotalPieceCount) && pieceMd5Sign == "" { + logger.WithTaskID(req.TaskId).Warn("The code flow should not go to this point, if the output of this log need to check why") var pieceMd5s []string for i := 0; i < len(taskPieces); i++ { pieceMd5s = append(pieceMd5s, taskPieces[i].PieceMd5) diff --git a/cdn/supervisor/progress/manager.go b/cdn/supervisor/progress/manager.go index 51b9a3605..24a97750b 100644 --- a/cdn/supervisor/progress/manager.go +++ b/cdn/supervisor/progress/manager.go @@ -21,7 +21,6 @@ package progress import ( "context" "encoding/json" - "sort" "sync" "github.com/pkg/errors" @@ -86,9 +85,6 @@ func (pm *manager) WatchSeedProgress(ctx context.Context, clientAddr string, tas logger.Debugf("subscriber %s starts watching task %s seed progress", clientAddr, taskID) close(pieceChan) }() - sort.Slice(pieces, func(i, j int) bool { - return pieces[i].PieceNum < pieces[j].PieceNum - }) for _, piece := range pieces { logger.Debugf("notifies subscriber %s about %d piece info of taskID %s", clientAddr, piece.PieceNum, taskID) pieceChan <- piece diff --git a/cdn/supervisor/task/manager.go b/cdn/supervisor/task/manager.go index 506a12a69..153aaba08 100644 --- a/cdn/supervisor/task/manager.go +++ b/cdn/supervisor/task/manager.go @@ -19,6 +19,7 @@ package task import ( + "sort" "sync" "time" @@ -54,7 +55,7 @@ type Manager interface { // UpdateProgress update the downloaded pieces belonging to the task UpdateProgress(taskID string, piece *PieceInfo) (err error) - // GetProgress returns the downloaded pieces belonging to the task + // GetProgress returns the downloaded pieces belonging to the task,sorted by pieceNum ascending order GetProgress(taskID string) ([]*PieceInfo, error) // Exist check task existence with specified taskID. @@ -217,6 +218,9 @@ func (tm *manager) GetProgress(taskID string) ([]*PieceInfo, error) { pieces = append(pieces, value.(*PieceInfo)) return true }) + sort.Slice(pieces, func(i, j int) bool { + return pieces[i].PieceNum < pieces[j].PieceNum + }) return pieces, nil }