Skip to content

NimBus v4.1.0

Choose a tag to compare

@akakaule akakaule released this 28 Sep 12:41
· 98 commits to master since this release
4d8bea5

NimBus 4.1.0 adds clearer failure-classification guidance and fixes deferred replay, circuit-breaker accounting, SQL outbox ordering and Cosmos DB time-range queries.

Highlights

  • Added an explanation of how failures are classified to Admin → Failure intelligence, with threshold sliders, live sample evaluations and clearer category and guidance descriptions on event details.
  • Fixed deferred drains repeatedly replaying messages that become blocked again, which could flood the audit trail and hold up other sessions.
  • Fixed session-lock expiry during long deferred drains, reducing interrupted drains and duplicate replays.
  • Fixed failed retries and resubmissions being counted as circuit-breaker successes, which could close a circuit while its dependency was still unavailable.
  • Fixed SQL Server outbox batches dispatching messages in random GUID order when timestamps matched; new rows now dispatch in insertion order.
  • Fixed Cosmos DB timestamp comparisons omitting or including the wrong rows at time-range boundaries in searches, failure histograms and heartbeat gaps, and reporting the wrong oldest failure within a second.
  • Improved deployment, retry, handoff, MCP and demo documentation to match the implemented behavior.

Compatibility

SQL Server outbox initialization adds a sequence, a nullable SequenceNumber column and a replacement dispatch-order index. With AutoCreateTable enabled, startup applies these changes; otherwise run EnsureTableExistsAsync with schema-change permissions before starting the upgraded outbox. Existing pending rows dispatch first in their previous timestamp order; their original order within timestamp ties cannot be recovered. Custom IOutbox implementations must preserve store order for messages sharing a creation timestamp.

IMessageContext.HandledFailure is an additive property with a default implementation, so existing custom contexts remain source-compatible. Custom contexts must store its value to benefit from the circuit-breaker fix; the supplied Service Bus and in-memory contexts already do. Deferred replays now receive a fresh message ID, and re-parked copies carry that ID as their parent so the drain can recognize them; upgrade endpoint SDK packages to receive the fix. No Service Bus topology change or Cosmos DB schema migration is required. The proposed v5 Cosmos storage redesign is not included.

This release was validated at commit 4d8bea57 with the full .NET Release build and 3,286 tests in CI, live Cosmos DB and SQL Server conformance suites with no skipped tests, and Service Bus emulator compatibility checks. The frontend production build and 466 frontend tests passed in a clean checkout of the release commit; no new manual Azure or CRM/ERP end-to-end run was performed for this release.

PRs: #159, #160, #161, #162, #163, #164, #165, #166, #167, #168

Commits: v4.0.0...v4.1.0