Skip to content

Resource waiting on itself deadlocks, and breaks aspire start #17758

@afscrome

Description

@afscrome

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

I had a bizarre issue where aspire run worked fine, but aspire start was hanging until it timed out. Whilst aspire start was hanging, I couldn't even to an aspire ps to see what was going on. This caused my agent to have a lot of problems working out what the problem was.

I eventually tracked the problem down to managing to cause a resource to wait on itself. (specifically in the community toolkit causing the Otel collector to wait on itself)

Expected Behavior

There are a few things wrong here:

  1. A resource waiting on itself shouldn't deadlock (or should throw an error earlier)
  2. A resource stuck in the waiting state shouldnt' cause aspire start to fail.
  3. Even if aspire start waits for something, aspire ps or other commands should work whilst resources start up so an agent has a chance to troubleshoot the problem if there are problems.

Steps To Reproduce

var builder = DistributedApplication.CreateBuilder(args);

var x = builder.AddContainer("nginx", "nginx")
    .WithHttpEndpoint(targetPort: 80);

// This throws
// x.WaitFor(x);

// But this does not, and causes the resource to wait infinitely
// as well as blocking `aspire start` 
x.WithAnnotation(new WaitAnnotation(x.Resource, WaitType.WaitUntilHealthy));

builder.Build().Run();

Exceptions (if any)

No response

Aspire doctor output

Aspire Environment Check
========================

Aspire
  ⚠️ Aspire CLI version 13.4.0-preview.1.26271.17 (channel: daily) is out of date. Latest version is 13.5.0-preview.1.26281.1 (channel: prerelease)  
       Run 'aspire update' to update Aspire CLI.       

.NET SDK
  ✅ .NET 10.0.103 installed (arm64)  

Container Runtime
  ✅ Docker v28.4.0: running (auto-detected (default)) ← active  

Environment
  ✅ HTTPS development certificate is trusted  
  ⚠️ HTTPS development certificate has an older version (v5)  
       Run 'aspire certs clean' to remove all certificates, then run 'aspire certs trust' to create and trust a new one.       
       See: https://aka.ms/aspire-prerequisites#dev-certs                                                                      
       Details:                                                                                                                
       Older certificate versions (< v4) may not support all certificate trust scenarios.                                      

Summary: 3 passed, 2 warnings, 0 failed
For detailed prerequisites: https://aka.ms/aspire-prerequisites

Aspire CLI Installations
========================

╭──────────────────────────────────────────┬────────────────────────────────────────────────────────────────────┬─────────┬───────────┬─────────────╮
│ Path                                     │ Version                                                            │ Channel │ Route     │ PATH status │
├──────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┼─────────┼───────────┼─────────────┤
│ /Users/alex/.aspire/bin/aspire (current) │ 13.4.0-preview.1.26271.17+b5ce100e0b30660a9e33ba757adf098aad9ffc92 │ daily   │ (unknown) │ active      │
╰──────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┴─────────┴───────────┴─────────────╯

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-app-modelIssues pertaining to the APIs in Aspire.Hosting, e.g. DistributedApplicationarea-clitriage:bot-seenAspire triage bot has seen this issue

    Type

    No fields configured for Bug.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions