Skip to content

Commit c1bd7f0

Browse files
committed
Connector: set SubscriptionId on locally-generated order messages
InitNewOrderAsync and SendOrderFailedAsync sent ExecutionMessage via SendOutMessageAsync without SubscriptionIds. This caused GetSubscriptions() to return empty, so the new-style OrderReceived event never fired for Pending orders. Only the deprecated NewOrder event worked. Fix: set SubscriptionId = OrderLookup.TransactionId on both Pending and local-fail messages.
1 parent 65af099 commit c1bd7f0

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

Algo/Connector.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,17 @@ private ValueTask SendOrderFailedAsync(Order order, OrderOperations operation, E
716716

717717
_entityCache.AddOrderFailById(fail, operation, originalTransactionId);
718718

719-
return SendOutMessageAsync(fail.ToMessage(originalTransactionId), cancellationToken);
719+
var msg = fail.ToMessage(originalTransactionId);
720+
TrySetOrderSubscriptionId(msg);
721+
return SendOutMessageAsync(msg, cancellationToken);
722+
}
723+
724+
private void TrySetOrderSubscriptionId(ExecutionMessage msg)
725+
{
726+
var orderSubId = OrderLookup.TransactionId;
727+
728+
if (orderSubId > 0)
729+
msg.SetSubscriptionIds(subscriptionId: orderSubId);
720730
}
721731

722732
private void CheckOnNew(Order order)
@@ -795,7 +805,9 @@ private ValueTask InitNewOrderAsync(Order order, CancellationToken cancellationT
795805

796806
_entityCache.AddOrderByRegistrationId(order);
797807

798-
return SendOutMessageAsync(order.ToMessage(), cancellationToken);
808+
var msg = order.ToMessage();
809+
TrySetOrderSubscriptionId(msg);
810+
return SendOutMessageAsync(msg, cancellationToken);
799811
}
800812

801813
/// <summary>

0 commit comments

Comments
 (0)