diff --git a/src/Wolverine/Runtime/MessageBus.cs b/src/Wolverine/Runtime/MessageBus.cs index f521c79fd..47e7c266e 100644 --- a/src/Wolverine/Runtime/MessageBus.cs +++ b/src/Wolverine/Runtime/MessageBus.cs @@ -252,6 +252,8 @@ public ValueTask BroadcastToTopicAsync(string topicName, object message, Deliver internal async ValueTask PersistOrSendAsync(Envelope envelope) { + if (envelope is null) return; // Not sure how this would happen + if (envelope.Sender is null) { throw new InvalidOperationException("Envelope has not been routed"); @@ -310,7 +312,7 @@ internal async ValueTask PersistOrSendAsync(params Envelope[] outgoing) // the sender is currently latched var envelopes = outgoing.Where(isDurable).ToArray(); foreach (var envelope in envelopes.Where(x => - x.Sender is { Latched: true } && x.Status == EnvelopeStatus.Outgoing)) + x is { Sender: { Latched: true }, Status: EnvelopeStatus.Outgoing })) envelope.OwnerId = TransportConstants.AnyNode; await Transaction.PersistAsync(envelopes); diff --git a/src/Wolverine/Runtime/MessageContext.cs b/src/Wolverine/Runtime/MessageContext.cs index 1bbb4f223..4c535bae5 100644 --- a/src/Wolverine/Runtime/MessageContext.cs +++ b/src/Wolverine/Runtime/MessageContext.cs @@ -109,7 +109,6 @@ public async Task FlushOutgoingMessagesAsync() $"This MessageContext does not allow multiple calls to {nameof(FlushOutgoingMessagesAsync)} because {nameof(MultiFlushMode)} = {MultiFlushMode}"); } } - await AssertAnyRequiredResponseWasGenerated(); @@ -120,6 +119,9 @@ public async Task FlushOutgoingMessagesAsync() foreach (var envelope in Outstanding) { + // https://github.com/JasperFx/wolverine/issues/2006 + if (envelope == null) continue; + try { if (envelope.IsScheduledForLater(DateTimeOffset.UtcNow))