Skip to content

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

@chrjohn

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.

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