diff options
Diffstat (limited to 'retry.go')
-rw-r--r-- | retry.go | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -1,14 +1,20 @@ package stm -// Retry is a sentinel value. When thrown via panic, it indicates that a +import ( + "runtime/pprof" +) + +var retries = pprof.NewProfile("stmRetries") + +// retry is a sentinel value. When thrown via panic, it indicates that a // transaction should be retried. -const Retry = "retry" +var retry = &struct{}{} // catchRetry returns true if fn calls tx.Retry. -func catchRetry(fn Operation, tx *Tx) (result interface{}, retry bool) { +func catchRetry(fn Operation, tx *Tx) (result interface{}, gotRetry bool) { defer func() { - if r := recover(); r == Retry { - retry = true + if r := recover(); r == retry { + gotRetry = true } else if r != nil { panic(r) } |