Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add prometheus metrics for monitoring #110

Merged
merged 46 commits into from
Mar 10, 2025
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f84b232
Initialise a common prometheus metrics registry for API and Ingest
aditya1702 Jan 14, 2025
36359c0
Start /metrics server
aditya1702 Jan 14, 2025
7260e67
Start a separate ingest prometheus server
aditya1702 Jan 14, 2025
aa8780f
Add db metrics to ingest and api prom registry
aditya1702 Jan 15, 2025
908fd94
Merge branch 'main' into add-prometheus
aditya1702 Jan 15, 2025
29946f4
Add new metrics to ingest service
aditya1702 Jan 17, 2025
4294b13
Add ingestion metrics - 1
aditya1702 Jan 24, 2025
a58da1a
register db metrics in separate function
aditya1702 Jan 31, 2025
af099e9
Merge remote-tracking branch 'upstream/main' into add-prometheus
aditya1702 Feb 3, 2025
6737111
Move metrics calculation to MetricsService
aditya1702 Feb 3, 2025
1b5d0db
Add account level metrics
aditya1702 Feb 3, 2025
cab649d
Use summary vec for ingestion duration
aditya1702 Feb 4, 2025
b980f4f
Change function names for metric
aditya1702 Feb 4, 2025
036f6e3
Add rpc service metrics
aditya1702 Feb 4, 2025
86f7d7a
Add metrics for API requests
aditya1702 Feb 4, 2025
9c12fb5
Fix failing tests after metrics service changes
aditya1702 Feb 5, 2025
d8465bd
Register all metrics in single function call
aditya1702 Feb 5, 2025
eff26ae
Add tss pool metrics
aditya1702 Feb 5, 2025
43697f1
Remove unused variables
aditya1702 Feb 5, 2025
19fcd4f
Add idle workers to tss pool metrics
aditya1702 Feb 6, 2025
3a13422
Remove httpErrors metric and just use totalRequests metric
aditya1702 Feb 6, 2025
d183895
Just track the number of active registered accounts
aditya1702 Feb 6, 2025
5f6391f
Track db query counts - payments and accounts
aditya1702 Feb 6, 2025
7af1693
Fix tests
aditya1702 Feb 6, 2025
96e36da
Track db query counts - transactions
aditya1702 Feb 7, 2025
052d249
Fix failing tests
aditya1702 Feb 7, 2025
1a82420
Track db query durations
aditya1702 Feb 7, 2025
f08ea5a
Add metrics tests
aditya1702 Feb 7, 2025
fe2ec0f
Add numTSSTransactionsSubmitted
aditya1702 Feb 10, 2025
35c5d18
Add metric for tss txn inclusion time
aditya1702 Feb 12, 2025
ce60411
Add tss txn inclusion time - 2
aditya1702 Feb 12, 2025
77f900f
Merge remote-tracking branch 'upstream/main' into add-prometheus
aditya1702 Feb 14, 2025
896efc4
update webhook channel test
aditya1702 Feb 14, 2025
d495809
fix tests
aditya1702 Feb 14, 2025
e0b99a6
Track number of tss transactions in each state
aditya1702 Feb 14, 2025
1b53254
fix failing test
aditya1702 Feb 14, 2025
3b5a08e
fix failing test - 2
aditya1702 Feb 18, 2025
419dcd7
properly record tss txn status transitions
aditya1702 Feb 19, 2025
be97bd8
Remove pool map
aditya1702 Feb 19, 2025
79165fd
Remove pool map - 2
aditya1702 Feb 19, 2025
4b8fbb1
Add MetricsService interface
aditya1702 Feb 19, 2025
bccc467
Use mock metrics service in all relevant tests
aditya1702 Feb 20, 2025
24ff5cf
Fix test
aditya1702 Feb 20, 2025
91f89fe
Fix tests - 2
aditya1702 Feb 20, 2025
ea81905
Fix tests - 3
aditya1702 Feb 20, 2025
c73394e
Fix store tests
aditya1702 Feb 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/channel_account.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func (c *channelAccountCmd) Command() *cobra.Command {
return fmt.Errorf("setting values of config options: %w", err)
}

dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL)
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL, nil)
if err != nil {
return fmt.Errorf("opening connection pool: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/distribution_account.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func kmsCommand() *cobra.Command {
return fmt.Errorf("setting values of config options: %w", err)
}

dbConnectionPool, err := db.OpenDBConnectionPool(cfg.databaseURL)
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.databaseURL, nil)
if err != nil {
return fmt.Errorf("opening connection pool: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (c *serveCmd) Command() *cobra.Command {
return fmt.Errorf("setting values of config options: %w", err)
}

dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL)
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL, nil)
if err != nil {
return fmt.Errorf("opening connection pool: %w", err)
}
Expand Down
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ go 1.23.2
require (
github.com/alitto/pond v1.9.2
github.com/aws/aws-sdk-go v1.55.5
github.com/dlmiddlecote/sqlstats v1.0.2
github.com/getsentry/sentry-go v0.29.1
github.com/go-chi/chi v4.1.2+incompatible
github.com/go-playground/validator/v10 v10.22.1
github.com/google/uuid v1.6.0
github.com/jmoiron/sqlx v1.4.0
github.com/lib/pq v1.10.9
github.com/prometheus/client_golang v1.17.0
github.com/rubenv/sql-migrate v1.7.0
github.com/sirupsen/logrus v1.9.3
github.com/spf13/cobra v1.8.1
Expand Down Expand Up @@ -49,7 +51,6 @@ require (
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
Expand Down
63 changes: 63 additions & 0 deletions go.sum

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions internal/data/accounts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func TestAccountModelInsert(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand All @@ -41,7 +41,7 @@ func TestAccountModelDelete(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -69,7 +69,7 @@ func TestAccountModelIsAccountFeeBumpEligible(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
8 changes: 4 additions & 4 deletions internal/data/payments_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestPaymentModelAddPayment(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -142,7 +142,7 @@ func TestPaymentModelAddPayment(t *testing.T) {
func TestPaymentModelGetLatestLedgerSynced(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand All @@ -167,7 +167,7 @@ func TestPaymentModelGetLatestLedgerSynced(t *testing.T) {
func TestPaymentModelUpdateLatestLedgerSynced(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand All @@ -189,7 +189,7 @@ func TestPaymentModelUpdateLatestLedgerSynced(t *testing.T) {
func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
9 changes: 8 additions & 1 deletion internal/db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"time"

"github.com/jmoiron/sqlx"
"github.com/dlmiddlecote/sqlstats"
"github.com/prometheus/client_golang/prometheus"
"github.com/stellar/go/support/log"
)

Expand All @@ -31,14 +33,19 @@ const (
MaxOpenDBConns = 30
)

func OpenDBConnectionPool(dataSourceName string) (ConnectionPool, error) {
func OpenDBConnectionPool(dataSourceName string, metricsRegistry *prometheus.Registry) (ConnectionPool, error) {
sqlxDB, err := sqlx.Open("postgres", dataSourceName)
if err != nil {
return nil, fmt.Errorf("error creating app DB connection pool: %w", err)
}
sqlxDB.SetConnMaxIdleTime(MaxDBConnIdleTime)
sqlxDB.SetMaxOpenConns(MaxOpenDBConns)

if metricsRegistry != nil {
collector := sqlstats.NewStatsCollector("wallet-backend-db", sqlxDB)
metricsRegistry.MustRegister(collector)
}

err = sqlxDB.Ping()
if err != nil {
return nil, fmt.Errorf("error pinging app DB connection pool: %w", err)
Expand Down
2 changes: 1 addition & 1 deletion internal/db/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestOpenDBConnectionPool(t *testing.T) {
dbt := dbtest.Postgres(t)
defer dbt.Close()

dbConnectionPool, err := OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
2 changes: 1 addition & 1 deletion internal/db/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
)

func Migrate(ctx context.Context, databaseURL string, direction migrate.MigrationDirection, count int) (int, error) {
dbConnectionPool, err := OpenDBConnectionPool(databaseURL)
dbConnectionPool, err := OpenDBConnectionPool(databaseURL, nil)
if err != nil {
return 0, fmt.Errorf("connecting to the database: %w", err)
}
Expand Down
6 changes: 3 additions & 3 deletions internal/db/migrate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func TestMigrate_up_1(t *testing.T) {
dbt := dbtest.OpenWithoutMigrations(t)
defer dbt.Close()

dbConnectionPool, err := OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand All @@ -37,7 +37,7 @@ func TestMigrate_up_2_down_1(t *testing.T) {
dbt := dbtest.OpenWithoutMigrations(t)
defer dbt.Close()

dbConnectionPool, err := OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -72,7 +72,7 @@ func TestMigrate_upall_down_all(t *testing.T) {
db := dbtest.OpenWithoutMigrations(t)
defer db.Close()

dbConnectionPool, err := OpenDBConnectionPool(db.DSN)
dbConnectionPool, err := OpenDBConnectionPool(db.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
16 changes: 14 additions & 2 deletions internal/ingest/ingest.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/http"
"time"

"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/sirupsen/logrus"
"github.com/stellar/go/support/log"

Expand Down Expand Up @@ -49,8 +51,10 @@ func Ingest(cfg Configs) error {
}

func setupDeps(cfg Configs) (services.IngestService, error) {
ingestMetricsRegistry := prometheus.NewRegistry()

// Open DB connection pool
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL)
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL, ingestMetricsRegistry)
if err != nil {
return nil, fmt.Errorf("connecting to the database: %w", err)
}
Expand All @@ -75,10 +79,18 @@ func setupDeps(cfg Configs) (services.IngestService, error) {
router := tssrouter.NewRouter(tssRouterConfig)

ingestService, err := services.NewIngestService(
models, cfg.LedgerCursorName, cfg.AppTracker, rpcService, router, tssStore)
models, cfg.LedgerCursorName, cfg.AppTracker, rpcService, router, tssStore, ingestMetricsRegistry)
if err != nil {
return nil, fmt.Errorf("instantiating ingest service: %w", err)
}

http.Handle("/ingest-metrics", promhttp.HandlerFor(ingestMetricsRegistry, promhttp.HandlerOpts{}))
go func() {
err := http.ListenAndServe(":8002", nil)
if err != nil {
log.Ctx(context.Background()).Fatalf("starting ingest metrics server: %v", err)
}
}()

return ingestService, nil
}
4 changes: 2 additions & 2 deletions internal/serve/httphandler/account_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func TestAccountHandlerRegisterAccount(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -130,7 +130,7 @@ func TestAccountHandlerDeregisterAccount(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
2 changes: 1 addition & 1 deletion internal/serve/httphandler/payment_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func TestPaymentHandlerGetPayments(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
6 changes: 3 additions & 3 deletions internal/serve/httphandler/tss_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TestBuildTransactions(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()
store, _ := store.NewStore(dbConnectionPool)
Expand Down Expand Up @@ -132,7 +132,7 @@ func TestSubmitTransactions(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()
store, _ := store.NewStore(dbConnectionPool)
Expand Down Expand Up @@ -227,7 +227,7 @@ func TestGetTransaction(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()
store, _ := store.NewStore(dbConnectionPool)
Expand Down
9 changes: 8 additions & 1 deletion internal/serve/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"time"

"github.com/go-chi/chi"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/sirupsen/logrus"
supporthttp "github.com/stellar/go/support/http"
"github.com/stellar/go/support/log"
Expand Down Expand Up @@ -106,6 +108,8 @@ type handlerDeps struct {
TSSTransactionService tssservices.TransactionService
// Error Tracker
AppTracker apptracker.AppTracker
// Prometheus Metrics
MetricsRegistry *prometheus.Registry
}

func Serve(cfg Configs) error {
Expand Down Expand Up @@ -135,7 +139,8 @@ func Serve(cfg Configs) error {
}

func initHandlerDeps(cfg Configs) (handlerDeps, error) {
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL)
metricsRegistry := prometheus.NewRegistry()
dbConnectionPool, err := db.OpenDBConnectionPool(cfg.DatabaseURL, metricsRegistry)
if err != nil {
return handlerDeps{}, fmt.Errorf("connecting to the database: %w", err)
}
Expand Down Expand Up @@ -273,6 +278,7 @@ func initHandlerDeps(cfg Configs) (handlerDeps, error) {
PaymentService: paymentService,
AppTracker: cfg.AppTracker,
NetworkPassphrase: cfg.NetworkPassphrase,
MetricsRegistry: metricsRegistry,
// TSS
RPCCallerChannel: rpcCallerChannel,
ErrorJitterChannel: errorJitterChannel,
Expand Down Expand Up @@ -313,6 +319,7 @@ func handler(deps handlerDeps) http.Handler {
mux.Use(middleware.RecoverHandler(deps.AppTracker))

mux.Get("/health", health.PassHandler{}.ServeHTTP)
mux.Get("/api-metrics", promhttp.HandlerFor(deps.MetricsRegistry, promhttp.HandlerOpts{}).ServeHTTP)

// Authenticated routes
mux.Group(func(r chi.Router) {
Expand Down
4 changes: 2 additions & 2 deletions internal/services/account_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestAccountRegister(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand All @@ -43,7 +43,7 @@ func TestAccountDeregister(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
4 changes: 2 additions & 2 deletions internal/services/account_sponsorship_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
func TestAccountSponsorshipServiceSponsorAccountCreationTransaction(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -299,7 +299,7 @@ func TestAccountSponsorshipServiceSponsorAccountCreationTransaction(t *testing.T
func TestAccountSponsorshipServiceWrapTransaction(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
6 changes: 3 additions & 3 deletions internal/services/channel_account_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func TestChannelAccountServiceEnsureChannelAccounts(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -293,7 +293,7 @@ func TestSubmitTransaction(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down Expand Up @@ -348,7 +348,7 @@ func TestWaitForTransactionConfirmation(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()

dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN, nil)
require.NoError(t, err)
defer dbConnectionPool.Close()

Expand Down
Loading
Loading