ably/ably-java

Presence data is overwritten on reconnection

davyskiba opened this issue · 1 comments

When updating presence data in response to connection state change, PRESENCE_ENTER message is sent with an updated data and followed by UPDATE message with previous value.

This issue was found when working on AAT Subscriber faultWhilstTracking NetworkConnectivityTest for TcpConnectionUnresponsive fault, implemented with this PR. To observe the issue remove the delay in ChangeResolutionWorker. Internal slack discussion can be found in this thread.

Redacted logs from the test:

03-29 11:53:29.317 2065 2131 D PUBLISHING SDK IT: 1741: [DefaultAbly] Entering presence data with data PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=BALANCED, desiredInterval=1, minimumDisplacement=0.0), rawLocations=null)
03-29 11:53:29.401 2065 2116 D PUBLISHING SDK IT: 1737: got presence message: PresenceMessage(action=PRESENT_OR_ENTER, data=PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=BALANCED, desiredInterval=1, minimumDisplacement=0.0), rawLocations=null), memberKey=JpIg10Jkns:AatNetworkConnectivityTests_Subscriber)
03-29 11:53:30.567 2065 2131 D PUBLISHING SDK IT: 1741: [DefaultAbly] Updating presence data with data PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=MAXIMUM, desiredInterval=2, minimumDisplacement=0.0), rawLocations=null)
03-29 11:54:13.901 2065 2138 D PUBLISHING SDK IT: 1748: got presence message: PresenceMessage(action=LEAVE_OR_ABSENT, data=PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=BALANCED, desiredInterval=1, minimumDisplacement=0.0), rawLocations=null), memberKey=JpIg10Jkns:AatNetworkConnectivityTests_Subscriber)
03-29 11:55:29.032 2065 2131 D PUBLISHING SDK IT: 1741: [DefaultAbly] Updating presence data with data PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=MAXIMUM, desiredInterval=2, minimumDisplacement=0.0), rawLocations=null)
03-29 11:56:29.406 2065 2131 D PUBLISHING SDK IT: 1741: [DefaultAbly] Updating presence data with data PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=MAXIMUM, desiredInterval=2, minimumDisplacement=0.0), rawLocations=null)
03-29 11:56:29.449 2065 2138 D PUBLISHING SDK IT: 1748: got presence message: PresenceMessage(action=PRESENT_OR_ENTER, data=PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=MAXIMUM, desiredInterval=2, minimumDisplacement=0.0), rawLocations=null), memberKey=Gm3h3GtEUC:AatNetworkConnectivityTests_Subscriber)
03-29 11:56:29.478 2065 2138 D PUBLISHING SDK IT: 1748: got presence message: PresenceMessage(action=UPDATE, data=PresenceData(type=SUBSCRIBER, resolution=Resolution(accuracy=BALANCED, desiredInterval=1, minimumDisplacement=0.0), rawLocations=null), memberKey=Gm3h3GtEUC:AatNetworkConnectivityTests_Subscriber)

➤ Automation for Jira commented:

The link to the corresponding Jira issue is https://ably.atlassian.net/browse/SDK-3484