Skip to content

Stop-DbaExternalProcess - Stop eating the caller loop when the process cannot be stopped - #10698

Open
andreasjordan wants to merge 1 commit into
developmentfrom
fix-stop-dbaexternalprocess-continue-escape
Open

Stop-DbaExternalProcess - Stop eating the caller loop when the process cannot be stopped#10698
andreasjordan wants to merge 1 commit into
developmentfrom
fix-stop-dbaexternalprocess-continue-escape

Conversation

@andreasjordan

Copy link
Copy Markdown
Collaborator

Part of #10638, the sweep for Stop-Function -Continue outside an enclosing loop. Same shape as #10637.

Problem

Stop-DbaExternalProcess reports a failed kill from the catch at the end of its process block with Stop-Function -Continue (public/Stop-DbaExternalProcess.ps1:98). No loop encloses that site inside the command, so without -EnableException the continue unwinds out of the command and consumes an iteration of whatever loop the caller runs in. Proven in the lab with the plain-script recipe: three calls in a foreach left the loop counter at 0 on development and at 3 with the fix.

What changed

The -Continue is dropped; the catch is the last statement of the process block, so nothing else is needed.

Tests

New context When the process does not exist: three calls with a process id that does not exist on localhost, asserting the loop count and the Error killing warning. Through the testing-dbatools harness: green on both editions with the fix; the plain-script proof above is the red-on-old.

created by Claude and reviewed by Andreas Jordan

🤖 Generated with Claude Code

…s cannot be stopped

Stop-Function -Continue runs PowerShell's continue. No loop encloses this
call site inside the command, so the continue unwound out of the command
and consumed an iteration of whatever loop the caller runs in: a user's
foreach silently skipped an element, and Pester's runner corrupted. The
escape only bites the non-EnableException path; with EnableException
Stop-Function throws before it gets there.

Part of #10638

(do Stop-DbaExternalProcess)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@potatoqualitee potatoqualitee left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The process-stop failure now returns from the command invocation instead of consuming the caller loop, with successful process termination unchanged. The relevant Windows PowerShell coverage and all applicable exact-head checks pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants