Skip to content

Commit 56ca420

Browse files
committed
Bumped v0.8.5
Signed-off-by: Vishal Rana <[email protected]>
1 parent 0cde886 commit 56ca420

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

cube.go

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -147,35 +147,30 @@ func (c *Cube) Start(r *http.Request, w http.ResponseWriter) (request *CubeReque
147147
}
148148

149149
// Recover handles a panic
150-
func (c *Cube) Recover(cr *CubeRequest) {
151-
var err error
152-
153-
if r := recover(); r != nil {
154-
switch r := r.(type) {
155-
case error:
156-
err = r
157-
default:
158-
err = fmt.Errorf("%v", r)
159-
}
160-
stack := make([]byte, 4<<10) // 4 KB
161-
length := runtime.Stack(stack, false)
162-
cr.Error = err.Error()
163-
cr.StackTrace = string(stack[:length])
164-
cr.recovered = true
150+
func (c *Cube) Recover(r interface{}, cr *CubeRequest) {
151+
err, ok := r.(error)
152+
if !ok {
153+
err = fmt.Errorf("%v", r)
165154
}
155+
stack := make([]byte, 4<<10) // 4 KB
156+
length := runtime.Stack(stack, false)
157+
cr.Error = err.Error()
158+
cr.StackTrace = string(stack[:length])
159+
cr.recovered = true
166160
}
167161

168162
// Stop stops recording an HTTP request.
169163
func (c *Cube) Stop(r *CubeRequest, status int, size int64) {
164+
if r.recovered {
165+
status = http.StatusInternalServerError
166+
}
170167
atomic.AddInt64(&c.activeRequests, -1)
171168
r.Status = status
172169
r.BytesOut = size
173170
r.Latency = int64(time.Now().Sub(r.Time))
174171

175172
// Dispatch batch
176-
if r.recovered ||
177-
r.Status >= 500 && r.Status < 600 ||
178-
c.requestsLength() >= c.BatchSize {
173+
if r.Status >= 500 && r.Status < 600 || c.requestsLength() >= c.BatchSize {
179174
go func() {
180175
if err := c.dispatch(); err != nil {
181176
c.logger.Error(err)

0 commit comments

Comments
 (0)