fix: OnStart ctx bug, rename session→user, full logout cleanup
All checks were successful
check / check (push) Successful in 1m57s
All checks were successful
check / check (push) Successful in 1m57s
- Use context.Background() for cleanup goroutine instead of OnStart ctx which is cancelled after startup completes - Rename GetSessionCount→GetUserCount, DeleteStaleSessions→ DeleteStaleUsers to reflect that sessions represent users - HandleLogout now fully cleans up when last client disconnects: parts all channels (notifying members via QUIT), removes empty channels, and deletes the session/user record - docker build passes, all tests green, 0 lint issues
This commit is contained in:
@@ -124,8 +124,16 @@ func (hdlr *Handlers) idleTimeout() time.Duration {
|
||||
return dur
|
||||
}
|
||||
|
||||
func (hdlr *Handlers) startCleanup(ctx context.Context) {
|
||||
cleanupCtx, cancel := context.WithCancel(ctx)
|
||||
// startCleanup launches the idle-user cleanup goroutine.
|
||||
// We use context.Background rather than the OnStart ctx
|
||||
// because the OnStart context is startup-scoped and would
|
||||
// cancel the goroutine once all start hooks complete.
|
||||
//
|
||||
//nolint:contextcheck // intentional Background ctx
|
||||
func (hdlr *Handlers) startCleanup(_ context.Context) {
|
||||
cleanupCtx, cancel := context.WithCancel(
|
||||
context.Background(),
|
||||
)
|
||||
hdlr.cancelCleanup = cancel
|
||||
|
||||
go hdlr.cleanupLoop(cleanupCtx)
|
||||
@@ -161,12 +169,12 @@ func (hdlr *Handlers) runCleanup(
|
||||
) {
|
||||
cutoff := time.Now().Add(-timeout)
|
||||
|
||||
deleted, err := hdlr.params.Database.DeleteStaleSessions(
|
||||
deleted, err := hdlr.params.Database.DeleteStaleUsers(
|
||||
ctx, cutoff,
|
||||
)
|
||||
if err != nil {
|
||||
hdlr.log.Error(
|
||||
"session cleanup failed", "error", err,
|
||||
"user cleanup failed", "error", err,
|
||||
)
|
||||
|
||||
return
|
||||
@@ -174,7 +182,7 @@ func (hdlr *Handlers) runCleanup(
|
||||
|
||||
if deleted > 0 {
|
||||
hdlr.log.Info(
|
||||
"cleaned up stale clients",
|
||||
"cleaned up stale users",
|
||||
"deleted", deleted,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user