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