Skip to content

Commit 0378e8c

Browse files
committed
Only reschedule failed tasks when aborting
1 parent c622904 commit 0378e8c

File tree

2 files changed

+37
-13
lines changed

2 files changed

+37
-13
lines changed

backend/api/EventHandlers/MqttEventHandler.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -359,15 +359,14 @@ private async void OnIsarMissionAborted(object? sender, MqttReceivedArgs mqttArg
359359

360360
try
361361
{
362-
var missionRun = await MissionScheduling.MoveMissionRunBackToQueue(
362+
await MissionScheduling.MoveMissionRunBackToQueue(
363363
robot.Id,
364364
isarAbortedMission.MissionId,
365365
isarAbortedMission.Reason
366366
);
367367

368368
_logger.LogInformation(
369-
"Mission '{Id}' (ISARMissionID='{IsarMissionId}') was aborted by ISAR for robot '{RobotName}' with ISAR id '{IsarId}': {Reason}",
370-
missionRun.Id,
369+
"Mission '{Id}' was aborted by ISAR for robot '{RobotName}' with ISAR id '{IsarId}': {Reason}",
371370
isarAbortedMission.MissionId,
372371
isarAbortedMission.RobotName,
373372
isarAbortedMission.IsarId,
@@ -735,15 +734,15 @@ private async void OnIsarStartup(object? sender, MqttReceivedArgs mqttArgs)
735734

736735
try
737736
{
738-
var missionRun = await MissionScheduling.MoveMissionRunBackToQueue(
737+
await MissionScheduling.MoveMissionRunBackToQueue(
739738
robot.Id,
740739
missionToAbort,
741740
"Isar restarted during mission"
742741
);
743742

744743
_logger.LogInformation(
745744
"Mission with id '{Id}' was aborted for robot '{RobotName}' due to ISAR restart",
746-
missionRun.Id,
745+
missionToAbort,
747746
robot.Name
748747
);
749748
}

backend/api/Services/MissionSchedulingService.cs

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface IMissionSchedulingService
1111
{
1212
public Task StartNextMissionRunIfSystemIsAvailable(Robot robot);
1313

14-
public Task<MissionRun> MoveMissionRunBackToQueue(
14+
public Task<MissionRun?> MoveMissionRunBackToQueue(
1515
string robotId,
1616
string? isarMissionRunId,
1717
string? stopReason = null
@@ -200,7 +200,7 @@ await missionRunService.SetMissionRunToFailed(
200200
catch (RobotBusyException) { }
201201
}
202202

203-
public async Task<MissionRun> MoveMissionRunBackToQueue(
203+
public async Task<MissionRun?> MoveMissionRunBackToQueue(
204204
string robotId,
205205
string? isarMissionRunId,
206206
string? stopReason = null
@@ -244,12 +244,7 @@ await missionRunService.UpdateMissionRunProperty(
244244
await missionRunService.UpdateMissionRunProperty(
245245
missionRun.Id,
246246
"Status",
247-
MissionStatus.Queued
248-
);
249-
_ = signalRService.SendMessageAsync(
250-
"Mission run created",
251-
missionRun.InspectionArea.Installation,
252-
new MissionRunResponse(missionRun)
247+
MissionStatus.Aborted
253248
);
254249

255250
try
@@ -268,6 +263,36 @@ await missionRunService.UpdateMissionRunProperty(
268263
);
269264
}
270265

266+
var unfinishedTasks = missionRun
267+
.Tasks.Where(
268+
(t) =>
269+
t.Status != Database.Models.TaskStatus.Successful
270+
&& t.Status != Database.Models.TaskStatus.PartiallySuccessful
271+
)
272+
.ToList();
273+
274+
if (unfinishedTasks.Count < 1)
275+
return null;
276+
277+
var newMissionRun = new MissionRun
278+
{
279+
Name = missionRun.Name,
280+
Robot = robot,
281+
MissionId = missionRun.Id,
282+
Status = MissionStatus.Queued,
283+
CreationTime = missionRun.CreationTime,
284+
Tasks = unfinishedTasks,
285+
InstallationCode = missionRun.InstallationCode,
286+
InspectionArea = missionRun.InspectionArea,
287+
};
288+
await missionRunService.Create(newMissionRun);
289+
290+
_ = signalRService.SendMessageAsync(
291+
"Mission run created",
292+
newMissionRun.InspectionArea.Installation,
293+
new MissionRunResponse(newMissionRun)
294+
);
295+
271296
return missionRun;
272297
}
273298

0 commit comments

Comments
 (0)