EMA TRCC disconnect handling

Hi,

I'm trying to understand how to handle disconnect/reconnect events in TRCC application. I have the following sequence of events and reaction of my application on them:

1. StatusMsg with state="Open / Suspect / None / 'channel down'" received on Login stream

2. StatusMsg with state="Open / Suspect / None / 'Channel is down.'" received on Login stream

3. StatusMsg with state="Closed, Recoverable / Suspect / None / 'Service for this item was lost.'" received on Tunnel stream

3. Application stops posting data

4. StatusMsg with state="Open / Ok / None / 'channel up'" received on Login stream

5. RefreshMsg with state="Open / Ok received on Login stream

5. Application sends and registers new Tunnel stream request

6. StatusMsg with state="Closed, Recoverable / Suspect / None / 'No matching service present.'" received on new Tunnel stream

7. Application is not connected and cannot post anything

So technically reconnection is successful on Login stream and API doesn't try to reconnect again. But tunnel stream is in "Closed, Recoverable" state and I cannot create new tunnel substream for data posting. What am I missing here? Should I unregister Tunnel stream and Tunnel substream upon receiving Open / Suspect on Login stream (although both these streams are closed as per EMA log...)?

Added EMA log: emalog.txt

Answers

  • Any thoughts on this? Maybe I received "Closed, Recoverable / Suspect" state on newly requested Tunnel stream because requested service was not up? Then what is recommended way to handle such case? I'm asking because it is not possible to reproduce this case on my side (it happened only once during 3 weeks of testing).

  • Ok, this is not some kind of special case. I tried to drop TCP connection with iptables and got exactly the same sequence of events:

    1. Connection is down

    2. Successful reconnect on Login stream with Refresh message

    3. New Tunnel stream requested

    4. "Closed, Recoverable / Suspect / None / 'No matching service present.'" state on newly created tunnel stream

    I can restore connection only with full application restart, is it expected behavior?

  • Hi @evgeniyk, I have asked the TRCC development to look into the issue and provide a resolution. I will let you know their findings.

  • Hello @Gurpreet.

    ESDK 1.3.0 just release this month. Do you have a Jira ID for this bug so I can check if it was fixed yet?

  • Hi @Wasin Waeosri I dont have the JIRA ID, but this bug was not fixed in the latest release. TRCC development team provided an alternate mechanism to work around it for now.

    EMA is responsible for sending a refresh message after a successful exchange of login and directory messages ( in that order ).

    It turns out that EMA sends a refresh message too early even before directory message is exchanged on a network reconnection.

  • Hello @Gurpreet

    I have checked Jira ESDK-2715, the issue is not fixed in latest ESDK (1.5.1) yet. The development team seems to expect the fix in RTSDK 2.0.1 L1.

  • Thanks Wasin.

  • Update Sept 2020:

    The bug is not fixed in the latest ESDK (1.5.1) yet. The development team expects it to be fixed in RTSDK 2.0.1 L1.