Folks,

In response to the bug discussed in this email thread
<http://qpid.2158936.n2.nabble.com/multicast-without-consumers-td7687316.html>
I'm proposing DISPATCH-1481
<https://issues.apache.org/jira/browse/DISPATCH-1481>, which reverts the
unconditional granting of credit on multicast links introduced by
DISPATCH-779 <https://issues.apache.org/jira/browse/DISPATCH-779>.  This
will make the router's credit management behavior consistent across all
address forwarding types.

Currently the router will grant credit on multicast links when no consumers
are present.  From a multicast producer's point of view this link never
blocks - it always accepts messages.

However if there are no consumers the router immediately discards the
message.  If the discarded multicast message was unsettled the router sets
the terminal outcome as either ACCEPTED or RELEASED (depending on the
version of the router - see DISPATCH-1481 for the gory details).

DISPATCH-1481 will modify this to avoid granting credit on a multicast link
until at least one consumer is present.  With DISPATCH-1481 publishers
attempting to pass multicast messages to the router will block until credit
becomes available.  This is currently how the router manages credit on
non-multicast links - DISPATCH-1481 will provide a consistent behavior
regardless of link type.

Applications that need to avoid blocking on send should check the amount of
credit on the link first and avoid sending the message if no credit is
available.

Implementing DISPATCH-1481 will eliminate the infinite message transmit
loops that will occur when using a multicast inbound link from a broker
waypoint.

Opinions and feedback requested!

thanks,

-- 
-K

Reply via email to