Skip to content

Enabling a previously disabled session might lead to message loss #965

Description

@chrjohn

Describe the bug
When a session is disabled (i.e. after calling logout()) it will no longer get reset as defined by its SessionSchedule. This is because next() returns early when a session is disabled:

public void next() throws IOException {
if (!isEnabled()) {
if (isLoggedOn()) {
if (!state.isLogoutSent()) {
getLog().onEvent("Initiated logout request");
generateLogout(state.getLogoutReason());
}
} else {
return;
}
}

To Reproduce

Will try to create a unit test in due course.

Manual steps:

  • have a session that is disabled and has not been used at the current day (i.e. there was no established session for that day)
  • send messages to that Session via sendToTarget() - the messages will end up in the Session's message store.
  • establish a connection to the session
  • based on QFJ's internal timer, the next() method will be called within a second and a reset will be done, effectively removing the Sessions's message store

Expected behavior

Session should get reset based on its schedule even when it is disabled.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions