Repository navigation
GH-5409 Commit the out-of-process durability chaos rig with a README - #5420
Merged
Merged
Conversation
src/Testing/DurabilityChaosRig is a standalone crash rig for the outbox, durable inbox, database queues and node agents. A driver runs a producer and several workers, injects SIGKILL, SIGTERM, SIGSTOP and database or broker outages from one seed, then checks a ledger for lost, duplicated and stuck messages. Like KafkaPerfRig it is in neither solution and not in CI. The README covers roles, knobs, containers and how to investigate a run that is not clean, and CLAUDE.md points at it. Closes #5409 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013nKJrqsJw3j23Xd46q37ob
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #5409.
Adds
src/Testing/DurabilityChaosRig, the out-of-process crash rig that found #5399, #5408 and #5410. A driver runs a producer and three to five workers, injects faults from one seed, then checks a ledger for lost, duplicated and stuck messages. The faults are SIGKILL, SIGTERM, SIGSTOP past the stale node timeout, anddocker pauseof the database or the broker. LikeKafkaPerfRig, it is in neither.slnxsolution and not in CI, soLocalGateandVerifyLocalGateCoverageare unaffected.CHAOS_*knob, the containers each mode needs, whatCLEANmeans, how to investigate a run that is not clean, and the gotchas.CHAOS_PROCESS_ID_NEWIDworkaround was already gone, since Default envelope ids no longer collide between processes on one machine #5399 fixed the cause.Smoke runs (2026-11-07, this branch)
Two of these are real findings, already being fixed:
count > MaximumMessagesToReceive, which a pop can never satisfy. The same bug is in the MySQL and Oracle listeners.Workhandler's commit was chosen as a deadlock victim, and the message was dead-lettered. Thesystem_healthdeadlock graph shows the scheduled-message poll's select holding shared page locks while handlers mark rowsHandled. That is SQL Server: the scheduled-message poll is a deadlock victim under normal multi-node load #5412.🤖 Generated with Claude Code
https://claude.ai/code/session_013nKJrqsJw3j23Xd46q37ob