From 386356dafb17dff2a5266d77a606077d1b604f21 Mon Sep 17 00:00:00 2001 From: Arkadiusz Osowski Date: Tue, 17 Sep 2024 13:39:28 +0200 Subject: [PATCH] ARCO-156: correctly release db resources --- .../blocktx/store/postgresql/get_block_gaps.go | 2 ++ .../store/postgresql/get_mined_transactions.go | 1 + internal/blocktx/store/postgresql/postgres.go | 4 ++-- .../store/postgresql/register_transactions.go | 1 + .../store/postgresql/set_block_processing.go | 1 + .../store/postgresql/upsert_block_transactions.go | 1 + internal/metamorph/store/postgresql/postgres.go | 14 +++++++++----- 7 files changed, 17 insertions(+), 7 deletions(-) diff --git a/internal/blocktx/store/postgresql/get_block_gaps.go b/internal/blocktx/store/postgresql/get_block_gaps.go index f4c53822b..d351682ae 100644 --- a/internal/blocktx/store/postgresql/get_block_gaps.go +++ b/internal/blocktx/store/postgresql/get_block_gaps.go @@ -33,6 +33,8 @@ func (p *PostgreSQL) GetBlockGaps(ctx context.Context, blockHeightRange int) ([] if err != nil { return nil, err } + defer rows.Close() + blockGaps := make([]*store.BlockGap, 0) for rows.Next() { var height uint64 diff --git a/internal/blocktx/store/postgresql/get_mined_transactions.go b/internal/blocktx/store/postgresql/get_mined_transactions.go index 371f48d64..3852d08d3 100644 --- a/internal/blocktx/store/postgresql/get_mined_transactions.go +++ b/internal/blocktx/store/postgresql/get_mined_transactions.go @@ -39,6 +39,7 @@ func (p *PostgreSQL) GetMinedTransactions(ctx context.Context, hashes []*chainha if err != nil { return nil, err } + defer rows.Close() for rows.Next() { var txHash []byte diff --git a/internal/blocktx/store/postgresql/postgres.go b/internal/blocktx/store/postgresql/postgres.go index 6acd57186..21edefba0 100644 --- a/internal/blocktx/store/postgresql/postgres.go +++ b/internal/blocktx/store/postgresql/postgres.go @@ -66,10 +66,10 @@ func (p *PostgreSQL) Close() error { } func (p *PostgreSQL) Ping(ctx context.Context) error { - _, err := p.db.QueryContext(ctx, "SELECT 1;") + r, err := p.db.QueryContext(ctx, "SELECT 1;") if err != nil { return err } - return nil + return r.Close() } diff --git a/internal/blocktx/store/postgresql/register_transactions.go b/internal/blocktx/store/postgresql/register_transactions.go index a74531c72..40cb40b53 100644 --- a/internal/blocktx/store/postgresql/register_transactions.go +++ b/internal/blocktx/store/postgresql/register_transactions.go @@ -30,6 +30,7 @@ func (p *PostgreSQL) RegisterTransactions(ctx context.Context, transactions []*b if err != nil { return nil, fmt.Errorf("failed to bulk insert transactions: %v", err) } + defer rows.Close() updatedTxs := make([]*chainhash.Hash, 0) for rows.Next() { diff --git a/internal/blocktx/store/postgresql/set_block_processing.go b/internal/blocktx/store/postgresql/set_block_processing.go index 11179c8ec..4f7208edd 100644 --- a/internal/blocktx/store/postgresql/set_block_processing.go +++ b/internal/blocktx/store/postgresql/set_block_processing.go @@ -73,6 +73,7 @@ func (p *PostgreSQL) GetBlockHashesProcessingInProgress(ctx context.Context, pro if err != nil { return nil, err } + defer rows.Close() hashes := make([]*chainhash.Hash, 0) diff --git a/internal/blocktx/store/postgresql/upsert_block_transactions.go b/internal/blocktx/store/postgresql/upsert_block_transactions.go index 818820548..9ab72a50a 100644 --- a/internal/blocktx/store/postgresql/upsert_block_transactions.go +++ b/internal/blocktx/store/postgresql/upsert_block_transactions.go @@ -42,6 +42,7 @@ func (p *PostgreSQL) UpsertBlockTransactions(ctx context.Context, blockId uint64 if err != nil { return nil, fmt.Errorf("failed to execute transaction update query: %v", err) } + defer rows.Close() txIDs := make([]uint64, 0) blockIDs := make([]uint64, 0) diff --git a/internal/metamorph/store/postgresql/postgres.go b/internal/metamorph/store/postgresql/postgres.go index 8f0d92fce..626a841b8 100644 --- a/internal/metamorph/store/postgresql/postgres.go +++ b/internal/metamorph/store/postgresql/postgres.go @@ -549,13 +549,14 @@ func (p *PostgreSQL) GetSeenOnNetwork(ctx context.Context, since time.Time, unti } res, err := getStoreDataFromRows(rows) + _ = rows.Close() + if err != nil { if rollBackErr := tx.Rollback(); rollBackErr != nil { return nil, errors.Join(err, fmt.Errorf("failed to rollback: %v", rollBackErr)) } return nil, err } - defer rows.Close() err = tx.Commit() if err != nil { @@ -636,9 +637,10 @@ func (p *PostgreSQL) UpdateStatusBulk(ctx context.Context, updates []store.Updat } return nil, err } - defer rows.Close() res, err := getStoreDataFromRows(rows) + _ = rows.Close() + if err != nil { if rollBackErr := tx.Rollback(); rollBackErr != nil { return nil, errors.Join(err, fmt.Errorf("failed to rollback: %v", rollBackErr)) @@ -711,9 +713,9 @@ func (p *PostgreSQL) UpdateDoubleSpend(ctx context.Context, updates []store.Upda } return nil, err } - defer rows.Close() competingTxsData := getCompetingTxsFromRows(rows) + _ = rows.Close() statuses := make([]metamorph_api.Status, len(updates)) competingTxs := make([]string, len(updates)) @@ -742,9 +744,9 @@ func (p *PostgreSQL) UpdateDoubleSpend(ctx context.Context, updates []store.Upda } return nil, err } - defer rows.Close() res, err := getStoreDataFromRows(rows) + _ = rows.Close() if err != nil { if rollbackErr := tx.Rollback(); rollbackErr != nil { return nil, errors.Join(err, fmt.Errorf("failed to rollback: %v", rollbackErr)) @@ -830,6 +832,7 @@ func (p *PostgreSQL) UpdateMined(ctx context.Context, txsBlocks []*blocktx_api.T } rejectedResponses := updateDoubleSpendRejected(ctx, rows, tx) + _ = rows.Close() rows, err = tx.QueryContext(ctx, qBulkUpdate, metamorph_api.Status_MINED, p.now(), pq.Array(txHashes), pq.Array(blockHashes), pq.Array(blockHeights), pq.Array(merklePaths)) if err != nil { @@ -838,9 +841,10 @@ func (p *PostgreSQL) UpdateMined(ctx context.Context, txsBlocks []*blocktx_api.T } return nil, err } - defer rows.Close() res, err := getStoreDataFromRows(rows) + _ = rows.Close() + if err != nil { if rollBackErr := tx.Rollback(); rollBackErr != nil { return nil, errors.Join(err, fmt.Errorf("failed to rollback: %v", rollBackErr))