diff --git a/extern/sector-storage/sched.go b/extern/sector-storage/sched.go index 16e51f9a6..56d78bfae 100644 --- a/extern/sector-storage/sched.go +++ b/extern/sector-storage/sched.go @@ -641,7 +641,7 @@ func (sh *scheduler) workerCompactWindows(worker *workerHandle, wid WorkerID) in if len(moved) > 0 { newTodo := make([]*workerRequest, 0, len(window.todo)-len(moved)) for i, t := range window.todo { - if moved[0] == i { + if len(moved) > 0 && moved[0] == i { moved = moved[1:] continue } diff --git a/extern/sector-storage/sched_test.go b/extern/sector-storage/sched_test.go index 4aa1dc49b..08fdbe38f 100644 --- a/extern/sector-storage/sched_test.go +++ b/extern/sector-storage/sched_test.go @@ -637,4 +637,9 @@ func TestWindowCompact(t *testing.T) { [][]sealtasks.TaskType{{sealtasks.TTPreCommit1, sealtasks.TTPreCommit1}, {sealtasks.TTPreCommit1, sealtasks.TTAddPiece}}, [][]sealtasks.TaskType{{sealtasks.TTPreCommit1, sealtasks.TTPreCommit1, sealtasks.TTAddPiece}, {sealtasks.TTPreCommit1}}), ) + + t.Run("2pc1-pc1appc2", test( + [][]sealtasks.TaskType{{sealtasks.TTPreCommit1, sealtasks.TTPreCommit1}, {sealtasks.TTPreCommit1, sealtasks.TTAddPiece, sealtasks.TTPreCommit2}}, + [][]sealtasks.TaskType{{sealtasks.TTPreCommit1, sealtasks.TTPreCommit1, sealtasks.TTAddPiece}, {sealtasks.TTPreCommit1, sealtasks.TTPreCommit2}}), + ) }