Skip to content

fix!: deadlock on restarts and ready gate for mass transit - #209

Closed
tnschneider wants to merge 13 commits into
mainfrom
forks/tschneider/fixes-and-enhancements-2
Closed

tnschneider wants to merge 13 commits into
mainfrom
forks/tschneider/fixes-and-enhancements-2

Conversation

@tnschneider

Copy link
Copy Markdown
Contributor

No description provided.

Terry Schneider added 12 commits May 23, 2026 16:37
…JobEventPublisher

- Merge GetSubscribers and InvokeSubscribers into single ResolveAndInvokeSubscribersAsync method
- Remove unused System.Collections.Generic import
- Change fire-and-forget calls to use discard pattern consistently
- Await ResolveAndInvokeSubscribersAsync in PublishJobWatchEventAsync
- Simplify error handling by catching exceptions within Task.Run
- Remove extra blank lines between method calls
- Add JobbaCoreOptions with configurable StaleMultiplier for orphan detection
- Add ConfigureOptions method to JobbaBuilder for options configuration
- Implement heartbeat tracking with LastHeartbeatTime field in JobEntity and JobInfoBase
- Add SetHeartbeatAsync and ReclaimOrphanedJobsAsync methods to IJobStore interface
- Implement heartbeat loop in DefaultJobRunner with periodic updates and scoped store resolution
- Add orphaned job reclamation to
- Add IJobbaReadyGate interface for signaling infrastructure readiness before startup tasks
- Add AddReadyGate<TGate>() method to JobbaBuilder for gate registration
- Implement gate waiting in JobbaHostedService before restarting faulted jobs
- Register MassTransitJobbaReceiverHostedService as IJobbaReadyGate
- Add TaskCompletionSource to MassTransitJobbaReceiverHostedService to signal endpoint readiness
- Wait for all MassTransit receive
@tnschneider
tnschneider marked this pull request as ready for review May 29, 2026 20:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant