From 0a1db6d41be0804fc766a053b3795dd52582143a Mon Sep 17 00:00:00 2001 From: Anis Elleuch Date: Wed, 7 Apr 2021 16:16:10 +0100 Subject: [PATCH] tracing: Support older admin tracing API (#11999) mc admin trace does not work with older MinIO versions because if an incompability with older trace admin API. This commit changes madmin for better backward compatibility with server admin API. --- pkg/madmin/service-commands.go | 16 ++++++++++++---- pkg/trace/trace.go | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/pkg/madmin/service-commands.go b/pkg/madmin/service-commands.go index 1c251731f..2df67506b 100644 --- a/pkg/madmin/service-commands.go +++ b/pkg/madmin/service-commands.go @@ -80,6 +80,8 @@ type ServiceTraceInfo struct { // ServiceTraceOpts holds tracing options type ServiceTraceOpts struct { + All bool // Deprecated + S3 bool Internal bool Storage bool @@ -97,11 +99,17 @@ func (adm AdminClient) ServiceTrace(ctx context.Context, opts ServiceTraceOpts) for { urlValues := make(url.Values) urlValues.Set("err", strconv.FormatBool(opts.OnlyErrors)) - urlValues.Set("s3", strconv.FormatBool(opts.S3)) - urlValues.Set("internal", strconv.FormatBool(opts.Internal)) - urlValues.Set("storage", strconv.FormatBool(opts.Storage)) - urlValues.Set("os", strconv.FormatBool(opts.OS)) urlValues.Set("threshold", opts.Threshold.String()) + + if opts.All { + // Deprecated flag + urlValues.Set("all", "true") + } else { + urlValues.Set("s3", strconv.FormatBool(opts.S3)) + urlValues.Set("internal", strconv.FormatBool(opts.Internal)) + urlValues.Set("storage", strconv.FormatBool(opts.Storage)) + urlValues.Set("os", strconv.FormatBool(opts.OS)) + } reqData := requestData{ relPath: adminAPIPrefix + "/trace", queryValues: urlValues, diff --git a/pkg/trace/trace.go b/pkg/trace/trace.go index 21ec7edbe..ba3add6ba 100644 --- a/pkg/trace/trace.go +++ b/pkg/trace/trace.go @@ -25,12 +25,12 @@ import ( type Type int const ( + // HTTP tracing (MinIO S3 & Internode) + HTTP Type = iota // OS tracing (Golang os package calls) - OS Type = iota + OS // Storage tracing (MinIO Storage Layer) Storage - // HTTP tracing (MinIO S3 & Internode) - HTTP ) // Info - represents a trace record, additionally