diff --git a/cmd/erasure-healing.go b/cmd/erasure-healing.go index d02f7205c..7e95dd66c 100644 --- a/cmd/erasure-healing.go +++ b/cmd/erasure-healing.go @@ -81,6 +81,13 @@ func (er erasureObjects) healBucket(ctx context.Context, storageDisks []StorageA writeQuorum++ } + if globalTrace.NumSubscribers(madmin.TraceHealing) > 0 { + startTime := time.Now() + defer func() { + healTrace("heal.checkBucket", startTime, bucket, "", "", opts, err, &res) + }() + } + // Initialize sync waitgroup. g := errgroup.WithNErrs(len(storageDisks)) @@ -285,6 +292,12 @@ func (er erasureObjects) healObject(ctx context.Context, bucket string, object s storageDisks := er.getDisks() storageEndpoints := er.getEndpoints() + if globalTrace.NumSubscribers(madmin.TraceHealing) > 0 { + startTime := time.Now() + defer func() { + healTrace("heal.checkVersion", startTime, bucket, object, versionID, opts, err, &result) + }() + } // Initialize heal result object result = madmin.HealResultItem{ Type: madmin.HealItemObject, @@ -998,3 +1011,25 @@ func (er erasureObjects) HealObject(ctx context.Context, bucket, object, version } return hr, toObjectErr(err, bucket, object, versionID) } + +// healTrace sends healing results to trace output. +func healTrace(funcName string, startTime time.Time, bucket, object, versionID string, opts madmin.HealOpts, err error, result *madmin.HealResultItem) { + tr := madmin.TraceInfo{ + TraceType: madmin.TraceHealing, + Time: startTime, + NodeName: globalLocalNodeName, + FuncName: funcName, + Duration: time.Since(startTime), + Message: fmt.Sprintf("dry:%v, rm:%v, recreate:%v mode:%v", opts.DryRun, opts.Remove, opts.Recreate, opts.ScanMode), + Path: fmt.Sprintf("%s/%s", bucket, object), + } + if versionID != "" && versionID != "null" { + tr.Path += " v-" + versionID + } + if err != nil { + tr.Error = err.Error() + } else { + tr.HealResult = result + } + globalTrace.Publish(tr) +} diff --git a/go.mod b/go.mod index e54e053d0..bdeb94b4c 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/minio/dperf v0.4.2 github.com/minio/highwayhash v1.0.2 github.com/minio/kes v0.20.0 - github.com/minio/madmin-go v1.4.25 + github.com/minio/madmin-go v1.4.26 github.com/minio/minio-go/v7 v7.0.34 github.com/minio/pkg v1.3.0 github.com/minio/selfupdate v0.5.0 diff --git a/go.sum b/go.sum index 7787fcf7c..c51d43748 100644 --- a/go.sum +++ b/go.sum @@ -623,8 +623,8 @@ github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLT github.com/minio/kes v0.20.0 h1:1tyC51Rr8zTregTESuT/QN/iebNMX7B9t7d3xLNMEpE= github.com/minio/kes v0.20.0/go.mod h1:3FW1BQkMGQW78yhy+69tUq5bdcf5rnXJizyeKB9a/tc= github.com/minio/madmin-go v1.3.5/go.mod h1:vGKGboQgGIWx4DuDUaXixjlIEZOCIp6ivJkQoiVaACc= -github.com/minio/madmin-go v1.4.25 h1:IEJpsTXlHz18/yRI5HxY84KaJdDjUUYdMiC5f8fId4g= -github.com/minio/madmin-go v1.4.25/go.mod h1:ez87VmMtsxP7DRxjKJKD4RDNW+nhO2QF9KSzwxBDQ98= +github.com/minio/madmin-go v1.4.26 h1:hss2NjaMpZEHlaGJh2rGRYH6GiNY6g8+ogrUoxbjafg= +github.com/minio/madmin-go v1.4.26/go.mod h1:ez87VmMtsxP7DRxjKJKD4RDNW+nhO2QF9KSzwxBDQ98= github.com/minio/mc v0.0.0-20220818165341-8c239d16aa37 h1:UE9kHgdza2HB4DDx0nIn0jHRl6YASUomVoKjciMfqjM= github.com/minio/mc v0.0.0-20220818165341-8c239d16aa37/go.mod h1:O3pvs5/n57bZ0mpcG/skBuD4pHX6m+wVbW7lw8LO5go= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=