You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are two distinct but related issues with our MRP timeout and retry interval computation logic:
When we compute the logical timeout at which we think the exchange should timeout, it is computed from Session::GetAckTimeout. The two implementations present today for those do not take exponential back-off into account:
This results in the exchange timing out way too early (in most cases, before the last re-transmission can be sent out).
GetMRPBaseTimeout doesn't correctly line up with the spec in terms of how it deduces if the other side is 'active'. The spec denotes that the presence of non-zero exchanges to the peer:
A Node determines whether it is in Active or Idle mode based on whether it has any outstanding Exchanges in the Message Layer.
In the impl however, it just assumes its active based on received traffic from the peer in the last 4s. This creates situations where a client that talks to a sleepy device can create an exchange that selects the active interval re-transmission even though the target is still sleeping and needs to be communicated with the IDLE interval.
The text was updated successfully, but these errors were encountered:
There are two distinct but related issues with our MRP timeout and retry interval computation logic:
Session::GetAckTimeout
. The two implementations present today for those do not take exponential back-off into account:This results in the exchange timing out way too early (in most cases, before the last re-transmission can be sent out).
GetMRPBaseTimeout
doesn't correctly line up with the spec in terms of how it deduces if the other side is 'active'. The spec denotes that the presence of non-zero exchanges to the peer:In the impl however, it just assumes its active based on received traffic from the peer in the last 4s. This creates situations where a client that talks to a sleepy device can create an exchange that selects the active interval re-transmission even though the target is still sleeping and needs to be communicated with the IDLE interval.
The text was updated successfully, but these errors were encountered: