Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ namespace OracleTests.LeaderElection;
// the OracleControlTransport / NodeControlEndpoint when running in Balanced
// durability mode, otherwise leadership election cannot start.
//
// Marked Flaky so CI does not run them by default. The compliance suite spins up
// 3-4 hosts per test and depends on TM/DML lock release between runs against a
// single Oracle instance — fine to run locally one-at-a-time, but unstable
// against the shared CI Oracle container. See #2618 (CI stabilization).
[Trait("Category", "Flaky")]
// Previously excluded from CI as Flaky because the compliance suite spins up 3-4 hosts per test
// and depends on TM/DML lock release between runs against a single Oracle instance (#2618). The
// beforeBuildingHost() teardown below has since grown the DDL_LOCK_TIMEOUT + per-table ORA-00054
// retry that the exclusion was standing in for. Re-measured 2026-08-04: 15/15 green on four
// consecutive runs, 1m44s each. Watch CIOracle -- the shared-container contention this was
// hedging against cannot be reproduced on a dev box.
public class leader_election : LeadershipElectionCompliance
{
public const string SchemaName = "WOLVERINE";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

namespace MartenTests.MultiTenancy;

[Trait("Category", "Flaky")]
public class using_tenant_specific_queues_and_subscriptions : PostgresqlContext, IAsyncLifetime
{
private readonly List<IHost> _receivers = new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

namespace PolecatTests.Subscriptions;

[Trait("Category", "Flaky")]
public class subscriptions_end_to_end
{
/// <summary>
Expand Down Expand Up @@ -233,7 +232,7 @@ public async Task use_inline_subscription_filtered()
PcTotalsHandler.Handled.ShouldBe(['a', 'b', 'a', 'a', 'a', 'a', 'b', 'b']);
}

[Fact(Skip = "Known TrackActivity race condition with publishing subscriptions - same failure in MartenSubscriptionTests")]
[Fact]
public async Task use_unfiltered_publishing_subscription()
{
const string schema = "pc_subscriptions_pub";
Expand Down Expand Up @@ -276,16 +275,24 @@ public async Task use_unfiltered_publishing_subscription()
await daemon.WaitForNonStaleData(30.Seconds());
};

// The daemon flushes the subscription's staged outbox AFTER it commits the page and its
// progress, so WaitForNonStaleData() returning does NOT mean the messages have been
// published. Without explicit waiters the session ends on the activity lull and the
// stragglers are never recorded. Same fix as the MartenSubscriptionTests twin.
var tracked = await host
.TrackActivity()
.Timeout(60.Seconds())
.WaitForExecutionOf<IEvent<PcAEvent>>(6)
.WaitForExecutionOf<PcBEvent>(7)
.WaitForExecutionOf<IEvent<PcDEvent>>(6)
.ExecuteAndWaitAsync(writeEvents);

tracked.Executed.MessagesOf<IEvent<PcAEvent>>().Count().ShouldBe(6);
tracked.Executed.MessagesOf<PcBEvent>().Count().ShouldBe(7);
tracked.Executed.MessagesOf<IEvent<PcDEvent>>().Count().ShouldBe(6);
}

[Fact(Skip = "Known TrackActivity race condition with publishing subscriptions - same failure in MartenSubscriptionTests")]
[Fact]
public async Task use_filtered_publishing_subscription()
{
const string schema = "pc_subscriptions_pub_filt";
Expand Down Expand Up @@ -332,8 +339,12 @@ public async Task use_filtered_publishing_subscription()
await daemon.WaitForNonStaleData(30.Seconds());
};

// See use_unfiltered_publishing_subscription for why the explicit waiters are needed
var tracked = await host
.TrackActivity()
.Timeout(60.Seconds())
.WaitForExecutionOf<IEvent<PcAEvent>>(6)
.WaitForExecutionOf<IEvent<PcDEvent>>(6)
.ExecuteAndWaitAsync(writeEvents);

tracked.Executed.MessagesOf<IEvent<PcAEvent>>().Count().ShouldBe(6);
Expand Down Expand Up @@ -391,8 +402,12 @@ public async Task use_transformed_publishing_subscription()
await daemon.WaitForNonStaleData(60.Seconds());
};

// See use_unfiltered_publishing_subscription for why the explicit waiters are needed
var tracked = await host
.TrackActivity()
.Timeout(60.Seconds())
.WaitForExecutionOf<IEvent<PcAEvent>>(6)
.WaitForExecutionOf<PcTransformedMessage>(6)
.ExecuteAndWaitAsync(writeEvents);

tracked.Executed.MessagesOf<IEvent<PcAEvent>>().Count().ShouldBe(6);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@

namespace SqliteTests.Transport;

// CI marker: scheduled_messages_are_processed_in_tenant_files reliably hangs the
// 10-minute sqlite job, and the 2-attempt retry policy multiplies that into a
// guaranteed timeout. Until the test is rewritten with a hard wait-bound, run it
// only locally via the Flaky filter. See #2618 (CI stabilization).
[Trait("Category", "Flaky")]
// The hang that got this class excluded (scheduled_messages_are_processed_in_tenant_files
// eating the 10-minute sqlite job, see #2618) was cured when the test was rewritten around the
// bounded Poll() helper below -- it no longer waits on an unbounded condition. Re-measured
// 2026-08-04: 2 tests in 3s, five consecutive runs, and 1m15s for the whole SqliteTests project.
[Collection("sqlite")]
public class multi_tenancy_with_multiple_files : SqliteContext, IAsyncLifetime
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ namespace Wolverine.AzureServiceBus.Tests.Bugs;
/// short-circuit on <c>endpoint.Subscriptions.Any() == false</c> and never upgrade
/// the endpoint mode to Durable.
/// </summary>
[Trait("Category", "Flaky")]
public class Bug_2588_durable_outbox_with_handler_and_conventional_routing : IAsyncLifetime
{
private IHost _host = null!;
Expand Down Expand Up @@ -74,7 +73,6 @@ public void conventionally_routed_sender_should_be_durable_when_handler_is_also_
/// queue-based one. Both inherit from <c>MessageRoutingConvention&lt;,,,&gt;</c>
/// and share the same fix path.
/// </summary>
[Trait("Category", "Flaky")]
public class Bug_2588_durable_outbox_with_handler_and_topic_broadcasting_routing : IAsyncLifetime
{
private IHost _host = null!;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ namespace Wolverine.AzureServiceBus.Tests;
/// set). The background recovery listener drains the sub-queue and the dead letter ends up queryable
/// in Wolverine's durable storage.
/// </summary>
[Trait("Category", "Flaky")]
public class dead_letter_queue_recovery : IAsyncLifetime
{
private readonly string _queueName = $"dlqrecovery{Guid.NewGuid():N}";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ namespace Wolverine.AzureServiceBus.Tests;
// GH-3533: pinning a session-enabled listener to specific session identifiers turns the session id
// into a broker-enforced routing key on a shared queue, so a listener pinned to "A" never sees the
// messages meant for "B".
[Trait("Category", "Flaky")]
public class session_id_pinning : IAsyncLifetime
{
private IHost _host = null!;
Expand Down
Loading