|
@@ -154,6 +154,10 @@ func (db *commonSqlConn) ExecCtx(ctx context.Context, q string, args ...interfac
|
|
return err
|
|
return err
|
|
}, db.acceptable)
|
|
}, db.acceptable)
|
|
|
|
|
|
|
|
+ if err == breaker.ErrServiceUnavailable {
|
|
|
|
+ metricReqErr.Inc("Exec", "breaker")
|
|
|
|
+ }
|
|
|
|
+
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
@@ -187,6 +191,10 @@ func (db *commonSqlConn) PrepareCtx(ctx context.Context, query string) (stmt Stm
|
|
return nil
|
|
return nil
|
|
}, db.acceptable)
|
|
}, db.acceptable)
|
|
|
|
|
|
|
|
+ if err == breaker.ErrServiceUnavailable {
|
|
|
|
+ metricReqErr.Inc("Prepare", "breaker")
|
|
|
|
+ }
|
|
|
|
+
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
@@ -270,9 +278,15 @@ func (db *commonSqlConn) TransactCtx(ctx context.Context, fn func(context.Contex
|
|
endSpan(span, err)
|
|
endSpan(span, err)
|
|
}()
|
|
}()
|
|
|
|
|
|
- return db.brk.DoWithAcceptable(func() error {
|
|
|
|
|
|
+ err = db.brk.DoWithAcceptable(func() error {
|
|
return transact(ctx, db, db.beginTx, fn)
|
|
return transact(ctx, db, db.beginTx, fn)
|
|
}, db.acceptable)
|
|
}, db.acceptable)
|
|
|
|
+
|
|
|
|
+ if err == breaker.ErrServiceUnavailable {
|
|
|
|
+ metricReqErr.Inc("Transact", "breaker")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
func (db *commonSqlConn) acceptable(err error) bool {
|
|
func (db *commonSqlConn) acceptable(err error) bool {
|
|
@@ -287,7 +301,7 @@ func (db *commonSqlConn) acceptable(err error) bool {
|
|
func (db *commonSqlConn) queryRows(ctx context.Context, scanner func(*sql.Rows) error,
|
|
func (db *commonSqlConn) queryRows(ctx context.Context, scanner func(*sql.Rows) error,
|
|
q string, args ...interface{}) (err error) {
|
|
q string, args ...interface{}) (err error) {
|
|
var qerr error
|
|
var qerr error
|
|
- return db.brk.DoWithAcceptable(func() error {
|
|
|
|
|
|
+ err = db.brk.DoWithAcceptable(func() error {
|
|
conn, err := db.connProv()
|
|
conn, err := db.connProv()
|
|
if err != nil {
|
|
if err != nil {
|
|
db.onError(err)
|
|
db.onError(err)
|
|
@@ -301,6 +315,12 @@ func (db *commonSqlConn) queryRows(ctx context.Context, scanner func(*sql.Rows)
|
|
}, func(err error) bool {
|
|
}, func(err error) bool {
|
|
return qerr == err || db.acceptable(err)
|
|
return qerr == err || db.acceptable(err)
|
|
})
|
|
})
|
|
|
|
+
|
|
|
|
+ if err == breaker.ErrServiceUnavailable {
|
|
|
|
+ metricReqErr.Inc("queryRows", "breaker")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
func (s statement) Close() error {
|
|
func (s statement) Close() error {
|