Skip to content

Drill 13 — Scheduled session reset and session windows #6

Description

@sylvioCampos

Every config in this lab sets NonStopSession=Y with StartTime equal to EndTime, and config/exchange.cfg says why: "the session never rolls, so a drill is never interrupted by a scheduled reset."

That is correct for the drills and wrong for reality, and the repo admits it twice without ever showing it:

  • docs/drills/06-seqnum-persistence.md: "B3 resets drop-copy sequence numbers on its own schedule, several times a week. ResetOnLogon=N is correct within a session's life, not across a scheduled reset — you have to know the venue's calendar."
  • docs/drills/07-gap-and-resend.md repeats the same caveat.

So a reader finishes drill 06 believing ResetOnLogon=N is simply the right answer, and it is only right between resets. On the wrong morning that belief produces a client stuck demanding a resend of messages that no longer exist on a counter that has already gone back to 1.

What the drill should teach

  • StartTime / EndTime / NonStopSession and what the engine actually does at a boundary
  • The sequence numbers resetting at a scheduled rollover, and both sides agreeing about it
  • The failure: reconnecting across a boundary with a stale expectation, and what that looks like on the wire — which is not the clean gap of drill 07
  • Why ResetOnLogon is a per-connect decision informed by a calendar, not a value you set once

Implementation sketch

The drills need this to happen on demand rather than at 23:00, so: POST /admin/roll forcing the venue through a scheduled reset, plus a config profile using real StartTime/EndTime so the reader can see the settings that drive it.

Acceptance

  • docs/drills/13-session-schedule.md
  • A test covering a clean rollover and a client reconnecting with a stale expectation
  • Drills 06 and 07 updated to link here instead of leaving the caveat dangling

Metadata

Metadata

Assignees

No one assigned

    Labels

    drillA new or extended teaching drill

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions