From 13a3062a7f388a43400523ce9bfccfbfac8cb95f Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Fri, 20 Feb 2026 16:15:07 -0500 Subject: [PATCH] Re-add comments --- message/store.go | 5 ++++- message/store_sqlite.go | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/message/store.go b/message/store.go index 1351b823..ed6168fd 100644 --- a/message/store.go +++ b/message/store.go @@ -98,6 +98,7 @@ func newCommonStore(db *sql.DB, queries storeQueries, batchSize int, batchTimeou } // AddMessage stores a message to the message cache synchronously, or queues it to be stored at a later date asynchronously. +// The message is queued only if "batchSize" or "batchTimeout" are passed to the constructor. func (c *commonStore) AddMessage(m *model.Message) error { if c.queue != nil { c.queue.Enqueue(m) @@ -376,6 +377,7 @@ func (c *commonStore) DeleteScheduledBySequenceID(topic, sequenceID string) ([]s return nil, err } defer tx.Rollback() + // First, get the message IDs of scheduled messages to be deleted rows, err := tx.Query(c.queries.selectScheduledMessageIDsBySeqID, topic, sequenceID) if err != nil { return nil, err @@ -392,7 +394,8 @@ func (c *commonStore) DeleteScheduledBySequenceID(topic, sequenceID string) ([]s if err := rows.Err(); err != nil { return nil, err } - rows.Close() + rows.Close() // Close rows before executing delete in same transaction + // Then delete the messages if _, err := tx.Exec(c.queries.deleteScheduledBySequenceID, topic, sequenceID); err != nil { return nil, err } diff --git a/message/store_sqlite.go b/message/store_sqlite.go index 566682b1..ebccd468 100644 --- a/message/store_sqlite.go +++ b/message/store_sqlite.go @@ -135,6 +135,11 @@ func NewNopStore() (Store, error) { } // createMemoryFilename creates a unique memory filename to use for the SQLite backend. +// From mattn/go-sqlite3: "Each connection to ":memory:" opens a brand new in-memory +// sql database, so if the stdlib's sql engine happens to open another connection and +// you've only specified ":memory:", that connection will see a brand new database. +// A workaround is to use "file::memory:?cache=shared" (or "file:foobar?mode=memory&cache=shared"). +// Every connection to this string will point to the same in-memory database." func createMemoryFilename() string { return fmt.Sprintf("file:%s?mode=memory&cache=shared", util.RandomString(10)) }