Skip to content

Commit 7fdce16

Browse files
committed
Improve error handling in activity orchestration
$null returns from activity functions cause errors in Wait-ActivityFunction
1 parent aeeab5a commit 7fdce16

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

Modules/CippEntrypoints/CippEntrypoints.psm1

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,14 @@ function Receive-CippOrchestrationTrigger {
227227
$Output = $Output | Where-Object { $_.GetType().Name -eq 'ActivityInvocationTask' }
228228
if (($Output | Measure-Object).Count -gt 0) {
229229
Write-Information "Waiting for ($($Output.Count)) activity functions to complete..."
230-
$Results = Wait-ActivityFunction -Task @($Output)
230+
$Results = $Output | ForEach-Object {
231+
$Task = $_
232+
try {
233+
Wait-ActivityFunction -Task $Task
234+
} catch {
235+
Write-Warning "Error waiting for activity function: $($_.Exception.Message)"
236+
}
237+
}
231238
} else {
232239
$Results = @()
233240
}
@@ -333,7 +340,7 @@ function Receive-CippActivityTrigger {
333340

334341
try {
335342
Write-Verbose "Activity starting Function: $FunctionName."
336-
343+
$ActivityStatus = 'Success'
337344
# Wrap the function execution with telemetry
338345
$Output = Measure-CippTask -TaskName $taskName -Metadata $metadata -Script {
339346
Invoke-Command -ScriptBlock { & $FunctionName -Item $Item }
@@ -346,6 +353,7 @@ function Receive-CippActivityTrigger {
346353
}
347354
} catch {
348355
$ErrorMsg = $_.Exception.Message
356+
$ActivityStatus = 'Failed'
349357
if ($TaskStatus) {
350358
$QueueTask.Status = 'Failed'
351359
$QueueTask.Message = $ErrorMsg
@@ -354,13 +362,15 @@ function Receive-CippActivityTrigger {
354362
}
355363
} else {
356364
$ErrorMsg = 'Function not provided'
365+
$ActivityStatus = 'Failed'
357366
if ($TaskStatus) {
358367
$QueueTask.Status = 'Failed'
359368
$null = Set-CippQueueTask @QueueTask
360369
}
361370
}
362371
} catch {
363372
Write-Error "Error in Receive-CippActivityTrigger: $($_.Exception.Message)"
373+
$ActivityStatus = 'Failed'
364374
if ($TaskStatus) {
365375
$QueueTask.Status = 'Failed'
366376
$null = Set-CippQueueTask @QueueTask
@@ -371,7 +381,7 @@ function Receive-CippActivityTrigger {
371381
if ($null -ne $Output -and $Output -ne '') {
372382
return $Output
373383
} else {
374-
return
384+
return "Activity '$($Item.Command)' ended with status: $ActivityStatus."
375385
}
376386
}
377387

0 commit comments

Comments
 (0)