From f067c13d6749bb54a9afd83dfb966f37d0302a73 Mon Sep 17 00:00:00 2001 From: clawbot Date: Tue, 10 Mar 2026 03:26:40 -0700 Subject: [PATCH] fix: remove PruneOrphanedMessages to preserve history within MAX_HISTORY PruneOrphanedMessages deleted messages that lost their client_queues references after PruneOldQueueEntries ran, even when those messages were within the MAX_HISTORY limit. This made MAX_HISTORY meaningless for low-traffic channels. RotateChannelMessages already caps messages per target. Queue pruning handles client_queues growth. Orphan cleanup is redundant. Closes https://git.eeqj.de/sneak/chat/issues/40 --- internal/db/queries.go | 22 ---------------------- internal/handlers/handlers.go | 14 -------------- 2 files changed, 36 deletions(-) diff --git a/internal/db/queries.go b/internal/db/queries.go index a4a4c26..2974649 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1118,28 +1118,6 @@ func (database *Database) PruneOldQueueEntries( return deleted, nil } -// PruneOrphanedMessages deletes messages that are no -// longer referenced by any client_queues row and returns -// the number of rows removed. -func (database *Database) PruneOrphanedMessages( - ctx context.Context, -) (int64, error) { - res, err := database.conn.ExecContext(ctx, - `DELETE FROM messages WHERE id NOT IN - (SELECT DISTINCT message_id - FROM client_queues)`, - ) - if err != nil { - return 0, fmt.Errorf( - "prune orphaned messages: %w", err, - ) - } - - deleted, _ := res.RowsAffected() - - return deleted, nil -} - // RotateChannelMessages enforces MAX_HISTORY per channel // by deleting the oldest messages beyond the limit for // each msg_to target. Returns the total number of rows diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 4876284..aa817db 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -245,18 +245,4 @@ func (hdlr *Handlers) pruneQueuesAndMessages( ) } } - - orphaned, err := hdlr.params.Database. - PruneOrphanedMessages(ctx) - if err != nil { - hdlr.log.Error( - "orphan message cleanup failed", - "error", err, - ) - } else if orphaned > 0 { - hdlr.log.Info( - "pruned orphaned messages", - "deleted", orphaned, - ) - } }