ted-ross commented on a change in pull request #1018:
URL: https://github.com/apache/qpid-dispatch/pull/1018#discussion_r570519947
##########
File path: src/router_core/transfer.c
##########
@@ -219,14 +217,32 @@ int qdr_link_process_deliveries(qdr_core_t *core,
qdr_link_t *link, int credit)
dlv->where = QDR_DELIVERY_IN_UNSETTLED;
qd_log(core->log, QD_LOG_DEBUG, DLV_FMT"Delivery
transfer: qdr_link_process_deliveries: undelivered-list -> unsettled-list",
DLV_ARGS(dlv));
}
+ } else {
+ //
+ // This delivery is in the process of being transfered
+ // to a different link. Hack: the adaptor
+ // deliver_handler has issued a new link-attached
+ // action to the core, passing this dlv as the initial
Review comment:
To clarify... it already is a two step process. Returning MOVED_TO...
is the dissociation and first_attach(..., initial_dlv, ...) is the
re-association. The issue is that these steps can occur in either order. In
fact, they do: HTTP2 does re-associate before dissociate and TCP does it the
other way around. In both cases, there are races between threads that can
cause reversals.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]