Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package minio-client for openSUSE:Factory checked in at 2023-10-02 20:08:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/minio-client (Old) and /work/SRC/openSUSE:Factory/.minio-client.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "minio-client" Mon Oct 2 20:08:16 2023 rev:48 rq:1114658 version:20230929T164122Z Changes: -------- --- /work/SRC/openSUSE:Factory/minio-client/minio-client.changes 2023-09-25 20:52:13.200398176 +0200 +++ /work/SRC/openSUSE:Factory/.minio-client.new.28202/minio-client.changes 2023-10-02 20:10:12.790889115 +0200 @@ -1,0 +2,17 @@ +Mon Oct 02 05:29:51 UTC 2023 - ka...@b1-systems.de + +- Update to version 20230929T164122Z: + * Add min, max and total request time to top api command (#4702) + * Use latest madmin-go (v3.0.21) (#4701) + * perf net: Do not show Err: tag if there is no error (#4700) + +------------------------------------------------------------------- +Fri Sep 29 08:46:51 UTC 2023 - ka...@b1-systems.de + +- Update to version 20230928T174830Z: + * change 6->3 decimal resolution, to conserve terminal realestate + * Add ART and ATP to 'support top api' command (#4699) + * broaden reach of `--no-color` flag (#4697) + * Show heal checks performed on missing (#4692) + +------------------------------------------------------------------- Old: ---- mc-20230922T050746Z.obscpio New: ---- mc-20230929T164122Z.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ minio-client.spec ++++++ --- /var/tmp/diff_new_pack.jMfWdU/_old 2023-10-02 20:10:14.334944644 +0200 +++ /var/tmp/diff_new_pack.jMfWdU/_new 2023-10-02 20:10:14.334944644 +0200 @@ -22,7 +22,7 @@ %define binary_name minio-client Name: minio-client -Version: 20230922T050746Z +Version: 20230929T164122Z Release: 0 Summary: Client for MinIO License: AGPL-3.0-only @@ -37,8 +37,7 @@ Please note: In contrast to upstream this package provides the executable as `minio-client`. %prep -%setup -q -n %{archive_name}-%{version} -%setup -q -n %{archive_name}-%{version} -T -D -a 1 +%autosetup -p1 -a1 -n %{archive_name}-%{version} %build go build \ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.jMfWdU/_old 2023-10-02 20:10:14.362945651 +0200 +++ /var/tmp/diff_new_pack.jMfWdU/_new 2023-10-02 20:10:14.366945795 +0200 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="changesgenerate">enable</param> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">RELEASE.2023-09-22T05-07-46Z</param> + <param name="revision">RELEASE.2023-09-29T16-41-22Z</param> <param name="match-tag">RELEASE.*</param> <param name="versionrewrite-pattern">RELEASE\.(.*)-(.*)-(.*)-(.*)-(.*)</param> <param name="versionrewrite-replacement">\1\2\3\4\5</param> @@ -19,7 +19,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="manual"> - <param name="archive">mc-20230922T050746Z.obscpio</param> + <param name="archive">mc-20230929T164122Z.obscpio</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.jMfWdU/_old 2023-10-02 20:10:14.382946370 +0200 +++ /var/tmp/diff_new_pack.jMfWdU/_new 2023-10-02 20:10:14.386946514 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/minio/mc</param> - <param name="changesrevision">ae05d451739bb8cd35952f7cac0b11f60407cd52</param></service></servicedata> + <param name="changesrevision">d47a2ba53a5e10cd1bc8b946c05f4cadb71d4ee3</param></service></servicedata> (No newline at EOF) ++++++ mc-20230922T050746Z.obscpio -> mc-20230929T164122Z.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/cmd/admin-scanner-status.go new/mc-20230929T164122Z/cmd/admin-scanner-status.go --- old/mc-20230922T050746Z/cmd/admin-scanner-status.go 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/cmd/admin-scanner-status.go 2023-09-29 18:41:22.000000000 +0200 @@ -273,26 +273,24 @@ addRowF(title("Current cycle:") + " (between cycles)") addRowF(title("Active drives:")+" %s", ui(uint64(len(sc.ActivePaths)))) } + getRate := func(x madmin.TimedAction) string { + if x.AccTime > 0 { + return fmt.Sprintf("; Rate: %v/day", ui(uint64(float64(24*time.Hour)/(float64(time.Minute)/float64(x.Count))))) + } + return "" + } addRow("-------------------------------------- Last Minute Statistics ---------------------------------------") objs := uint64(0) x := sc.LastMinute.Actions["ScanObject"] { avg := x.Avg() - rate := "" - if x.AccTime > 0 { - rate = fmt.Sprintf("; Rate: %v/day", ui(uint64(float64(24*time.Hour)/(float64(time.Minute)/float64(x.Count))))) - } - addRowF(title("Objects Scanned:")+" %s objects; Avg: %v%s", ui(x.Count), metricsDuration(avg), rate) + addRowF(title("Objects Scanned:")+" %s objects; Avg: %v%s", ui(x.Count), metricsDuration(avg), getRate(x)) objs = x.Count } x = sc.LastMinute.Actions["ApplyVersion"] { avg := x.Avg() - rate := "" - if x.AccTime > 0 { - rate = fmt.Sprintf("; Rate: %s/day", ui(uint64(float64(24*time.Hour)/(float64(time.Minute)/float64(x.Count))))) - } - addRowF(title("Versions Scanned:")+" %s versions; Avg: %v%s", ui(x.Count), metricsDuration(avg), rate) + addRowF(title("Versions Scanned:")+" %s versions; Avg: %v%s", ui(x.Count), metricsDuration(avg), getRate(x)) } x = sc.LastMinute.Actions["HealCheck"] { @@ -315,6 +313,15 @@ } x = sc.LastMinute.Actions["CheckMissing"] addRowF(title("Verify Deleted:")+" %s folders; Avg: %v", ui(x.Count), metricsDuration(x.Avg())) + x = sc.LastMinute.Actions["HealAbandonedObject"] + if x.Count > 0 { + addRowF(title(" Missing Objects:")+" %s objects healed; Avg: %v%s", ui(x.Count), metricsDuration(x.Avg()), getRate(x)) + } + x = sc.LastMinute.Actions["HealAbandonedVersion"] + if x.Count > 0 { + addRowF(title(" Missing Versions:")+" %s versions healed; Avg: %v%s; %v bytes/v", ui(x.Count), metricsDuration(x.Avg()), getRate(x), ui(x.AvgBytes())) + } + for k, x := range sc.LastMinute.ILM { const length = 17 k += ":" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/cmd/globals.go new/mc-20230929T164122Z/cmd/globals.go --- old/mc-20230922T050746Z/cmd/globals.go 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/cmd/globals.go 2023-09-29 18:41:22.000000000 +0200 @@ -24,10 +24,12 @@ "net/url" "time" + "github.com/charmbracelet/lipgloss" "github.com/dustin/go-humanize" "github.com/minio/cli" "github.com/minio/madmin-go/v3" "github.com/minio/pkg/v2/console" + "github.com/muesli/termenv" ) const ( @@ -111,6 +113,7 @@ // Disable colorified messages if requested. if globalNoColor || globalQuiet { console.SetColorOff() + lipgloss.SetColorProfile(termenv.Ascii) } globalConnReadDeadline = ctx.Duration("conn-read-deadline") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/cmd/speedtest-spinner.go new/mc-20230929T164122Z/cmd/speedtest-spinner.go --- old/mc-20230922T050746Z/cmd/speedtest-spinner.go 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/cmd/speedtest-spinner.go 2023-09-29 18:41:22.000000000 +0200 @@ -212,11 +212,15 @@ }) } else { for _, nodeResult := range nres.NodeResults { + nodeErr := "" + if nodeResult.Error != "" { + nodeErr = "Err: " + nodeResult.Error + } data = append(data, []string{ trailerIfGreaterThan(nodeResult.Endpoint, 64), whiteStyle.Render(humanize.IBytes(uint64(nodeResult.RX))) + "/s", whiteStyle.Render(humanize.IBytes(uint64(nodeResult.TX))) + "/s", - "Err: " + nodeResult.Error, + nodeErr, }) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/cmd/support-top-api.go new/mc-20230929T164122Z/cmd/support-top-api.go --- old/mc-20230922T050746Z/cmd/support-top-api.go 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/cmd/support-top-api.go 2023-09-29 18:41:22.000000000 +0200 @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2022 MinIO, Inc. +// Copyright (c) 2015-2023 MinIO, Inc. // // This file is part of MinIO Object Storage stack // diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/cmd/top-api-spinner.go new/mc-20230929T164122Z/cmd/top-api-spinner.go --- old/mc-20230922T050746Z/cmd/top-api-spinner.go 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/cmd/top-api-spinner.go 2023-09-29 18:41:22.000000000 +0200 @@ -19,6 +19,7 @@ import ( "fmt" + "math" "sort" "strings" "sync/atomic" @@ -32,12 +33,14 @@ "github.com/olekukonko/tablewriter" ) -// TODO: Add ART (Average Response Time) latency type topAPIStats struct { - TotalCalls uint64 - TotalBytesRX uint64 - TotalBytesTX uint64 - TotalErrors uint64 + TotalCalls uint64 + TotalBytesRX uint64 + TotalBytesTX uint64 + TotalErrors uint64 + TotalDurationNanos uint64 + MaxDurationNanos uint64 + MinDurationNanos uint64 } func (s *topAPIStats) addAPICall(n int) { @@ -56,6 +59,15 @@ atomic.AddUint64(&s.TotalErrors, uint64(n)) } +func (s *topAPIStats) addAPIDurationNanos(n int64) { + atomic.AddUint64(&s.TotalDurationNanos, uint64(n)) + if s.MinDurationNanos == 0 { + s.MinDurationNanos = uint64(n) + } + s.MinDurationNanos = uint64(math.Min(float64(n), float64(s.MinDurationNanos))) + s.MaxDurationNanos = uint64(math.Max(float64(n), float64(s.MaxDurationNanos))) +} + func (s *topAPIStats) loadAPICall() uint64 { return atomic.LoadUint64(&s.TotalCalls) } @@ -72,6 +84,18 @@ return atomic.LoadUint64(&s.TotalErrors) } +func (s *topAPIStats) loadAPIDurationNanos() uint64 { + return atomic.LoadUint64(&s.TotalDurationNanos) +} + +func (s *topAPIStats) loadAPIMinDurationNanos() uint64 { + return atomic.LoadUint64(&s.MinDurationNanos) +} + +func (s *topAPIStats) loadAPIMaxDurationNanos() uint64 { + return atomic.LoadUint64(&s.MaxDurationNanos) +} + type traceUI struct { spinner spinner.Model quitting bool @@ -158,6 +182,7 @@ if res.Trace.HTTP != nil { traceSt.addAPIBytesRX(res.Trace.HTTP.CallStats.InputBytes) traceSt.addAPIBytesTX(res.Trace.HTTP.CallStats.OutputBytes) + traceSt.addAPIDurationNanos(res.Trace.Duration.Nanoseconds()) } if res.Trace.HTTP.RespInfo.StatusCode >= 499 { traceSt.addAPIErrors(1) @@ -165,16 +190,22 @@ m.apiStatsMap[res.Trace.FuncName] = traceSt } - table.SetHeader([]string{"API", "RX", "TX", "CALLS", "ERRORS"}) + table.SetHeader([]string{"API", "RX", "TX", "CALLS", "ERRORS", "MinRT", "MaxRT", "AvgRT", "AvgTP"}) data := make([][]string, 0, len(m.apiStatsMap)) for k, stats := range m.apiStatsMap { + secs := time.Duration(stats.loadAPIDurationNanos()).Seconds() + bytes := float64(stats.loadAPIBytesRX() + stats.loadAPIBytesTX()) data = append(data, []string{ k, whiteStyle.Render(humanize.IBytes(stats.loadAPIBytesRX())), whiteStyle.Render(humanize.IBytes(stats.loadAPIBytesTX())), whiteStyle.Render(fmt.Sprintf("%d", stats.loadAPICall())), whiteStyle.Render(fmt.Sprintf("%d", stats.loadAPIErrors())), + whiteStyle.Render(fmt.Sprintf("%.03f s", time.Duration(stats.loadAPIMinDurationNanos()).Seconds())), + whiteStyle.Render(fmt.Sprintf("%.03f s", time.Duration(stats.loadAPIMaxDurationNanos()).Seconds())), + whiteStyle.Render(fmt.Sprintf("%.03f s", time.Duration(stats.loadAPIDurationNanos()/stats.loadAPICall()).Seconds())), + whiteStyle.Render(fmt.Sprintf("%s/s", humanize.IBytes(uint64(bytes/secs)))), }) } sort.Slice(data, func(i, j int) bool { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/go.mod new/mc-20230929T164122Z/go.mod --- old/mc-20230922T050746Z/go.mod 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/go.mod 2023-09-29 18:41:22.000000000 +0200 @@ -46,7 +46,7 @@ github.com/gdamore/tcell/v2 v2.6.0 github.com/golang-jwt/jwt/v4 v4.5.0 github.com/juju/ratelimit v1.0.2 - github.com/minio/madmin-go/v3 v3.0.18 + github.com/minio/madmin-go/v3 v3.0.21 github.com/minio/pkg/v2 v2.0.2 github.com/muesli/reflow v0.3.0 github.com/navidys/tvxwidgets v0.3.0 @@ -99,7 +99,7 @@ github.com/modern-go/reflect2 v1.0.2 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/termenv v0.15.2 // indirect + github.com/muesli/termenv v0.15.2 github.com/philhofer/fwd v1.1.2 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230922T050746Z/go.sum new/mc-20230929T164122Z/go.sum --- old/mc-20230922T050746Z/go.sum 2023-09-22 07:07:46.000000000 +0200 +++ new/mc-20230929T164122Z/go.sum 2023-09-29 18:41:22.000000000 +0200 @@ -136,8 +136,8 @@ github.com/minio/colorjson v1.0.6/go.mod h1:LUXwS5ZGNb6Eh9f+t+3uJiowD3XsIWtsvTriUBeqgYs= github.com/minio/filepath v1.0.0 h1:fvkJu1+6X+ECRA6G3+JJETj4QeAYO9sV43I79H8ubDY= github.com/minio/filepath v1.0.0/go.mod h1:/nRZA2ldl5z6jT9/KQuvZcQlxZIMQoFFQPvEXx9T/Bw= -github.com/minio/madmin-go/v3 v3.0.18 h1:HuuuGf+uv6O3wlbx/VgIPjXGtVQXMrNk9qcrtE5VusU= -github.com/minio/madmin-go/v3 v3.0.18/go.mod h1:B2EgtEGrfWx+AkXv+OAcS6IHwoIJcd1p75QfDPSPd6Q= +github.com/minio/madmin-go/v3 v3.0.21 h1:54LroTtjkn60nvDMBHmCEMGcFQ3k3Yel74RaEu9n2cY= +github.com/minio/madmin-go/v3 v3.0.21/go.mod h1:B2EgtEGrfWx+AkXv+OAcS6IHwoIJcd1p75QfDPSPd6Q= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= github.com/minio/minio-go/v7 v7.0.63 h1:GbZ2oCvaUdgT5640WJOpyDhhDxvknAJU2/T3yurwcbQ= ++++++ mc.obsinfo ++++++ --- /var/tmp/diff_new_pack.jMfWdU/_old 2023-10-02 20:10:14.666956584 +0200 +++ /var/tmp/diff_new_pack.jMfWdU/_new 2023-10-02 20:10:14.670956728 +0200 @@ -1,5 +1,5 @@ name: mc -version: 20230922T050746Z -mtime: 1695359266 -commit: ae05d451739bb8cd35952f7cac0b11f60407cd52 +version: 20230929T164122Z +mtime: 1696005682 +commit: d47a2ba53a5e10cd1bc8b946c05f4cadb71d4ee3 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/minio-client/vendor.tar.gz /work/SRC/openSUSE:Factory/.minio-client.new.28202/vendor.tar.gz differ: char 5, line 1