@@ -19,7 +19,7 @@ public interface ITaskOperations : IStatefulOrm<Task, TaskState> {
1919 Result < IEnumerable < Container > ? , TaskConfigError > GetInputContainerQueues ( TaskConfig config ) ;
2020
2121 IAsyncEnumerable < Task > SearchExpired ( ) ;
22- Async . Task MarkStopping ( Task task ) ;
22+ Async . Task MarkStopping ( Task task , string reason ) ;
2323 Async . Task MarkFailed ( Task task , Error error , List < Task > ? taskInJob = null ) ;
2424
2525 Async . Task < TaskVm ? > GetReproVmConfig ( Task task ) ;
@@ -99,14 +99,14 @@ public IAsyncEnumerable<Task> SearchExpired() {
9999 return QueryAsync ( filter : filter ) ;
100100 }
101101
102- public async Async . Task MarkStopping ( Task task ) {
102+ public async Async . Task MarkStopping ( Task task , string reason ) {
103103 if ( task . State . ShuttingDown ( ) ) {
104104 _logTracer . Verbose ( $ "ignoring post - task stop calls to stop { task . JobId : Tag:JobId} :{ task . TaskId : Tag:TaskId} ") ;
105105 return ;
106106 }
107107
108108 if ( ! task . State . HasStarted ( ) ) {
109- await MarkFailed ( task , Error . Create ( ErrorCode . TASK_FAILED , "task never started" ) ) ;
109+ await MarkFailed ( task , Error . Create ( ErrorCode . TASK_CANCELLED , reason , "task never started" ) ) ;
110110 } else {
111111 _ = await SetState ( task , TaskState . Stopping ) ;
112112 }
@@ -124,16 +124,16 @@ public async Async.Task MarkFailed(Task task, Error error, List<Task>? taskInJob
124124 _logTracer . Info ( $ "task failed { task . JobId : Tag:JobId} :{ task . TaskId : Tag:TaskId} - { error : Tag:Error} ") ;
125125
126126 task = await SetState ( task with { Error = error } , TaskState . Stopping ) ;
127- await MarkDependantsFailed ( task , taskInJob ) ;
128- }
129-
130- private async Async . Task MarkDependantsFailed ( Task task , List < Task > ? taskInJob = null ) {
131127 taskInJob ??= await SearchByPartitionKeys ( new [ ] { $ "{ task . JobId } " } ) . ToListAsync ( ) ;
132128
129+ var dependentError =
130+ error . Code == ErrorCode . TASK_CANCELLED
131+ ? Error . Create ( ErrorCode . TASK_CANCELLED , $ "prerequisite task is cancelled.")
132+ : Error . Create ( ErrorCode . TASK_FAILED , $ "prerequisite task is failed.") ;
133133 foreach ( var t in taskInJob ) {
134134 if ( t . Config . PrereqTasks != null ) {
135135 if ( t . Config . PrereqTasks . Contains ( task . TaskId ) ) {
136- await MarkFailed ( t , Error . Create ( ErrorCode . TASK_FAILED , $ "prerequisite task failed. task_id: { t . TaskId } " ) , taskInJob ) ;
136+ await MarkFailed ( t , dependentError , taskInJob ) ;
137137 }
138138 }
139139 }
0 commit comments