-
Notifications
You must be signed in to change notification settings - Fork 604
MessageRequest callbacks never triggered if disconnected #21
Comments
Hello jshlt, |
Hello again jshlt,
Please let us know if this resolves the issue for you, |
Hello jshslt, Sadly, I have to report that I am able to reproduce the problem you describe both with and without the change I suggested above. Digging in to this it looks like there may be multiple problems. One of these is that AVSConnectionManager::send() / MessageRequest level there is no interface for specifying a timeout for sending a message. Since AVSConnectionManager handles reconnecting to AVS internally, MessageRequests will only very rarely receive onSendCompleted() with the NOT_CONNECTED status. Instead they are left in limbo indefinitely, as you have observed. We are actively working on this and will let you know when we have a fix. Thank you again for bringing this to our attention! |
@scotthea-amazon - thanks - just wanted to check in and see if you might know an ETA on a fix for this? |
@jshlt - No ETA at the moment. We will let you know as soon as we have something available. |
Changes in this update - Added a getConfiguration() method to DirectiveHandlerInterface to register Capability Agents with Directive Sequencer. - Fix race condition with reading attachments before a writer exists. - Use of new Logging abstraction layer in modules - ADSL,AFML,ContextManager,AuthDelegate,AIP,KWD,Mediaplayer. - Added ACL stream processing with Pause and redrive. - Removed the dependency of ACL Library on Authdelegate. - Added and interface to allow ACL to Add/Remove ConnectionStatusObserverInterface. - Fixed compile errors in KittAi, DirectiveHandler and compiler warnings in AIP test. - Corrected formatting on the files. - Fixes for the following Github issues - #21 - #25
Hello jshlt, Changes were pushed in the 0.5 release that address most of the points you raised in this issue. The primary change are:
An outstanding issue is that detection of the disconnected state can be quite slow. libcurl does not immediately detect an unconnected network cable and a request will not fail until the operation has timed out. This is discussed in more detail on the libcurl website here. Please let us know how this update works for you, |
Closing the issue for now. Please re-open if the problem still exists. |
xmos v1.13
Hi,
We've found that the curl multi interface with easy handles that HTTP2Transport uses is very "durable" - that is, disconnection of the underlying sockets don't appear to be readily raised to the SDK's level.
example -
with an active AVS session, disconnecting the network interface does not raise to a connection status change, at the SDK level. the connection is quietly restored when the network interface is restored.
We find this to be a problem, in particular, when sending events through MessageRouter::send - if the underlying transport is disconnected, we never get onSendCompleted/onExceptionReceived callbacks for the MessageRequest object.
furthermore - If the connection is restored, MessageRequests that were waiting on the old transport are lost (without callback).
Our suggestion is that HTTP2Transport::networkLoop might need some more explicit checking of connection status, as well as timeouts for outgoing messages.
Thanks
The text was updated successfully, but these errors were encountered: