MM-63545: Fix post reminder off-by-one error (#30553)

We used < which meant we missed sending
reminders created for that timestamp, because
the job runs on that exact time.

Using <= to fix that.

https://mattermost.atlassian.net/browse/MM-63545
```release-note
NONE
```
This commit is contained in:
Agniva De Sarker 2025-03-25 11:09:42 +05:30 committed by GitHub
parent 26892de25b
commit 8faa8b2e56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 4 deletions

View file

@ -3338,7 +3338,7 @@ func (s *SqlPostStore) GetPostReminders(now int64) (_ []*model.PostReminder, err
err = transaction.Select(&reminders, `SELECT PostId, UserId
FROM PostReminders
WHERE TargetTime < ?`, now)
WHERE TargetTime <= ?`, now)
if err != nil && err != sql.ErrNoRows {
return nil, errors.Wrap(err, "failed to get post reminders")
}
@ -3351,7 +3351,7 @@ func (s *SqlPostStore) GetPostReminders(now int64) (_ []*model.PostReminder, err
// Postgres supports RETURNING * in a DELETE statement, but MySQL doesn't.
// So we are stuck with 2 queries. Not taking separate paths for Postgres
// and MySQL for simplicity.
_, err = transaction.Exec(`DELETE from PostReminders WHERE TargetTime < ?`, now)
_, err = transaction.Exec(`DELETE from PostReminders WHERE TargetTime <= ?`, now)
if err != nil {
return nil, errors.Wrap(err, "failed to delete post reminders")
}

View file

@ -5062,12 +5062,12 @@ func testGetPostReminders(t *testing.T, rctx request.CTX, ss store.Store, s SqlS
require.NoError(t, ss.Post().SetPostReminder(reminder))
}
reminders, err := ss.Post().GetPostReminders(102)
reminders, err := ss.Post().GetPostReminders(101)
require.NoError(t, err)
require.Len(t, reminders, 2)
// assert one reminder is left
reminders, err = ss.Post().GetPostReminders(103)
reminders, err = ss.Post().GetPostReminders(102)
require.NoError(t, err)
require.Len(t, reminders, 1)