fix(session-coordinator): 修复 FindExpired SQL 时区问题
- expires_at 存储为 UTC 时间 - 查询时使用 NOW() AT TIME ZONE 'UTC' 确保时区一致 - 避免因时区差异导致 session 过早被标记为过期 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e222279d77
commit
a22fc16313
|
|
@ -207,13 +207,14 @@ func (r *SessionPostgresRepo) FindByStatus(ctx context.Context, status value_obj
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindExpired retrieves all expired but not yet marked sessions
|
// FindExpired retrieves all expired but not yet marked sessions
|
||||||
|
// Note: expires_at is stored in UTC, so we compare with NOW() AT TIME ZONE 'UTC'
|
||||||
func (r *SessionPostgresRepo) FindExpired(ctx context.Context) ([]*entities.MPCSession, error) {
|
func (r *SessionPostgresRepo) FindExpired(ctx context.Context) ([]*entities.MPCSession, error) {
|
||||||
rows, err := r.db.QueryContext(ctx, `
|
rows, err := r.db.QueryContext(ctx, `
|
||||||
SELECT id, session_type, threshold_n, threshold_t, status,
|
SELECT id, session_type, threshold_n, threshold_t, status,
|
||||||
message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version,
|
message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version,
|
||||||
COALESCE(wallet_name, ''), COALESCE(invite_code, '')
|
COALESCE(wallet_name, ''), COALESCE(invite_code, '')
|
||||||
FROM mpc_sessions
|
FROM mpc_sessions
|
||||||
WHERE expires_at < NOW() AND status IN ('created', 'in_progress')
|
WHERE expires_at < (NOW() AT TIME ZONE 'UTC') AND status IN ('created', 'in_progress')
|
||||||
`)
|
`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue