Skip to content

fix: harden session restore against malformed persisted JSON (fixes #304)#305

Open
Flamki wants to merge 1 commit intojenkinsci:mainfrom
Flamki:fix/sessionmanager-corrupt-json
Open

fix: harden session restore against malformed persisted JSON (fixes #304)#305
Flamki wants to merge 1 commit intojenkinsci:mainfrom
Flamki:fix/sessionmanager-corrupt-json

Conversation

@Flamki
Copy link
Copy Markdown
Contributor

@Flamki Flamki commented Mar 23, 2026

Fixes #304.

This change makes session restore more resilient when a persisted session file is corrupted.

What was happening

load_session() read JSON directly from disk. If one session file was malformed (for example truncated JSON), restore could fail on that file and affect startup/session reload flow.

What this PR changes

  • In chatbot-core/api/services/sessionmanager.py:
    • Guarded JSON load in _load_session_from_json().
    • If file read fails (OSError) or JSON is invalid (JSONDecodeError), we now log a warning and return [].
    • If payload shape is not a list, we log a warning and return [].
  • In chatbot-core/tests/unit/services/test_sessionmanager.py:
    • Added tests for malformed JSON fallback.
    • Added tests for non-list payload fallback.
    • Added test to ensure reload_persisted_sessions() restores valid files and skips malformed ones.

Scope

Session persistence robustness only. No change to reply generation or endpoint contracts.

Verification

  • pytest chatbot-core/tests/unit/services/test_sessionmanager.py -q
  • pytest chatbot-core/tests/unit/services/test_memory.py -q
  • pylint chatbot-core/api/services/sessionmanager.py chatbot-core/tests/unit/services/test_sessionmanager.py

@Flamki Flamki requested a review from a team as a code owner March 23, 2026 07:10
@berviantoleo berviantoleo added bug For changelog: Minor bug. Will be listed after features enhancement For changelog: Minor enhancement. use `major-rfe` for changes to be highlighted and removed bug For changelog: Minor bug. Will be listed after features labels Mar 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement For changelog: Minor enhancement. use `major-rfe` for changes to be highlighted

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Corrupted persisted session JSON can break session restore on startup

2 participants