You mean your rules to be applied exclusively, and in that order, right?
i.e.

if ( anybody rejected )
{
  disposition = rejected
}
*else*
if ( anybody accepted )
{
  disposition = accepted
}




On Mon, Apr 16, 2018 at 10:24 AM, Ken Giusti <kgiu...@redhat.com> wrote:

> To reply to my own question:
>
> IMHO when sending an unsettled multicast I would expect
> 1) that all present consumers will get a copy of the message and:
> 2) that any potential consumers that are *not* present would not get a
> copy of the message (right, that's a no-brainer, but hear me out).
> 3) if any consumer signals a REJECT
>
> So I would like the router to:
>
> 1) send back a final disposition of REJECT if *any* client returned a
> REJECT.
> The spec is pretty clear that the message is considered invalid by the
> recipient
>  in this case.  That's a pretty big deal, since I assumed that the message
> is
> not invalid when it was sent.  This could possibly indicate a bug or a
> state
> mismatch between sender and receiver.  I would want to know about this.
>
> 2) send back a final disposition of ACCEPTED if at least one client
> ACCEPTED.  Ignore MODIFIED and RELEASED in this case, since
>     2a) RELEASED indicates we can resend safely, which we cannot
> (someone ACCEPTED)
>     2b) MODIFIED is in doubt, also cannot resend safely and I feel can
> be considered as an equivalent case as #2 above
>
> 3) Otherwise for a mix of MODIFIED and RELEASED return MODIFIED as we
> cannot re-send the same message.
> 4) else all RELEASED, so return RELEASED.
>
>
>
> Again, this is MHO and I only present it as a strawman for
> consideration and discussion.  I'm not convinced holding state in the
> router while it waits
> for all consumers to reply is practical (or desired in the slow consumer
> case).
>
>
> -K
>
> On Mon, Apr 16, 2018 at 9:49 AM, Ken Giusti <kgiu...@redhat.com> wrote:
> > We really should try to do something smarter in the case of unsettled
> > multicast rather than either of the current approaches.
> >
> > What does an application/dev expect when it sends any message
> > unsettled?  It expects to block until eventually it gets some
> > indication of whether or not the message was delivered as intended.
> > In the case of single consumer the expectation is obvious and well
> > handled by the router.
> >
> > But in the case of multicast it is a different story: here we have the
> > possibility that the message may be both consumed by one recipient and
> > rejected by another.  So the question is: from the POV of the dev/app,
> > what is the "obvious" default action the router should perform in that
> > case?
> >
> > -K
> >
> >
> > On Fri, Apr 13, 2018 at 3:38 PM, Chuck Rolke <cro...@redhat.com> wrote:
> >> I would prefer to keep the feature enforced as it is now. I was one who
> >> was surprised to have a sender whose message is settled by the router
> >> only to find out that it was not delivered anywhere.
> >>
> >> The document https://qpid.apache.org/releases/qpid-dispatch-1.0.0/
> book/book.html#routing-patterns
> >> needs to have a clearer explanation of the lossy nature of multicast
> >> distribution.
> >>
> >> ----- Original Message -----
> >>> From: "Ted Ross" <tr...@redhat.com>
> >>> To: users@qpid.apache.org
> >>> Sent: Thursday, April 12, 2018 6:26:34 PM
> >>> Subject: Re: Proposed Feature Removal from Dispatch Router
> >>>
> >>> For the record, here is the Jira for the feature in question:
> >>>
> >>> https://issues.apache.org/jira/browse/DISPATCH-744
> >>>
> >>> On Thu, Apr 12, 2018 at 6:20 PM, Ted Ross <tr...@redhat.com> wrote:
> >>> > We added a feature back in 1.0.0 to reject unsettled deliveries to
> >>> > multicast addresses by default.  This can be disabled through
> >>> > configuration but is on by default.
> >>> >
> >>> > The rationale was that the router would accept and settle unsettled
> >>> > multicasts even though it might not have delivered the messages to
> any
> >>> > consumer.  The rejection with error code was intended to inform users
> >>> > that they should pre-settle deliveries to multicast addresses in
> >>> > keeping with the best-effort nature of multicast routing.
> >>> >
> >>> > In practice, this is more of an annoyance because none of the example
> >>> > clients (and apparently the users' clients) actually do anything with
> >>> > the error code in the rejected delivery.  The router appears to
> >>> > silently drop such messages for no good reason and good will is
> wasted
> >>> > in chasing down the issue to "oh, you should turn off this handy
> >>> > feature".
> >>> >
> >>> > The recently raised https://issues.apache.org/
> jira/browse/DISPATCH-966
> >>> > is caused by this feature as well.  This is because the router can
> >>> > stream large messages in multiple transfers.  The first transfer is
> >>> > used for routing and the last transfer should be used to determine
> the
> >>> > settlement status of the delivery.  It is not a trivial fix to make
> >>> > this work correctly.
> >>> >
> >>> > For the above two reasons, I propose that we back out this feature
> and
> >>> > allow multicasting with unsettled deliveries.  We should add a clear
> >>> > note in the documentation that states that multicast is best-effort,
> >>> > regardless of the settlement status of the deliveries.
> >>> >
> >>> > Any objections from the users?
> >>> >
> >>> > -Ted
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> >>> For additional commands, e-mail: users-h...@qpid.apache.org
> >>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> >> For additional commands, e-mail: users-h...@qpid.apache.org
> >>
> >
> >
> >
> > --
> > -K
>
>
>
> --
> -K
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> For additional commands, e-mail: users-h...@qpid.apache.org
>
>

Reply via email to