Skip to content

P36.7#17

Merged
Sellafield merged 5 commits into
developfrom
p36.7
Jun 19, 2026
Merged

P36.7#17
Sellafield merged 5 commits into
developfrom
p36.7

Conversation

@Sellafield

Copy link
Copy Markdown
Contributor

No description provided.

Sellafield and others added 5 commits June 18, 2026 11:36
GetActiveSeason() now filters AND start_time <= GETUTCDATE() so a future-dated
active season is invisible until its scheduled start. Defence-in-depth backstops
added in RefreshCache(), RecordActivity(), and OnCharacterLogin() to guard
StartTime alongside the existing EndTime checks.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…uard mark-delivered on reward failure

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
A DB error during one player's delivery (e.g. failed INSERT) would abort
the loop and silently skip all subsequent players. Wrap the per-player
block in both ProcessSeasonEnd and RedeliverLeaderboardRewards with a
try/catch so a single failure is logged and the loop continues.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…cycle

GetPendingRecurringSeason lacked an end_time guard, so the already-ended
previous season matched the query after deactivation (is_active=0,
is_recurring=1, start_time<=now). RefreshCache reactivated it every 5 min,
ProcessSeasonEnd ran again, and another clone was created indefinitely.

Fix: add AND end_time > GETUTCDATE() to the query so ended seasons are never
treated as pending. Add HasFutureClone() as defence-in-depth guard in
ProcessSeasonEnd so no second clone is created even if the method fires twice.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@Sellafield Sellafield merged commit b8d2ec2 into develop Jun 19, 2026
3 checks passed
@Sellafield Sellafield deleted the p36.7 branch June 19, 2026 05:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant