diff options
| author | Jonathan Amsterdam <jba@google.com> | 2020-06-17 07:43:12 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2020-06-17 16:27:43 +0000 |
| commit | 8c8a3b1d6ee8bdeb5e55b29ac237534268eda90d (patch) | |
| tree | a8e266fceee6cdcf8866de7cfb316aa45b52bd00 /internal/database/database.go | |
| parent | 4ea5ad96b1650fd6d7a3e597feaa5367458e36d0 (diff) | |
| download | go-x-pkgsite-8c8a3b1d6ee8bdeb5e55b29ac237534268eda90d.tar.xz | |
internal/config: remove global
Remove the `cfg` global and the functions that accessed it.
Fixes b/145301722.
Change-Id: I58ab9fbd4fc29f66dbc5b120f04c88ee0703ee57
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/238437
Reviewed-by: Julie Qiu <julie@golang.org>
Diffstat (limited to 'internal/database/database.go')
| -rw-r--r-- | internal/database/database.go | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/internal/database/database.go b/internal/database/database.go index 86d35d5b..d13973dd 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -20,7 +20,6 @@ import ( "unicode" "github.com/lib/pq" - "golang.org/x/pkgsite/internal/config" "golang.org/x/pkgsite/internal/derrors" "golang.org/x/pkgsite/internal/log" ) @@ -33,13 +32,14 @@ import ( // operate within the transaction. type DB struct { db *sql.DB + instanceID string tx *sql.Tx mu sync.Mutex maxRetries int // max times a single transaction was retried } // Open creates a new DB for the given connection string. -func Open(driverName, dbinfo string) (_ *DB, err error) { +func Open(driverName, dbinfo, instanceID string) (_ *DB, err error) { defer derrors.Wrap(&err, "database.Open(%q, %q)", driverName, redactPassword(dbinfo)) @@ -50,12 +50,12 @@ func Open(driverName, dbinfo string) (_ *DB, err error) { if err := db.Ping(); err != nil { return nil, err } - return New(db), nil + return New(db, instanceID), nil } // New creates a new DB from a sql.DB. -func New(db *sql.DB) *DB { - return &DB{db: db} +func New(db *sql.DB, instanceID string) *DB { + return &DB{db: db, instanceID: instanceID} } func (db *DB) InTransaction() bool { @@ -75,7 +75,7 @@ func (db *DB) Close() error { // Exec executes a SQL statement. func (db *DB) Exec(ctx context.Context, query string, args ...interface{}) (res sql.Result, err error) { - defer logQuery(ctx, query, args)(&err) + defer logQuery(ctx, query, args, db.instanceID)(&err) if db.tx != nil { return db.tx.ExecContext(ctx, query, args...) @@ -85,7 +85,7 @@ func (db *DB) Exec(ctx context.Context, query string, args ...interface{}) (res // Query runs the DB query. func (db *DB) Query(ctx context.Context, query string, args ...interface{}) (_ *sql.Rows, err error) { - defer logQuery(ctx, query, args)(&err) + defer logQuery(ctx, query, args, db.instanceID)(&err) if db.tx != nil { return db.tx.QueryContext(ctx, query, args...) } @@ -94,7 +94,7 @@ func (db *DB) Query(ctx context.Context, query string, args ...interface{}) (_ * // QueryRow runs the query and returns a single row. func (db *DB) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row { - defer logQuery(ctx, query, args)(nil) + defer logQuery(ctx, query, args, db.instanceID)(nil) if db.tx != nil { return db.tx.QueryRowContext(ctx, query, args...) } @@ -102,7 +102,7 @@ func (db *DB) QueryRow(ctx context.Context, query string, args ...interface{}) * } func (db *DB) Prepare(ctx context.Context, query string) (*sql.Stmt, error) { - defer logQuery(ctx, "preparing "+query, nil) + defer logQuery(ctx, "preparing "+query, nil, db.instanceID) if db.tx != nil { return db.tx.PrepareContext(ctx, query) } @@ -200,9 +200,9 @@ func (db *DB) transact(ctx context.Context, opts *sql.TxOptions, txFunc func(*DB } }() - dbtx := New(db.db) + dbtx := New(db.db, db.instanceID) dbtx.tx = tx - defer logTransaction(ctx, opts)(&err) + defer dbtx.logTransaction(ctx, opts)(&err) if err := txFunc(dbtx); err != nil { return fmt.Errorf("txFunc(tx): %w", err) } @@ -451,7 +451,7 @@ type queryEndLogEntry struct { Error string `json:",omitempty"` } -func logQuery(ctx context.Context, query string, args []interface{}) func(*error) { +func logQuery(ctx context.Context, query string, args []interface{}, instanceID string) func(*error) { if QueryLoggingDisabled { return func(*error) {} } @@ -473,7 +473,7 @@ func logQuery(ctx context.Context, query string, args []interface{}) func(*error query = query[:maxlen] + "..." } - uid := generateLoggingID() + uid := generateLoggingID(instanceID) // Construct a short string of the args. const ( @@ -517,11 +517,11 @@ func logQuery(ctx context.Context, query string, args []interface{}) func(*error } } -func logTransaction(ctx context.Context, opts *sql.TxOptions) func(*error) { +func (db *DB) logTransaction(ctx context.Context, opts *sql.TxOptions) func(*error) { if QueryLoggingDisabled { return func(*error) {} } - uid := generateLoggingID() + uid := generateLoggingID(db.instanceID) isoLevel := "default" if opts != nil { isoLevel = opts.Isolation.String() @@ -534,8 +534,7 @@ func logTransaction(ctx context.Context, opts *sql.TxOptions) func(*error) { } } -func generateLoggingID() string { - instanceID := config.InstanceID() +func generateLoggingID(instanceID string) string { if instanceID == "" { instanceID = "local" } else { |
