use generated interface
Some checks failed
dependabot-automerge / automerge (pull_request) Has been skipped
autoapprove / autoapprove (pull_request) Failing after 4s
automerge / automerge (pull_request) Failing after 4s
codeql / analyze (go) (pull_request) Failing after 6s
prbuild / test (pull_request) Failing after 5s
prbuild / lint (pull_request) Failing after 6s
Some checks failed
dependabot-automerge / automerge (pull_request) Has been skipped
autoapprove / autoapprove (pull_request) Failing after 4s
automerge / automerge (pull_request) Failing after 4s
codeql / analyze (go) (pull_request) Failing after 6s
prbuild / test (pull_request) Failing after 5s
prbuild / lint (pull_request) Failing after 6s
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
35
tx.go
35
tx.go
@@ -5,64 +5,61 @@ import (
|
||||
"database/sql/driver"
|
||||
"time"
|
||||
|
||||
"go.unistack.org/micro/v3/tracer"
|
||||
"go.unistack.org/micro/v4/tracer"
|
||||
)
|
||||
|
||||
var _ driver.Tx = &wrapperTx{}
|
||||
var _ driver.Tx = (*wrapperTx)(nil)
|
||||
|
||||
// wrapperTx defines a wrapper for driver.Tx
|
||||
type wrapperTx struct {
|
||||
tx driver.Tx
|
||||
span tracer.Span
|
||||
opts Options
|
||||
conn *wrapperConn
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
// Commit implements driver.Tx Commit
|
||||
func (w *wrapperTx) Commit() error {
|
||||
if w.span != nil {
|
||||
defer w.span.Finish()
|
||||
}
|
||||
ts := time.Now()
|
||||
err := w.tx.Commit()
|
||||
td := time.Since(ts)
|
||||
|
||||
if err != nil {
|
||||
w.span.AddLabels("error", true)
|
||||
w.span.AddLabels("err", err.Error())
|
||||
if w.span != nil {
|
||||
if err != nil {
|
||||
w.span.AddLabels("error", true)
|
||||
w.span.AddLabels("err", err.Error())
|
||||
}
|
||||
w.span.Finish()
|
||||
}
|
||||
|
||||
if w.opts.LoggerEnabled {
|
||||
if w.opts.LoggerEnabled && w.opts.Logger.V(w.opts.LoggerLevel) {
|
||||
w.opts.Logger.Fields(w.opts.LoggerObserver(w.ctx, "Commit", labelUnknown, td, err)...).Log(w.ctx, w.opts.LoggerLevel)
|
||||
}
|
||||
|
||||
w.ctx = nil
|
||||
w.conn.ctx = nil
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// Rollback implements driver.Tx Rollback
|
||||
func (w *wrapperTx) Rollback() error {
|
||||
if w.span != nil {
|
||||
defer w.span.Finish()
|
||||
}
|
||||
ts := time.Now()
|
||||
err := w.tx.Rollback()
|
||||
td := time.Since(ts)
|
||||
|
||||
if err != nil {
|
||||
w.span.AddLabels("error", true)
|
||||
w.span.AddLabels("err", err.Error())
|
||||
if w.span != nil {
|
||||
if err != nil {
|
||||
w.span.AddLabels("error", true)
|
||||
w.span.AddLabels("err", err.Error())
|
||||
}
|
||||
w.span.Finish()
|
||||
}
|
||||
|
||||
if w.opts.LoggerEnabled {
|
||||
if w.opts.LoggerEnabled && w.opts.Logger.V(w.opts.LoggerLevel) {
|
||||
w.opts.Logger.Fields(w.opts.LoggerObserver(w.ctx, "Rollback", labelUnknown, td, err)...).Log(w.ctx, w.opts.LoggerLevel)
|
||||
}
|
||||
|
||||
w.ctx = nil
|
||||
w.conn.ctx = nil
|
||||
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user