10484: Track non-s3 errors by Go type.
authorTom Clegg <tom@curoverse.com>
Thu, 10 Nov 2016 20:25:32 +0000 (15:25 -0500)
committerTom Clegg <tom@curoverse.com>
Mon, 21 Nov 2016 16:49:15 +0000 (11:49 -0500)
services/keepstore/s3_volume.go

index 48ba95b4887ee03e2b245faa1ab96cd2c868cdff..3b843e02c955e99fafc39895408cca9bccb271fe 100644 (file)
@@ -859,15 +859,16 @@ func (v *S3Volume) tickErr(err error) error {
                return nil
        }
        atomic.AddUint64(&v.bucketStats.Errors, 1)
+       errStr := fmt.Sprintf("%T", err)
        if err, ok := err.(*s3.Error); ok {
-               errStr := fmt.Sprintf("%d %s", err.StatusCode, err.Code)
-               v.bucketStats.lock.Lock()
-               if v.bucketStats.ErrorCodes == nil {
-                       v.bucketStats.ErrorCodes = make(map[string]uint64)
-               }
-               v.bucketStats.ErrorCodes[errStr]++
-               v.bucketStats.lock.Unlock()
+               errStr = errStr + fmt.Sprintf(" %d %s", err.StatusCode, err.Code)
+       }
+       v.bucketStats.lock.Lock()
+       if v.bucketStats.ErrorCodes == nil {
+               v.bucketStats.ErrorCodes = make(map[string]uint64)
        }
+       v.bucketStats.ErrorCodes[errStr]++
+       v.bucketStats.lock.Unlock()
        return err
 }