Skip to content

Conventional routing on Azure Service Bus fails broker initialization (hidden behind [Flaky] since March) #3786

Description

@jeremydmiller

Conventional routing against Azure Service Bus fails to initialize the broker. Every affected test fails 100% of the time, deterministically, on a clean emulator — this is not flakiness, and it has been hidden behind [Trait("Category", "Flaky")] since 2026-03-21.

The failure

Wolverine.Transports.BrokerInitializationException : Unable to initialize the Broker asb in time

21 of 24 failures in the suite carry that exact message. Each one burns ~2m11s–2m27s on the timeout before failing, which is why the affected classes dominate the suite's wall clock.

Measured evidence

Full Wolverine.AzureServiceBus.Tests run, 2026-08-02, net9.0, Release, serial, against a freshly recreated emulator (servicebus-emulator:2.0.1) with the GH-3783 readiness gate in place, retries off:

304 tests, 24 failed, 67.6 minutes — of which 57.0 minutes is these classes.

class tests failed time
ConventionalRouting.conventional_listener_discovery 6 5 12.55m
ConventionalRouting.when_discovering_a_listening_endpoint_with_all_defaults 4 4 10.55m
Bugs.Bug_1933_multi_tenant_conventional_routing 2 2 7.70m
ConventionalRouting.when_discovering_a_sender_with_all_defaults 3 3 7.13m
ConventionalRouting.when_discovering_a_listening_endpoint_with_overridden_queue_naming 3 3 6.09m
ConventionalRouting.Broadcasting.end_to_end_with_conventional_routing 1 1 2.99m
ConventionalRouting.end_to_end_with_conventional_routing_with_prefix 1 1 2.78m
ConventionalRouting.end_to_end_with_conventional_routing 1 1 2.67m
ConventionalRouting.discover_with_naming_prefix 1 1 2.39m
end_to_end 6 2 2.03m
Bugs.Bug_2307_batching_with_conventional_routing 1 1 0.08m

Every single one is a conventional-routing test.

A clue worth starting from

ConventionalRouting.when_using_handler_type_naming (2 tests) was never tagged, has therefore been running in CI all along, and passes. Whatever it does differently from its eleven neighbours is probably the shortest path to the cause.

Bug_2307_batching_with_conventional_routing is also worth noting separately: it fails in 0.08m, not on the 2-minute broker timeout, so it may be a different (or downstream) failure.

Why nobody noticed

These were tagged in a bulk sweep on 2026-03-21 (commits with messages like "Tag all ConventionalRouting tests as Flaky"), so they have not run in CI for over four months. None of the tags recorded a reason, a number, or an issue link, so there was nothing to indicate the tag was hiding a hard failure rather than a timing race.

Separately, GH-3783 found the ASB readiness gate had been declaring the emulator ready ~26s before its management API could serve provisioning. That is plausibly what the March sweep was actually measuring — but it does not explain these: the numbers above were taken after that fix, on a cold, clean emulator.

Reproducing

docker compose up -d asb-emulator
dotnet test src/Transports/Azure/Wolverine.AzureServiceBus.Tests/Wolverine.AzureServiceBus.Tests.csproj \
  --framework net9.0 --filter "FullyQualifiedName~ConventionalRouting"

Recreate the emulator (docker compose rm -sf asb-emulator asb-sql) between runs — accumulated entities from prior runs change the timings.

Scope

Fixing this restores 29 tests and, more importantly, tells us whether conventional routing on Azure Service Bus works at all — the tests are the only coverage of that combination and they have been dark since March.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions