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

>
>
> On Thu, Aug 29, 2019 at 3:48 PM Lohmann Carsten (INST/ECS4) <
> carsten.lohm...@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
>>
>>

Reply via email to