You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by "Lohmann Carsten (INST/ECS4)" <Ca...@bosch-si.com> on 2019/08/29 17:50:38 UTC

[Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Hi,

I've a question regarding the following scenario:

we have a network of 3 Qpid dispatch router instances.
A client is connected to router instance A and has opened a receiver link on address addrA.
*After* having received the ATTACH frame for this, 
another client on another machine which is connected to router instance B opens a sender link on the empty address (anonymous relay).
After receiving credit, a message with the "To" address "addrA" is sent on this sender link.

With this, we frequently get a rejected disposition from the router:
Disposition{role=RECEIVER, first=2, last=null, settled=false, state=Rejected{error=Error{condition=amqp:not-found, description='Deliveries cannot be sent to an unavailable address', info=null}}, batchable=false}

Adding a delay before sending the message causes the message to be accepted.


Is it correct to assume that "rejected" disposition will come when the information about the "addrA" receiver on router A has not been propagated yet to router B?
Is there some way to know for the message sender when it is safe to send the message on the anonymous relay link without it getting rejected?


(Using Qpid Dispatch Router 1.7.0, as part of EnMasse.)


Best regards

Carsten Lohmann

Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4) 
Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin | GERMANY | www.bosch-si.com

Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B 
Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr. Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic 




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by Ken Giusti <kg...@redhat.com>.
On Thu, Aug 29, 2019 at 4:16 PM Lohmann Carsten (INST/ECS4) <
Carsten.Lohmann@bosch-si.com> wrote:

> > >
> > > Just an idea:
> > > Would it be feasible for the router to only send the reply ATTACH frame
> > > for the receiver link creation once the address was propagated to all
> nodes
> > > of the router network? And maybe activating that behaviour via a Qpid
> > > configuration option.
> > >
> > Since this is an anonymous link, we send the response attach immediately
> > since it is not for any specific address. In the case of a non-anonymous
> > sender we will not send you back an attach until there is a receiver
> > available.
> >
> I meant the response attach for the *receiver* link creation.
>
> If getting the attach frame there meant that the receiver information has
> already been propagated to all routers, we could be sure that afterwards,
> sending the message on the anonymous-relay link would succeed.
>
>
If only we could :) that would be ideal.

However its impractical to the point of impossibility to propagate the
state of propagation for a single address back from all nodes in the router
mesh to the incoming router.  Its a scale problem (think 100's of router
nodes with millions of mobile addresses) coupled with a timing issue (path
between sender and receiver going down the moment the response attach is
sent to the receiver).

cheers,

-- 
-K

RE: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by "Lohmann Carsten (INST/ECS4)" <Ca...@bosch-si.com>.
> >
> > Just an idea:
> > Would it be feasible for the router to only send the reply ATTACH frame
> > for the receiver link creation once the address was propagated to all nodes
> > of the router network? And maybe activating that behaviour via a Qpid
> > configuration option.
> >
> Since this is an anonymous link, we send the response attach immediately
> since it is not for any specific address. In the case of a non-anonymous
> sender we will not send you back an attach until there is a receiver
> available.
> 
I meant the response attach for the *receiver* link creation.

If getting the attach frame there meant that the receiver information has already been propagated to all routers, we could be sure that afterwards, sending the message on the anonymous-relay link would succeed.



Re: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by Ganesh Murthy <gm...@redhat.com>.
On Thu, Aug 29, 2019 at 3:58 PM Ganesh Murthy <gm...@redhat.com> wrote:

>
>
> On Thu, Aug 29, 2019 at 3:48 PM Lohmann Carsten (INST/ECS4) <
> Carsten.Lohmann@bosch-si.com> wrote:
>
>> > > > we have a network of 3 Qpid dispatch router instances.
>> > > > A client is connected to router instance A and has opened a
>> receiver link
>> > > > on address addrA.
>> > > > *After* having received the ATTACH frame for this,
>> > > > another client on another machine which is connected to router
>> instance B
>> > > > opens a sender link on the empty address (anonymous relay).
>> > > > After receiving credit, a message with the "To" address "addrA" is
>> sent
>> > > on
>> > > > this sender link.
>> > > >
>> > > > With this, we frequently get a rejected disposition from the router:
>> > > > Disposition{role=RECEIVER, first=2, last=null, settled=false,
>> > > > state=Rejected{error=Error{condition=amqp:not-found,
>> > > > description='Deliveries cannot be sent to an unavailable address',
>> > > > info=null}}, batchable=false}
>> > > >
>> > > > Adding a delay before sending the message causes the message to be
>> > > > accepted.
>> > > >
>> > > >
>> > > > Is it correct to assume that "rejected" disposition will come when
>> the
>> > > > information about the "addrA" receiver on router A has not been
>> > > propagated
>> > > > yet to router B?
>> > > >
>> > > Yes, that is a correct assumption.
>> > >
>> > > > Is there some way to know for the message sender when it is safe to
>> send
>> > > > the message on the anonymous relay link without it getting rejected?
>> > > >
>> > > You could run a qdstat -a on the router B and make sure you see your
>> > > address before starting to send on the anonymous link.
>> > >
>> > > Thanks.
>> > >
>> > >
>> > Or you can re-try the send at some point.
>> > Usually the router returns a Released disposition when it cannot
>> forward a
>> > message (as in this case the address hasn't been propagated to the
>> router).
>> >
>> > A "Released" disposition means the message definitely has not been acted
>> > upon my any receiver, so it can be re-transmitted without risk of
>> > duplication.
>> >
>> > The reason you see Rejected instead is your router has configured the
>> > "defaultDistribution" configuration option to "unavailable".  That
>> forces
>> > the router to reject any message that cannot be forwarded.
>> >
>>
>> ok, thanks.
>>
>> Unfortunately, using qdstat or anything Qpid-specific is not an option
>> here for us.
>> So, yes, either we could re-try sending the message or use a
>> non-anonymous sender link instead.
>>
>> Just an idea:
>> Would it be feasible for the router to only send the reply ATTACH frame
>> for the receiver link creation once the address was propagated to all nodes
>> of the router network? And maybe activating that behaviour via a Qpid
>> configuration option.
>>
> Since this is an anonymous link, we send the response attach immediately
> since it is not for any specific address. In the case of a non-anonymous
> sender we will not send you back an attach until there is a receiver
> available.
>
I was wrong here to say that in the case of non-anonymous sender we will
not send the attach back. We DO send the attach back but dont provide
credit.
Thanks.

>
>>
>> Best regards
>>
>> Carsten Lohmann
>>
>> Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4)
>> Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin |
>> GERMANY | www.bosch-si.com
>>
>> Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B
>> Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr.
>> Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic
>>
>>

Re: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by Ganesh Murthy <gm...@redhat.com>.
On Thu, Aug 29, 2019 at 3:48 PM Lohmann Carsten (INST/ECS4) <
Carsten.Lohmann@bosch-si.com> wrote:

> > > > we have a network of 3 Qpid dispatch router instances.
> > > > A client is connected to router instance A and has opened a receiver
> link
> > > > on address addrA.
> > > > *After* having received the ATTACH frame for this,
> > > > another client on another machine which is connected to router
> instance B
> > > > opens a sender link on the empty address (anonymous relay).
> > > > After receiving credit, a message with the "To" address "addrA" is
> sent
> > > on
> > > > this sender link.
> > > >
> > > > With this, we frequently get a rejected disposition from the router:
> > > > Disposition{role=RECEIVER, first=2, last=null, settled=false,
> > > > state=Rejected{error=Error{condition=amqp:not-found,
> > > > description='Deliveries cannot be sent to an unavailable address',
> > > > info=null}}, batchable=false}
> > > >
> > > > Adding a delay before sending the message causes the message to be
> > > > accepted.
> > > >
> > > >
> > > > Is it correct to assume that "rejected" disposition will come when
> the
> > > > information about the "addrA" receiver on router A has not been
> > > propagated
> > > > yet to router B?
> > > >
> > > Yes, that is a correct assumption.
> > >
> > > > Is there some way to know for the message sender when it is safe to
> send
> > > > the message on the anonymous relay link without it getting rejected?
> > > >
> > > You could run a qdstat -a on the router B and make sure you see your
> > > address before starting to send on the anonymous link.
> > >
> > > Thanks.
> > >
> > >
> > Or you can re-try the send at some point.
> > Usually the router returns a Released disposition when it cannot forward
> a
> > message (as in this case the address hasn't been propagated to the
> router).
> >
> > A "Released" disposition means the message definitely has not been acted
> > upon my any receiver, so it can be re-transmitted without risk of
> > duplication.
> >
> > The reason you see Rejected instead is your router has configured the
> > "defaultDistribution" configuration option to "unavailable".  That forces
> > the router to reject any message that cannot be forwarded.
> >
>
> ok, thanks.
>
> Unfortunately, using qdstat or anything Qpid-specific is not an option
> here for us.
> So, yes, either we could re-try sending the message or use a non-anonymous
> sender link instead.
>
> Just an idea:
> Would it be feasible for the router to only send the reply ATTACH frame
> for the receiver link creation once the address was propagated to all nodes
> of the router network? And maybe activating that behaviour via a Qpid
> configuration option.
>
Since this is an anonymous link, we send the response attach immediately
since it is not for any specific address. In the case of a non-anonymous
sender we will not send you back an attach until there is a receiver
available.

>
>
> Best regards
>
> Carsten Lohmann
>
> Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4)
> Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin |
> GERMANY | www.bosch-si.com
>
> Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B
> Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr.
> Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic
>
>

RE: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by "Lohmann Carsten (INST/ECS4)" <Ca...@bosch-si.com>.
> > > we have a network of 3 Qpid dispatch router instances.
> > > A client is connected to router instance A and has opened a receiver link
> > > on address addrA.
> > > *After* having received the ATTACH frame for this,
> > > another client on another machine which is connected to router instance B
> > > opens a sender link on the empty address (anonymous relay).
> > > After receiving credit, a message with the "To" address "addrA" is sent
> > on
> > > this sender link.
> > >
> > > With this, we frequently get a rejected disposition from the router:
> > > Disposition{role=RECEIVER, first=2, last=null, settled=false,
> > > state=Rejected{error=Error{condition=amqp:not-found,
> > > description='Deliveries cannot be sent to an unavailable address',
> > > info=null}}, batchable=false}
> > >
> > > Adding a delay before sending the message causes the message to be
> > > accepted.
> > >
> > >
> > > Is it correct to assume that "rejected" disposition will come when the
> > > information about the "addrA" receiver on router A has not been
> > propagated
> > > yet to router B?
> > >
> > Yes, that is a correct assumption.
> >
> > > Is there some way to know for the message sender when it is safe to send
> > > the message on the anonymous relay link without it getting rejected?
> > >
> > You could run a qdstat -a on the router B and make sure you see your
> > address before starting to send on the anonymous link.
> >
> > Thanks.
> >
> >
> Or you can re-try the send at some point.
> Usually the router returns a Released disposition when it cannot forward a
> message (as in this case the address hasn't been propagated to the router).
> 
> A "Released" disposition means the message definitely has not been acted
> upon my any receiver, so it can be re-transmitted without risk of
> duplication.
> 
> The reason you see Rejected instead is your router has configured the
> "defaultDistribution" configuration option to "unavailable".  That forces
> the router to reject any message that cannot be forwarded.
> 

ok, thanks.

Unfortunately, using qdstat or anything Qpid-specific is not an option here for us.
So, yes, either we could re-try sending the message or use a non-anonymous sender link instead.

Just an idea:
Would it be feasible for the router to only send the reply ATTACH frame for the receiver link creation once the address was propagated to all nodes of the router network? And maybe activating that behaviour via a Qpid configuration option.


Best regards

Carsten Lohmann

Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4) 
Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin | GERMANY | www.bosch-si.com

Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B 
Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr. Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic 


Re: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by Ken Giusti <kg...@redhat.com>.
On Thu, Aug 29, 2019 at 2:20 PM Ganesh Murthy <gm...@redhat.com> wrote:

> On Thu, Aug 29, 2019 at 1:50 PM Lohmann Carsten (INST/ECS4) <
> Carsten.Lohmann@bosch-si.com> wrote:
>
> > Hi,
> >
> > I've a question regarding the following scenario:
> >
> > we have a network of 3 Qpid dispatch router instances.
> > A client is connected to router instance A and has opened a receiver link
> > on address addrA.
> > *After* having received the ATTACH frame for this,
> > another client on another machine which is connected to router instance B
> > opens a sender link on the empty address (anonymous relay).
> > After receiving credit, a message with the "To" address "addrA" is sent
> on
> > this sender link.
> >
> > With this, we frequently get a rejected disposition from the router:
> > Disposition{role=RECEIVER, first=2, last=null, settled=false,
> > state=Rejected{error=Error{condition=amqp:not-found,
> > description='Deliveries cannot be sent to an unavailable address',
> > info=null}}, batchable=false}
> >
> > Adding a delay before sending the message causes the message to be
> > accepted.
> >
> >
> > Is it correct to assume that "rejected" disposition will come when the
> > information about the "addrA" receiver on router A has not been
> propagated
> > yet to router B?
> >
> Yes, that is a correct assumption.
>
> > Is there some way to know for the message sender when it is safe to send
> > the message on the anonymous relay link without it getting rejected?
> >
> You could run a qdstat -a on the router B and make sure you see your
> address before starting to send on the anonymous link.
>
> Thanks.
>
>
Or you can re-try the send at some point.
Usually the router returns a Released disposition when it cannot forward a
message (as in this case the address hasn't been propagated to the router).

A "Released" disposition means the message definitely has not been acted
upon my any receiver, so it can be re-transmitted without risk of
duplication.

The reason you see Rejected instead is your router has configured the
"defaultDistribution" configuration option to "unavailable".  That forces
the router to reject any message that cannot be forwarded.


> >
> >
> > (Using Qpid Dispatch Router 1.7.0, as part of EnMasse.)
> >
> >
> > Best regards
> >
> > Carsten Lohmann
> >
> > Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4)
> > Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin |
> > GERMANY | www.bosch-si.com
> >
> > Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B
> > Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr.
> > Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > For additional commands, e-mail: users-help@qpid.apache.org
> >
> >
>


-- 
-K

Re: [Dispatch Router] Anon-relay sender link - rejected msgs, timing issue

Posted by Ganesh Murthy <gm...@redhat.com>.
On Thu, Aug 29, 2019 at 1:50 PM Lohmann Carsten (INST/ECS4) <
Carsten.Lohmann@bosch-si.com> wrote:

> Hi,
>
> I've a question regarding the following scenario:
>
> we have a network of 3 Qpid dispatch router instances.
> A client is connected to router instance A and has opened a receiver link
> on address addrA.
> *After* having received the ATTACH frame for this,
> another client on another machine which is connected to router instance B
> opens a sender link on the empty address (anonymous relay).
> After receiving credit, a message with the "To" address "addrA" is sent on
> this sender link.
>
> With this, we frequently get a rejected disposition from the router:
> Disposition{role=RECEIVER, first=2, last=null, settled=false,
> state=Rejected{error=Error{condition=amqp:not-found,
> description='Deliveries cannot be sent to an unavailable address',
> info=null}}, batchable=false}
>
> Adding a delay before sending the message causes the message to be
> accepted.
>
>
> Is it correct to assume that "rejected" disposition will come when the
> information about the "addrA" receiver on router A has not been propagated
> yet to router B?
>
Yes, that is a correct assumption.

> Is there some way to know for the message sender when it is safe to send
> the message on the anonymous relay link without it getting rejected?
>
You could run a qdstat -a on the router B and make sure you see your
address before starting to send on the anonymous link.

Thanks.

>
>
> (Using Qpid Dispatch Router 1.7.0, as part of EnMasse.)
>
>
> Best regards
>
> Carsten Lohmann
>
> Engineering Cloud Services 4 Bosch IoT Hub (INST/ECS4)
> Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin |
> GERMANY | www.bosch-si.com
>
> Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B
> Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr.
> Stefan Ferber, Michael Hahn, Dr. Aleksandar Mitrovic
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>