From 4a8c0d2e605558c9e3d0942cb2bdcf0285f79996 Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Fri, 17 Apr 2026 18:00:26 +0000 Subject: [PATCH] defer rollback rather than guard returns I'm trying to make sure we close transactions on the database --- platform/start.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/platform/start.go b/platform/start.go index bae83f76..112ef912 100644 --- a/platform/start.go +++ b/platform/start.go @@ -183,27 +183,26 @@ func listenAndDoOneJob(ctx context.Context) error { } sublog := log.With().Int32("job", job.ID).Int32("row_id", job.RowID).Str("type", string(job.Type)).Logger() - //tx, err := c.BeginTx(ctx, pgx.TxOptions{}) tx, err := conn.BeginTx(ctx, pgx.TxOptions{}) if err != nil { return fmt.Errorf("Failed to start transaction: %w", err) } + defer tx.Rollback(ctx) ctx, cancel := context.WithCancel(ctx) txn := bobpgx.NewTx(tx, cancel) + defer txn.Rollback(ctx) err = handleJob(ctx, txn, job) if err != nil { sublog.Error().Err(err).Msg("failed to handle job") - txn.Rollback(ctx) return nil } err = job.Delete(ctx, txn) if err != nil { sublog.Error().Err(err).Msg("failed to delete job") - txn.Rollback(ctx) return fmt.Errorf("delete job: %w", err) } txn.Commit(ctx) - //sublog.Debug().Msg("job complete") + sublog.Debug().Msg("job complete") } }