Skip to content

Commit 93f13ca

Browse files
committed
ref(dbtools): return panic stack trace
1 parent eac0566 commit 93f13ca

File tree

3 files changed

+11
-26
lines changed

3 files changed

+11
-26
lines changed

db.go

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dbtools
33
import (
44
"context"
55
"database/sql"
6+
"runtime/debug"
67
"time"
78

89
"github.com/arsham/retry"
@@ -95,22 +96,14 @@ func (t *Transaction) PGX(ctx context.Context, transactions ...func(pgx.Tx) erro
9596
func() {
9697
defer func() {
9798
if r := recover(); r != nil {
98-
err = errors.Wrapf(errPanic, "%v", r)
99+
err = errors.Wrapf(errPanic, "%v\n%s", r, debug.Stack())
99100
}
100101
}()
101102
err = fn(tx)
102103
}()
103104
if err != nil {
104105
e := errors.Wrap(tx.Rollback(ctx), "rolling back transaction")
105-
e = multierror.Append(err, e).ErrorOrNil()
106-
var (
107-
v1 retry.StopError
108-
v2 *retry.StopError
109-
)
110-
if errors.As(err, &v1) || errors.As(err, &v2) {
111-
e = &retry.StopError{Err: e}
112-
}
113-
return e
106+
return multierror.Append(err, e)
114107
}
115108
}
116109
return errors.Wrap(tx.Commit(ctx), "committing transaction")
@@ -140,22 +133,14 @@ func (t *Transaction) DB(ctx context.Context, transactions ...func(Tx) error) er
140133
func() {
141134
defer func() {
142135
if r := recover(); r != nil {
143-
err = errors.Wrapf(errPanic, "%v", r)
136+
err = errors.Wrapf(errPanic, "%v\n%s", r, debug.Stack())
144137
}
145138
}()
146139
err = fn(tx)
147140
}()
148141
if err != nil {
149142
e := errors.Wrap(tx.Rollback(), "rolling back transaction")
150-
e = multierror.Append(err, e).ErrorOrNil()
151-
var (
152-
v1 retry.StopError
153-
v2 *retry.StopError
154-
)
155-
if errors.As(err, &v1) || errors.As(err, &v2) {
156-
e = &retry.StopError{Err: e}
157-
}
158-
return e
143+
return multierror.Append(err, e)
159144
}
160145
}
161146
return errors.Wrap(tx.Commit(), "committing transaction")

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.18
44

55
require (
66
github.com/DATA-DOG/go-sqlmock v1.5.0
7-
github.com/arsham/retry v0.5.0
7+
github.com/arsham/retry v0.5.1
88
github.com/hashicorp/go-multierror v1.1.1
99
github.com/jackc/pgconn v1.11.0
1010
github.com/jackc/pgx/v4 v4.15.0
@@ -52,7 +52,7 @@ require (
5252
go.opencensus.io v0.23.0 // indirect
5353
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd // indirect
5454
golang.org/x/net v0.0.0-20220225172249-27dd8689420f // indirect
55-
golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 // indirect
55+
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect
5656
golang.org/x/text v0.3.7 // indirect
5757
google.golang.org/genproto v0.0.0-20220317150908-0efb43f6373e // indirect
5858
google.golang.org/grpc v1.45.0 // indirect

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC
111111
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
112112
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
113113
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
114-
github.com/arsham/retry v0.5.0 h1:u9FyqYTDykxCJv6g05r8yvvBWLsb/zBhQH8ItdZ7oSs=
115-
github.com/arsham/retry v0.5.0/go.mod h1:zl7ydR1abWXWqc9+9vKHvwAXp+clY1Pzc6nJ9CSS7W8=
114+
github.com/arsham/retry v0.5.1 h1:TVfq1hC65+2zJaE+F6IeRKayRoD5I+rFHq+25dKZB8A=
115+
github.com/arsham/retry v0.5.1/go.mod h1:zl7ydR1abWXWqc9+9vKHvwAXp+clY1Pzc6nJ9CSS7W8=
116116
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
117117
github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0=
118118
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
@@ -1223,8 +1223,8 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc
12231223
golang.org/x/sys v0.0.0-20211109184856-51b60fd695b3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
12241224
golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
12251225
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1226-
golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 h1:saXMvIOKvRFwbOMicHXr0B1uwoxq9dGmLe5ExMES6c4=
1227-
golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1226+
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs=
1227+
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
12281228
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
12291229
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
12301230
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=

0 commit comments

Comments
 (0)