Skip to content

Handle process inspection race during shutdown#17676

Merged
davidfowl merged 1 commit into
release/13.4from
danegsta/stop-all-failure
May 29, 2026
Merged

Handle process inspection race during shutdown#17676
davidfowl merged 1 commit into
release/13.4from
danegsta/stop-all-failure

Conversation

@danegsta
Copy link
Copy Markdown
Member

Description

aspire stop --all can monitor AppHost termination after an AppHost has already exited. On macOS, reading Process.StartTime during that race can throw Win32Exception, which previously bubbled out of ProcessShutdownService and failed the stop command even though shutdown had completed.

This updates ProcessSignaler.TryGetRunningProcess to treat Win32Exception during process inspection the same way it treats missing or already-exited processes: dispose the process handle, log at debug level, and return null so callers do not signal or kill a process they cannot safely validate.

Validation: dotnet test --project tests/Aspire.Cli.Tests/Aspire.Cli.Tests.csproj --no-launch-profile -- --filter-class "*.ProcessShutdownServiceTests" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"

Fixes #17662

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

Treat Win32Exception while inspecting process metadata as a stale or non-targetable process so stop monitoring does not fail when an AppHost exits during shutdown.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17676

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17676"

@danegsta
Copy link
Copy Markdown
Member Author

PR Testing Report

PR Information

CLI Version Verification

  • Expected Commit: 995797c
  • Installed Version: 13.4.0-pr.17676.g995797c8
  • Status: ✅ Passed

Changes Analyzed

Files Changed

  • src/Shared/ProcessSignaler.cs - Modified

Change Categories

  • CLI changes detected
  • Hosting/shared process helper changes detected
  • Dashboard changes
  • Template changes
  • Client/component changes
  • Test changes

Test Scenarios Executed

Scenario 1: PR CLI install and version verification

Objective: Install the dogfood CLI for PR #17676 and verify it matches the PR head commit.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Installed the PR CLI with the dogfood script into an isolated temp directory.
  2. Ran the installed binary directly with --version.
  3. Compared the version output against the PR head commit.

Evidence:

  • Install log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/install-output.txt
  • Version log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/version.txt

Observations:

  • Installed CLI version contains expected PR commit 995797c.

Scenario 2: Basic stop lifecycle

Objective: Verify a fresh AppHost still starts and stops cleanly through the PR CLI using an explicit AppHost path.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Created a fresh aspire-empty C# file-based AppHost with the PR hive and installed PR CLI version.
  2. Started the AppHost with aspire start --apphost <path> --non-interactive, which launches the AppHost in the background.
  3. Stopped the AppHost with aspire stop --apphost <path> --non-interactive.

Evidence:

  • Scenario directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached
  • Creation log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/new-output.txt
  • Start log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/start-output.txt
  • Stop log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/stop-output.txt

Observations:

  • Fresh file-based AppHost started in background and stopped with explicit --apphost path.

Scenario 3: Stop all lifecycle

Objective: Verify aspire stop --all can stop multiple AppHosts without surfacing the process-inspection exception fixed by this PR.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Created two fresh aspire-empty C# file-based AppHosts with the PR hive and installed PR CLI version.
  2. Started both AppHosts with explicit AppHost paths.
  3. Ran aspire stop --all --non-interactive.

Evidence:

  • Scenario directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached
  • Stop-all log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached/stop-all-output.txt

Observations:

  • Two fresh file-based AppHosts were stopped with aspire stop --all without unexpected process inspection errors.

Scenario 4: No running AppHosts

Objective: Verify repeating aspire stop --all after all AppHosts are stopped returns a safe no-op result rather than an unexpected error.
Coverage Type: Unhappy path / safe no-op
Status: ✅ Passed

Steps:

  1. Re-ran aspire stop --all --non-interactive after Scenario 3 completed.
  2. Captured the command output and exit status.

Evidence:

  • Empty stop-all log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached/stop-all-empty-output.txt

Expected Unhappy-Path Outcome: The command should not crash or surface an unexpected process inspection error when there are no AppHosts left to stop.

Observations:

  • Repeated aspire stop --all after shutdown completed returned a safe no-op result.

Summary

Scenario Status Notes
PR CLI install and version verification ✅ Passed Installed CLI version contains expected PR commit 995797c.
Basic stop lifecycle ✅ Passed Fresh file-based AppHost started in background and stopped with explicit --apphost path.
Stop all lifecycle ✅ Passed Two fresh file-based AppHosts were stopped with aspire stop --all without unexpected process inspection errors.
No running AppHosts ✅ Passed Repeated aspire stop --all after shutdown completed returned a safe no-op result.

Overall Result

✅ PR VERIFIED

Recommendations

  • Review the captured logs if any scenario failed.

@danegsta danegsta marked this pull request as ready for review May 29, 2026 19:32
Copilot AI review requested due to automatic review settings May 29, 2026 19:32
@danegsta
Copy link
Copy Markdown
Member Author

PR Testing Report

PR Information

CLI Version Verification

  • Expected Commit: 995797c
  • Installed Version: 13.4.0-pr.17676.g995797c8
  • Status: ✅ Passed

Changes Analyzed

Files Changed

  • src/Shared/ProcessSignaler.cs - Modified

Change Categories

  • CLI changes detected
  • Hosting/shared process helper changes detected
  • Dashboard changes
  • Template changes
  • Client/component changes
  • Test changes

Test Scenarios Executed

Scenario 1: PR CLI install and version verification

Objective: Install the dogfood CLI for PR #17676 and verify it matches the PR head commit.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Installed the PR CLI with the dogfood script into an isolated temp directory.
  2. Ran the installed binary directly with --version.
  3. Compared the version output against the PR head commit.

Evidence:

  • Install log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/install-output.txt
  • Version log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/version.txt

Observations:

  • Installed CLI version contains expected PR commit 995797c.

Scenario 2: Basic stop lifecycle

Objective: Verify a fresh AppHost still starts and stops cleanly through the PR CLI using an explicit AppHost path.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Created a fresh aspire-empty C# file-based AppHost with the PR hive and installed PR CLI version.
  2. Started the AppHost with aspire start --apphost <path> --non-interactive, which launches the AppHost in the background.
  3. Stopped the AppHost with aspire stop --apphost <path> --non-interactive.

Evidence:

  • Scenario directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached
  • Creation log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/new-output.txt
  • Start log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/start-output.txt
  • Stop log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/stop-output.txt

Observations:

  • Fresh file-based AppHost started in background and stopped with explicit --apphost path.

Scenario 3: Stop all lifecycle

Objective: Verify aspire stop --all can stop multiple AppHosts without surfacing the process-inspection exception fixed by this PR.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Created two fresh aspire-empty C# file-based AppHosts with the PR hive and installed PR CLI version.
  2. Started both AppHosts with explicit AppHost paths.
  3. Ran aspire stop --all --non-interactive.

Evidence:

  • Scenario directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached
  • Stop-all log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached/stop-all-output.txt

Observations:

  • Two fresh file-based AppHosts were stopped with aspire stop --all without unexpected process inspection errors.

Scenario 4: No running AppHosts

Objective: Verify repeating aspire stop --all after all AppHosts are stopped returns a safe no-op result rather than an unexpected error.
Coverage Type: Unhappy path / safe no-op
Status: ✅ Passed

Steps:

  1. Re-ran aspire stop --all --non-interactive after Scenario 3 completed.
  2. Captured the command output and exit status.

Evidence:

  • Empty stop-all log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached/stop-all-empty-output.txt

Expected Unhappy-Path Outcome: The command should not crash or surface an unexpected process inspection error when there are no AppHosts left to stop.

Observations:

  • Repeated aspire stop --all after shutdown completed returned a safe no-op result.

Summary

Scenario Status Notes
PR CLI install and version verification ✅ Passed Installed CLI version contains expected PR commit 995797c.
Basic stop lifecycle ✅ Passed Fresh file-based AppHost started in background and stopped with explicit --apphost path.
Stop all lifecycle ✅ Passed Two fresh file-based AppHosts were stopped with aspire stop --all without unexpected process inspection errors.
No running AppHosts ✅ Passed Repeated aspire stop --all after shutdown completed returned a safe no-op result.

Overall Result

✅ PR VERIFIED

Recommendations

  • Review the captured logs if any scenario failed.

1 similar comment
@danegsta
Copy link
Copy Markdown
Member Author

PR Testing Report

PR Information

CLI Version Verification

  • Expected Commit: 995797c
  • Installed Version: 13.4.0-pr.17676.g995797c8
  • Status: ✅ Passed

Changes Analyzed

Files Changed

  • src/Shared/ProcessSignaler.cs - Modified

Change Categories

  • CLI changes detected
  • Hosting/shared process helper changes detected
  • Dashboard changes
  • Template changes
  • Client/component changes
  • Test changes

Test Scenarios Executed

Scenario 1: PR CLI install and version verification

Objective: Install the dogfood CLI for PR #17676 and verify it matches the PR head commit.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Installed the PR CLI with the dogfood script into an isolated temp directory.
  2. Ran the installed binary directly with --version.
  3. Compared the version output against the PR head commit.

Evidence:

  • Install log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/install-output.txt
  • Version log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/version.txt

Observations:

  • Installed CLI version contains expected PR commit 995797c.

Scenario 2: Basic stop lifecycle

Objective: Verify a fresh AppHost still starts and stops cleanly through the PR CLI using an explicit AppHost path.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Created a fresh aspire-empty C# file-based AppHost with the PR hive and installed PR CLI version.
  2. Started the AppHost with aspire start --apphost <path> --non-interactive, which launches the AppHost in the background.
  3. Stopped the AppHost with aspire stop --apphost <path> --non-interactive.

Evidence:

  • Scenario directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached
  • Creation log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/new-output.txt
  • Start log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/start-output.txt
  • Stop log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-basic-stop-detached/stop-output.txt

Observations:

  • Fresh file-based AppHost started in background and stopped with explicit --apphost path.

Scenario 3: Stop all lifecycle

Objective: Verify aspire stop --all can stop multiple AppHosts without surfacing the process-inspection exception fixed by this PR.
Coverage Type: Happy path
Status: ✅ Passed

Steps:

  1. Created two fresh aspire-empty C# file-based AppHosts with the PR hive and installed PR CLI version.
  2. Started both AppHosts with explicit AppHost paths.
  3. Ran aspire stop --all --non-interactive.

Evidence:

  • Scenario directory: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached
  • Stop-all log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached/stop-all-output.txt

Observations:

  • Two fresh file-based AppHosts were stopped with aspire stop --all without unexpected process inspection errors.

Scenario 4: No running AppHosts

Objective: Verify repeating aspire stop --all after all AppHosts are stopped returns a safe no-op result rather than an unexpected error.
Coverage Type: Unhappy path / safe no-op
Status: ✅ Passed

Steps:

  1. Re-ran aspire stop --all --non-interactive after Scenario 3 completed.
  2. Captured the command output and exit status.

Evidence:

  • Empty stop-all log: /var/folders/97/44fp_02d4kd90s9p6sy_jwgh0000gn/T/aspire-pr-test-XXXXXX.yIX9keIoH4/scenario-stop-all-detached/stop-all-empty-output.txt

Expected Unhappy-Path Outcome: The command should not crash or surface an unexpected process inspection error when there are no AppHosts left to stop.

Observations:

  • Repeated aspire stop --all after shutdown completed returned a safe no-op result.

Summary

Scenario Status Notes
PR CLI install and version verification ✅ Passed Installed CLI version contains expected PR commit 995797c.
Basic stop lifecycle ✅ Passed Fresh file-based AppHost started in background and stopped with explicit --apphost path.
Stop all lifecycle ✅ Passed Two fresh file-based AppHosts were stopped with aspire stop --all without unexpected process inspection errors.
No running AppHosts ✅ Passed Repeated aspire stop --all after shutdown completed returned a safe no-op result.

Overall Result

✅ PR VERIFIED

Recommendations

  • Review the captured logs if any scenario failed.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens process shutdown handling by treating Win32Exception during process inspection as an already-stopped or unverifiable process, preventing aspire stop --all from failing when an AppHost exits during termination monitoring.

Changes:

  • Adds Win32Exception handling in ProcessSignaler.TryGetRunningProcess.
  • Ensures process handles are disposed on inspection failure paths.
  • Avoids returning processes that have exited or cannot be safely validated.

@danegsta
Copy link
Copy Markdown
Member Author

/backport to release/13.4

@github-actions
Copy link
Copy Markdown
Contributor

Started backporting to release/13.4 (link to workflow run)

@github-actions
Copy link
Copy Markdown
Contributor

CLI E2E Tests unknown — 108 passed, 0 failed, 2 unknown (commit 995797c)

View all recordings
Status Test Recording Job Artifacts
AddPackageInteractiveWhileAppHostRunningDetached Recording #78580102174 Logs
AddPackageWhileAppHostRunningDetached Recording #78580102174 Logs
AgentCommands_AllHelpOutputs_AreCorrect Recording #78580102483 Logs
AgentInitCommand_DefaultSelection_InstallsDefaultSkills Recording #78580102483 Logs
AgentInitCommand_MigratesDeprecatedConfig Recording #78580102483 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp Recording #78580101847 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_DevLocalhost Recording #78580101847 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_Isolated Recording #78580101847 Logs
AllPublishMethodsBuildDockerImages Recording #78580102668 Logs
AspireAddAndStartWorkAgainstLegacyAppHostTs Recording #78580101851 Logs
AspireAddPackageVersionToDirectoryPackagesProps Recording #78580101495 Logs
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost Recording #78580101850 Logs
AspireInitWithExistingAppHostDirRecreatesMissingNuGetConfigAndPreservesFiles Recording #78580102247 Logs
AspireInitWithSolutionFileGeneratesAppHostThatBuildsAgainstChannelHive Recording #78580102247 Logs
AspireStartUpdatesStaleTypeScriptAppHostPath Recording #78580101831 Logs
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps Recording #78580101495 Logs
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent Recording #78580101495 Logs
Banner_DisplayedOnFirstRun Recording #78580103175 Logs
Banner_DisplayedWithExplicitFlag Recording #78580103175 Logs
Banner_NotDisplayedWithNoLogoFlag Recording #78580103175 Logs
CertificatesClean_RemovesCertificates Recording #78580102778 Logs
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate Recording #78580102778 Logs
CertificatesTrust_WithUntrustedCert_TrustsCertificate Recording #78580102778 Logs
ConfigSetGet_CreatesNestedJsonFormat Recording #78580102459 Logs
CreateAndRunAspireStarterProject Recording #78580101824 Logs
CreateAndRunAspireStarterProjectWithBundle Recording #78580101923 Logs
CreateAndRunEmptyAppHostProject Recording #78580102745 Logs
CreateAndRunJavaEmptyAppHostProject Recording #78580102615 Logs
CreateAndRunJsReactProject Recording #78580101818 Logs
CreateAndRunPolyglotAppHostWithDevLocalhostUrls Recording #78580101824 Logs
CreateAndRunPythonReactProject Recording #78580101810 Logs
CreateAndRunTypeScriptEmptyAppHostProject Recording #78580102485 Logs
CreateAndRunTypeScriptStarterProject Recording #78580102319 Logs
CreateJavaAppHostWithViteApp Recording #78580101829 Logs
CreateTypeScriptAppHostWithViteApp_AllowsGuestAppPackageManagerToDiffer Recording #78580102370 Logs
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain Recording #78580102370 Logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces Recording #78580102410 Logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces_DevLocalhost Recording #78580102410 Logs
DashboardRunWithOtelTracesReturnsNoTraces Recording #78580102410 Logs
DashboardRunWithOtelTracesReturnsNoTraces_DevLocalhost Recording #78580102410 Logs
DeployK8sBasicApiService Recording #78580102267 Logs
DeployK8sWithExternalHelmChart Recording #78580102328 Logs
DeployK8sWithGarnet Recording #78580102407 Logs
DeployK8sWithMongoDB Recording #78580102452 Logs
DeployK8sWithMySql Recording #78580101909 Logs
DeployK8sWithPostgres Recording #78580101599 Logs
DeployK8sWithRabbitMQ Recording #78580102450 Logs
DeployK8sWithRedis Recording #78580101869 Logs
DeployK8sWithSqlServer Recording #78580102580 Logs
DeployK8sWithValkey Recording #78580101315 Logs
DeployTypeScriptAppToKubernetes Recording #78580101896 Logs
DescribeCommandResolvesReplicaNames Recording #78580102086 Logs
DescribeCommandShowsRunningResources Recording #78580102086 Logs
DetachFormatJsonProducesValidJson Recording #78580102329 Logs
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance Recording #78580102329 Logs
DoPublishAndDeployListStepsWork Recording #78580101919 Logs
DocsCommand_RendersInteractiveMarkdownFromLocalSource Recording #78580101864 Logs
DoctorCommand_DetectsDeprecatedAgentConfig Recording #78580102483 Logs
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain Recording #78580102903 Logs
DoctorCommand_WithSslCertDir_ShowsTrusted Recording #78580102903 Logs
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted Recording #78580102903 Logs
GatewayWithoutExternalEndpoint_FailsPublishWithGuidance Recording #78580103212 Logs
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain Recording #78580102370 Logs
GlobalMigration_HandlesCommentsAndTrailingCommas Recording #78580102459 Logs
GlobalMigration_HandlesMalformedLegacyJson Recording #78580102459 Logs
GlobalMigration_PreservesAllValueTypes Recording #78580102459 Logs
GlobalMigration_SkipsWhenNewConfigExists Recording #78580102459 Logs
GlobalSettings_MigratedFromLegacyFormat Recording #78580102459 Logs
IngressWithoutExternalEndpoint_FailsPublishWithGuidance Recording #78580103212 Logs
InitTypeScriptAppHost_AugmentsExistingViteRepoInWorkspaceSubdirectory Recording #78580102370 Logs
InteractiveCSharpInitCreatesExpectedFiles Recording #78580101811 Logs
InvalidAppHostPathWithComments_IsHealedOnRun Recording #78580102420 Logs
JavaScriptHostingApisRunFromTypeScriptAppHost Recording #78580102668 Logs
LatestCliCanStartStableChannelAppHost Recording #78580101824 Logs
LatestCliCanStartStableChannelTypeScriptAppHost Recording #78580101824 Logs
LegacySettingsMigration_AdjustsRelativeAppHostPath Recording #78580101831 Logs
LogsCommandShowsResourceLogs Recording #78580102013 Logs
OtelLogsReturnsStructuredLogsFromStarterApp Recording #78580101888 Logs
OtelLogsReturnsStructuredLogsFromStarterAppIsolated Recording #78580101888 Logs
PsCommandListsRunningAppHost Recording #78580102053 Logs
PsFormatJsonOutputsOnlyJsonToStdout Recording #78580102053 Logs
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts Recording #78580102066 Logs
PublishWithConfigureEnvFileUpdatesEnvOutput Recording #78580102066 Logs
PublishWithDockerComposeServiceCallbackSucceeds Recording #78580102066 Logs
PublishWithoutOutputPathUsesAppHostDirectoryDefault Recording #78580102066 Logs
ResourceCommand_FailedExecution_DisplaysAppHostLogPathAndLogContainsEntries Recording #78580101489 Logs
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput Recording #78580101489 Logs
RestoreGeneratesSdkFiles Recording #78580102995 Logs
RestoreGeneratesSdkFiles_WithConfiguredToolchain Recording #78580102313 Logs
RestoreRefreshesGeneratedSdkAfterAddingIntegration Recording #78580102313 Logs
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes Recording #78580102201 Logs
RunFromParentDirectory_UsesExistingConfigNearAppHost Recording #78580101904 Logs
RunReportsSyntaxErrorsForDotNetAppHost Recording #78580101747 Logs
RunReportsSyntaxErrorsForTypeScriptAppHost Recording #78580101747 Logs
SecretCrudOnDotNetAppHost Recording #78580102464 Logs
SecretCrudOnTypeScriptAppHost Recording #78580102058 Logs
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels Recording #78580102387 Logs
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets Recording #78580101934 Logs
StartReportsSyntaxErrorsForDotNetAppHost Recording #78580101747 Logs
StartReportsSyntaxErrorsForTypeScriptAppHost Recording #78580101747 Logs
StopAllAppHostsFromAppHostDirectory Recording #78580101620 Logs
StopJavaPolyglotAppHostUsingApphostDirectory Recording #78580102061 Logs
StopNonInteractiveSingleAppHost Recording #78580101620 Logs
StopTypeScriptPolyglotAppHostUsingApphostDirectory Recording #78580102454 Logs
StopWithNoRunningAppHostExitsSuccessfully Recording #78580102174 Logs
UnAwaitedChainsCompileWithAutoResolvePromises Recording #78580102313 Logs
UpdateProjectChannelToStable_CSharpEmptyAppHost_PreservesAspireConfigChannel Recording #78580102149 Logs
UpdateProjectChannelToStable_CSharpSingleFileInit_PreservesAspireConfigChannel Recording #78580102149 Logs
UpdateProjectChannelToStable_TypeScriptSingleFileInit_PreservesAspireConfigChannel Recording #78580102149 Logs
UpdateProjectChannelToStable_TypeScript_PreviewsStablePackagesAndPreservesChannel Recording #78580102149 Logs

📹 Recordings uploaded automatically from CI run #26656778748

@davidfowl davidfowl merged commit e258349 into release/13.4 May 29, 2026
910 of 917 checks passed
@davidfowl davidfowl deleted the danegsta/stop-all-failure branch May 29, 2026 20:36
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.4 milestone May 29, 2026
@aspire-repo-bot
Copy link
Copy Markdown
Contributor

✅ No documentation update needed.

docs_required → already documented by name

The only triggered signal is pr_body_has_cli_flag_mention (the PR body mentions aspire stop --all). This is a bug fix that handles a macOS race condition in ProcessSignaler.TryGetRunningProcess — no new CLI surface was added.

The --all flag is already documented verbatim in src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx:

  • Line 39–41: **\--all`** — Stop all running AppHosts without prompting for selection.`
  • Line 72: aspire stop --all (usage example)

No documentation update is needed.

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.

3 participants