Reactor receiver stuck when transport is broken

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Reactor receiver stuck when transport is broken

Garlapati Sreeram Kumar
Hello folks!

We have a client with 1 Connection with 1 ReceiveLink running in 1 Thread where it prints when ever onDelivery() handler is invoked.
Receiver sends flow for every 100 messages and Connection IdleTimeout on the Service is 4 mins.

In some cases where there are transport issues – we noticed that neither onDelivery(event) nor onTransportError() are raised.
The receiver is stuck forever. Even the idleTimeout empty frame is logged as written but, it is not detecting that the transport is broken. When we workarounded this stuck receiver with creating another brand-new receiveLink on the same Connection – we then see onTransportError() event.
Is anyone experiencing this issue? Do, I have to actually listen for any other Transport events? Help is much appreciated…

Thanks a lot for your Time!
Sreeram

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Reactor receiver stuck when transport is broken

Garlapati Sreeram Kumar
Hello Folks!

Any help is much appreciated….

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10

From: Garlapati Sreeram Kumar<mailto:[hidden email]>
Sent: Monday, July 10, 2017 5:09 PM
To: [hidden email] <mailto:[hidden email]>
Subject: Reactor receiver stuck when transport is broken

Hello folks!

We have a client with 1 Connection with 1 ReceiveLink running in 1 Thread where it prints when ever onDelivery() handler is invoked.
Receiver sends flow for every 100 messages and Connection IdleTimeout on the Service is 4 mins.

In some cases where there are transport issues – we noticed that neither onDelivery(event) nor onTransportError() are raised.
The receiver is stuck forever. Even the idleTimeout empty frame is logged as written but, it is not detecting that the transport is broken. When we workarounded this stuck receiver with creating another brand-new receiveLink on the same Connection – we then see onTransportError() event.
Is anyone experiencing this issue? Do, I have to actually listen for any other Transport events? Help is much appreciated…

Thanks a lot for your Time!
Sreeram

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Reactor receiver stuck when transport is broken

Adel Boutros
Hello,


I imagine you are talking about Qpid Proton's reactor?

If that is the case, have you implemented the "onError" as well? Some errors go there.

Also, the reactor will always be running until you close the connection in one of the callbacks; are you doing so?

void on_transport_error(proton::transport &t) {
        t.connection().close();
}


Regards,
Adel

________________________________
From: Garlapati Sreeram Kumar <[hidden email]>
Sent: Friday, July 14, 2017 6:39 PM
To: [hidden email]
Subject: RE: Reactor receiver stuck when transport is broken

Hello Folks!

Any help is much appreciated….

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
[http://www.microsoft.com/en-us/outlook-com/img/Outlook_Facebook_Icon-2927f4df28.jpg]<https://go.microsoft.com/fwlink/?LinkId=550986>

Check out Outlook.com – free, personal email from Microsoft.<https://go.microsoft.com/fwlink/?LinkId=550986>
go.microsoft.com
Find the right Outlook for you. Get the optimum email experience across all your devices




From: Garlapati Sreeram Kumar<mailto:[hidden email]>
Sent: Monday, July 10, 2017 5:09 PM
To: [hidden email] <mailto:[hidden email]>
Subject: Reactor receiver stuck when transport is broken

Hello folks!

We have a client with 1 Connection with 1 ReceiveLink running in 1 Thread where it prints when ever onDelivery() handler is invoked.
Receiver sends flow for every 100 messages and Connection IdleTimeout on the Service is 4 mins.

In some cases where there are transport issues – we noticed that neither onDelivery(event) nor onTransportError() are raised.
The receiver is stuck forever. Even the idleTimeout empty frame is logged as written but, it is not detecting that the transport is broken. When we workarounded this stuck receiver with creating another brand-new receiveLink on the same Connection – we then see onTransportError() event.
Is anyone experiencing this issue? Do, I have to actually listen for any other Transport events? Help is much appreciated…

Thanks a lot for your Time!
Sreeram

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Reactor receiver stuck when transport is broken

Garlapati Sreeram Kumar
That’s right – my query is about Qpid Proton Reactor.

I did implement onTransportError() – I believe, the problem is – when the transport is half-closed – onTransportError() handler is not being invoked by reactor for >15mins on that receiver.

  *   Ideally, idle-timer should have attempted to write to the Socket and closed this – I am wondering if there is any reason this could not be detected.

Thanks a lot for the Response @Adel Boutros<mailto:[hidden email]>!
Sreeram


From: Adel Boutros<mailto:[hidden email]>
Sent: Friday, July 14, 2017 11:31 AM
To: [hidden email] <mailto:[hidden email]>
Subject: Re: Reactor receiver stuck when transport is broken

Hello,


I imagine you are talking about Qpid Proton's reactor?

If that is the case, have you implemented the "onError" as well? Some errors go there.

Also, the reactor will always be running until you close the connection in one of the callbacks; are you doing so?

void on_transport_error(proton::transport &t) {
        t.connection().close();
}


Regards,
Adel

________________________________
From: Garlapati Sreeram Kumar <[hidden email]>
Sent: Friday, July 14, 2017 6:39 PM
To: [hidden email]
Subject: RE: Reactor receiver stuck when transport is broken

Hello Folks!

Any help is much appreciated….

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
[http://www.microsoft.com/en-us/outlook-com/img/Outlook_Facebook_Icon-2927f4df28.jpg]<https://go.microsoft.com/fwlink/?LinkId=550986<http://www.microsoft.com/en-us/outlook-com/img/Outlook_Facebook_Icon-2927f4df28.jpg%5d%3chttps:/go.microsoft.com/fwlink/?LinkId=550986>>

Check out Outlook.com – free, personal email from Microsoft.<https://go.microsoft.com/fwlink/?LinkId=550986>
go.microsoft.com
Find the right Outlook for you. Get the optimum email experience across all your devices




From: Garlapati Sreeram Kumar<mailto:[hidden email]>
Sent: Monday, July 10, 2017 5:09 PM
To: [hidden email] <mailto:[hidden email]>
Subject: Reactor receiver stuck when transport is broken

Hello folks!

We have a client with 1 Connection with 1 ReceiveLink running in 1 Thread where it prints when ever onDelivery() handler is invoked.
Receiver sends flow for every 100 messages and Connection IdleTimeout on the Service is 4 mins.

In some cases where there are transport issues – we noticed that neither onDelivery(event) nor onTransportError() are raised.
The receiver is stuck forever. Even the idleTimeout empty frame is logged as written but, it is not detecting that the transport is broken. When we workarounded this stuck receiver with creating another brand-new receiveLink on the same Connection – we then see onTransportError() event.
Is anyone experiencing this issue? Do, I have to actually listen for any other Transport events? Help is much appreciated…

Thanks a lot for your Time!
Sreeram

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10


Loading...