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 2024-01-30 18:25:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/minio-client (Old)
 and      /work/SRC/openSUSE:Factory/.minio-client.new.1815 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "minio-client"

Tue Jan 30 18:25:09 2024 rev:67 rq:1142616 version:20240128T162314Z

Changes:
--------
--- /work/SRC/openSUSE:Factory/minio-client/minio-client.changes        
2024-01-22 20:33:03.690669832 +0100
+++ /work/SRC/openSUSE:Factory/.minio-client.new.1815/minio-client.changes      
2024-01-30 18:25:23.557893485 +0100
@@ -1,0 +2,12 @@
+Mon Jan 29 17:40:18 UTC 2024 - opensuse_buildserv...@ojkastl.de
+
+- Update to version 20240128T162314Z:
+  * fix: remove prometheus metrics arbitrary body limit (#4832)
+  * feat: service restart/update provides now per node status
+    (#4827)
+  * Bump github.com/lestrrat-go/jwx from 1.2.27 to 1.2.28 (#4830)
+  * feat: add skip-errors to mc mirror (#4831)
+  * fix: allow -q by turning of pipe progress bar (#4828)
+  * Adding screen-256color to pager enabled terms (#4829)
+
+-------------------------------------------------------------------

Old:
----
  mc-20240118T070339Z.obscpio

New:
----
  mc-20240128T162314Z.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ minio-client.spec ++++++
--- /var/tmp/diff_new_pack.eDoctX/_old  2024-01-30 18:25:25.033946735 +0100
+++ /var/tmp/diff_new_pack.eDoctX/_new  2024-01-30 18:25:25.033946735 +0100
@@ -22,7 +22,7 @@
 %define binary_name minio-client
 
 Name:           minio-client
-Version:        20240118T070339Z
+Version:        20240128T162314Z
 Release:        0
 Summary:        Client for MinIO
 License:        AGPL-3.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.eDoctX/_old  2024-01-30 18:25:25.061947746 +0100
+++ /var/tmp/diff_new_pack.eDoctX/_new  2024-01-30 18:25:25.065947890 +0100
@@ -5,7 +5,7 @@
     <param name="exclude">.git</param>
     <param name="changesgenerate">enable</param>
     <param name="versionformat">@PARENT_TAG@</param>
-    <param name="revision">RELEASE.2024-01-18T07-03-39Z</param>
+    <param name="revision">RELEASE.2024-01-28T16-23-14Z</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-20240118T070339Z.obscpio</param>
+    <param name="archive">mc-20240128T162314Z.obscpio</param>
   </service>
 </services>
 

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.eDoctX/_old  2024-01-30 18:25:25.081948467 +0100
+++ /var/tmp/diff_new_pack.eDoctX/_new  2024-01-30 18:25:25.085948611 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/minio/mc</param>
-              <param 
name="changesrevision">bb25267eaadc0e025243b443a94ff33bde6302ad</param></service></servicedata>
+              <param 
name="changesrevision">ba9fc6a3075df6d8a413cc7e423645706aaefae1</param></service></servicedata>
 (No newline at EOF)
 

++++++ mc-20240118T070339Z.obscpio -> mc-20240128T162314Z.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-prometheus-metrics.go 
new/mc-20240128T162314Z/cmd/admin-prometheus-metrics.go
--- old/mc-20240118T070339Z/cmd/admin-prometheus-metrics.go     2024-01-18 
08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/cmd/admin-prometheus-metrics.go     2024-01-28 
17:23:14.000000000 +0100
@@ -18,15 +18,16 @@
 package cmd
 
 import (
+       "errors"
        "io"
        "net/http"
+       "os"
        "time"
 
        "github.com/minio/cli"
        json "github.com/minio/colorjson"
+       "github.com/minio/madmin-go/v3"
        "github.com/minio/mc/pkg/probe"
-       dto "github.com/prometheus/client_model/go"
-       "github.com/prometheus/prom2json"
 )
 
 var adminPrometheusMetricsCmd = cli.Command{
@@ -62,10 +63,7 @@
 `,
 }
 
-const (
-       metricsRespBodyLimit = 10 << 20 // 10 MiB
-       metricsEndPointRoot  = "/minio/v2/metrics/"
-)
+const metricsEndPointRoot = "/minio/v2/metrics/"
 
 // checkSupportMetricsSyntax - validate arguments passed by a user
 func checkSupportMetricsSyntax(ctx *cli.Context) {
@@ -105,7 +103,11 @@
        if e != nil {
                return e
        }
-       req.Header.Add("Authorization", "Bearer "+token)
+
+       if token != "" {
+               req.Header.Add("Authorization", "Bearer "+token)
+       }
+
        client := httpClient(60 * time.Second)
        resp, e := client.Do(req)
        if e != nil {
@@ -115,32 +117,29 @@
        defer resp.Body.Close()
 
        if resp.StatusCode == http.StatusOK {
-               printMsg(prometheusMetricsReader{Reader: 
io.LimitReader(resp.Body, metricsRespBodyLimit)})
+               printMsg(prometheusMetricsReader{Reader: resp.Body})
        }
-       return nil
+
+       return errors.New(resp.Status)
 }
 
 // JSON returns jsonified message
 func (pm prometheusMetricsReader) JSON() string {
-       mfChan := make(chan *dto.MetricFamily)
-       go func() {
-               fatalIf(probe.NewError(prom2json.ParseReader(pm.Reader, 
mfChan)), "Unable to parse Prometheus metrics.")
-       }()
-       result := []*prom2json.Family{}
-       for mf := range mfChan {
-               result = append(result, prom2json.NewFamily(mf))
-       }
-       jsonMessageBytes, e := json.MarshalIndent(result, "", " ")
+       results, e := madmin.ParsePrometheusResults(pm.Reader)
+       fatalIf(probe.NewError(e), "Unable to parse Prometheus metrics.")
+
+       jsonMessageBytes, e := json.MarshalIndent(results, "", " ")
        fatalIf(probe.NewError(e), "Unable to marshal into JSON.")
        return string(jsonMessageBytes)
 }
 
 // String - returns the string representation of the prometheus metrics
 func (pm prometheusMetricsReader) String() string {
-       respBytes, e := io.ReadAll(pm.Reader)
+       _, e := io.Copy(os.Stdout, pm.Reader)
+
        fatalIf(probe.NewError(e), "Unable to read Prometheus metrics.")
 
-       return string(respBytes)
+       return ""
 }
 
 // prometheusMetricsReader mirrors the MetricFamily proto message.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-freeze.go 
new/mc-20240128T162314Z/cmd/admin-service-freeze.go
--- old/mc-20240118T070339Z/cmd/admin-service-freeze.go 2024-01-18 
08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/cmd/admin-service-freeze.go 2024-01-28 
17:23:14.000000000 +0100
@@ -90,7 +90,7 @@
        fatalIf(err, "Unable to initialize admin connection.")
 
        // Freeze the specified MinIO server
-       fatalIf(probe.NewError(client.ServiceFreeze(globalContext)), "Unable to 
freeze the server.")
+       fatalIf(probe.NewError(client.ServiceFreezeV2(globalContext)), "Unable 
to freeze the server.")
 
        // Success..
        printMsg(serviceFreezeCommand{Status: "success", ServerURL: aliasedURL})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-restart.go 
new/mc-20240128T162314Z/cmd/admin-service-restart.go
--- old/mc-20240118T070339Z/cmd/admin-service-restart.go        2024-01-18 
08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/cmd/admin-service-restart.go        2024-01-28 
17:23:14.000000000 +0100
@@ -20,9 +20,12 @@
 import (
        "context"
        "fmt"
+       "strings"
        "time"
 
        "github.com/fatih/color"
+       "github.com/jedib0t/go-pretty/v6/table"
+       "github.com/jedib0t/go-pretty/v6/text"
        "github.com/minio/cli"
        json "github.com/minio/colorjson"
        "github.com/minio/madmin-go/v3"
@@ -30,13 +33,20 @@
        "github.com/minio/pkg/v2/console"
 )
 
+var serviceRestartFlag = []cli.Flag{
+       cli.BoolFlag{
+               Name:  "dry-run",
+               Usage: "do not attempt a restart, however verify the peer 
status",
+       },
+}
+
 var adminServiceRestartCmd = cli.Command{
        Name:         "restart",
        Usage:        "restart a MinIO cluster",
        Action:       mainAdminServiceRestart,
        OnUsageError: onUsageError,
        Before:       setGlobalsFromContext,
-       Flags:        globalFlags,
+       Flags:        append(serviceRestartFlag, globalFlags...),
        CustomHelpTemplate: `NAME:
   {{.HelpName}} - {{.Usage}}
 
@@ -54,13 +64,40 @@
 
 // serviceRestartCommand is container for service restart command success and 
failure messages.
 type serviceRestartCommand struct {
-       Status    string `json:"status"`
-       ServerURL string `json:"serverURL"`
+       Status    string                     `json:"status"`
+       ServerURL string                     `json:"serverURL"`
+       Result    madmin.ServiceActionResult `json:"result"`
 }
 
 // String colorized service restart command message.
 func (s serviceRestartCommand) String() string {
-       return console.Colorize("ServiceRestart", "Restart command successfully 
sent to `"+s.ServerURL+"`. Type Ctrl-C to quit or wait to follow the status of 
the restart process.")
+       var s1 strings.Builder
+       s1.WriteString("Restart command successfully sent to `" + s.ServerURL + 
"`. Type Ctrl-C to quit or wait to follow the status of the restart process.")
+
+       if len(s.Result.Results) > 0 {
+               s1.WriteString("\n")
+               var rows []table.Row
+               for _, peerRes := range s.Result.Results {
+                       errStr := tickCell
+                       if peerRes.Err != "" {
+                               errStr = peerRes.Err
+                       } else if len(peerRes.WaitingDrives) > 0 {
+                               errStr = fmt.Sprintf("%d drives are waiting for 
I/O and are offline, manual restart of OS is recommended", 
len(peerRes.WaitingDrives))
+                       }
+                       rows = append(rows, table.Row{peerRes.Host, errStr})
+               }
+
+               t := table.NewWriter()
+               t.SetOutputMirror(&s1)
+               t.SetColumnConfigs([]table.ColumnConfig{{Align: 
text.AlignCenter}})
+
+               t.AppendHeader(table.Row{"Host", "Status"})
+               t.AppendRows(rows)
+               t.SetStyle(table.StyleLight)
+               t.Render()
+       }
+
+       return console.Colorize("ServiceRestart", s1.String())
 }
 
 // JSON jsonified service restart command message.
@@ -123,10 +160,19 @@
        fatalIf(err, "Unable to initialize admin connection.")
 
        // Restart the specified MinIO server
-       fatalIf(probe.NewError(client.ServiceRestart(ctxt)), "Unable to restart 
the server.")
+       result, e := client.ServiceAction(ctxt, madmin.ServiceActionOpts{
+               Action: madmin.ServiceActionRestart,
+               DryRun: ctx.Bool("dry-run"),
+       })
+       if e != nil {
+               // Attempt an older API server might be old
+               //lint:ignore SA1019 Ignore the deprecation warnings
+               e = client.ServiceRestart(ctxt)
+       }
+       fatalIf(probe.NewError(e), "Unable to restart the server.")
 
        // Success..
-       printMsg(serviceRestartCommand{Status: "success", ServerURL: 
aliasedURL})
+       printMsg(serviceRestartCommand{Status: "success", ServerURL: 
aliasedURL, Result: result})
 
        // Start pinging the service until it is ready
 
@@ -146,36 +192,35 @@
        printProgress()
        mark = "."
 
-       timer := time.NewTimer(time.Second)
-       defer timer.Stop()
-
        t := time.Now()
        for {
+               healthCtx, healthCancel := context.WithTimeout(ctxt, 
2*time.Second)
+
+               // Fetch the health status of the specified MinIO server
+               healthResult, healthErr := anonClient.Healthy(healthCtx, 
madmin.HealthOpts{})
+               healthCancel()
+
+               switch {
+               case healthErr == nil && healthResult.Healthy:
+                       printMsg(serviceRestartMessage{
+                               Status:    "success",
+                               ServerURL: aliasedURL,
+                               TimeTaken: time.Since(t),
+                       })
+                       return nil
+               case healthErr == nil && !healthResult.Healthy:
+                       coloring = color.New(color.FgYellow)
+                       mark = "!"
+                       fallthrough
+               default:
+                       printProgress()
+               }
+
                select {
                case <-ctxt.Done():
                        return ctxt.Err()
-               case <-timer.C:
-                       healthCtx, healthCancel := context.WithTimeout(ctxt, 
3*time.Second)
-                       // Fetch the health status of the specified MinIO server
-                       healthResult, healthErr := 
anonClient.Healthy(healthCtx, madmin.HealthOpts{})
-                       healthCancel()
-                       switch {
-                       case healthErr == nil && healthResult.Healthy:
-                               printMsg(serviceRestartMessage{
-                                       Status:    "success",
-                                       ServerURL: aliasedURL,
-                                       TimeTaken: time.Since(t),
-                               })
-                               return nil
-                       case healthErr == nil && !healthResult.Healthy:
-                               coloring = color.New(color.FgYellow)
-                               mark = "!"
-                               fallthrough
-                       default:
-                               printProgress()
-                       }
-
-                       timer.Reset(time.Second)
+               default:
+                       time.Sleep(500 * time.Millisecond)
                }
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-stop.go 
new/mc-20240128T162314Z/cmd/admin-service-stop.go
--- old/mc-20240118T070339Z/cmd/admin-service-stop.go   2024-01-18 
08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/cmd/admin-service-stop.go   2024-01-28 
17:23:14.000000000 +0100
@@ -32,6 +32,7 @@
        OnUsageError: onUsageError,
        Before:       setGlobalsFromContext,
        Flags:        globalFlags,
+       Hidden:       true, // this command is hidden on purpose, please do not 
enable it.
        CustomHelpTemplate: `NAME:
   {{.HelpName}} - {{.Usage}}
 
@@ -88,7 +89,7 @@
        fatalIf(err, "Unable to initialize admin connection.")
 
        // Stop the specified MinIO server
-       fatalIf(probe.NewError(client.ServiceStop(globalContext)), "Unable to 
stop the server.")
+       fatalIf(probe.NewError(client.ServiceStopV2(globalContext)), "Unable to 
stop the server.")
 
        // Success..
        printMsg(serviceStopMessage{Status: "success", ServerURL: aliasedURL})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-unfreeze.go 
new/mc-20240128T162314Z/cmd/admin-service-unfreeze.go
--- old/mc-20240118T070339Z/cmd/admin-service-unfreeze.go       2024-01-18 
08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/cmd/admin-service-unfreeze.go       2024-01-28 
17:23:14.000000000 +0100
@@ -89,6 +89,7 @@
        fatalIf(err, "Unable to initialize admin connection.")
 
        // Unfreeze the specified MinIO server
+       //lint:ignore SA1019 Ignore the deprecation warnings
        fatalIf(probe.NewError(client.ServiceUnfreeze(globalContext)), "Unable 
to unfreeze the server.")
 
        // Success..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-update.go 
new/mc-20240128T162314Z/cmd/admin-update.go
--- old/mc-20240118T070339Z/cmd/admin-update.go 2024-01-18 08:03:39.000000000 
+0100
+++ new/mc-20240128T162314Z/cmd/admin-update.go 2024-01-28 17:23:14.000000000 
+0100
@@ -24,8 +24,11 @@
        "strings"
 
        "github.com/fatih/color"
+       "github.com/jedib0t/go-pretty/v6/table"
+       "github.com/jedib0t/go-pretty/v6/text"
        "github.com/minio/cli"
        json "github.com/minio/colorjson"
+       "github.com/minio/madmin-go/v3"
        "github.com/minio/mc/pkg/probe"
        "github.com/minio/pkg/v2/console"
 )
@@ -64,22 +67,37 @@
 
 // serverUpdateMessage is container for ServerUpdate success and failure 
messages.
 type serverUpdateMessage struct {
-       Status         string `json:"status"`
-       ServerURL      string `json:"serverURL"`
-       CurrentVersion string `json:"currentVersion"`
-       UpdatedVersion string `json:"updatedVersion"`
+       Status             string                      `json:"status"`
+       ServerURL          string                      `json:"serverURL"`
+       ServerUpdateStatus madmin.ServerUpdateStatusV2 
`json:"serverUpdateStatus"`
 }
 
 // String colorized serverUpdate message.
 func (s serverUpdateMessage) String() string {
-       if s.CurrentVersion != s.UpdatedVersion {
-               return console.Colorize("ServerUpdate",
-                       fmt.Sprintf("Server `%s` updated successfully from %s 
to %s",
-                               s.ServerURL, s.CurrentVersion, 
s.UpdatedVersion))
+       var rows []table.Row
+       for _, peerRes := range s.ServerUpdateStatus.Results {
+               errStr := fmt.Sprintf("upgraded server from %s to %s: %s", 
peerRes.CurrentVersion, peerRes.UpdatedVersion, tickCell)
+               if peerRes.Err != "" {
+                       errStr = peerRes.Err
+               } else if len(peerRes.WaitingDrives) > 0 {
+                       errStr = fmt.Sprintf("%d drives are hung, process was 
upgraded. However OS reboot is recommended.", len(peerRes.WaitingDrives))
+               }
+               rows = append(rows, table.Row{peerRes.Host, errStr})
        }
-       return console.Colorize("ServerUpdate",
-               fmt.Sprintf("Server `%s` already running the most recent 
version %s of MinIO",
-                       s.ServerURL, s.CurrentVersion))
+
+       t := table.NewWriter()
+       var s1 strings.Builder
+       s1.WriteString("Server update request sent successfully `" + 
s.ServerURL + "`\n")
+
+       t.SetOutputMirror(&s1)
+       t.SetColumnConfigs([]table.ColumnConfig{{Align: text.AlignCenter}})
+
+       t.AppendHeader(table.Row{"Host", "Status"})
+       t.AppendRows(rows)
+       t.SetStyle(table.StyleLight)
+       t.Render()
+
+       return console.Colorize("ServiceRestart", s1.String())
 }
 
 // JSON jsonified server update message.
@@ -128,15 +146,17 @@
 
        // Update the specified MinIO server, optionally also
        // with the provided update URL.
-       us, e := client.ServerUpdate(globalContext, updateURL)
+       us, e := client.ServerUpdateV2(globalContext, madmin.ServerUpdateOpts{
+               DryRun:    ctx.Bool("dry-run"),
+               UpdateURL: updateURL,
+       })
        fatalIf(probe.NewError(e), "Unable to update the server.")
 
        // Success..
        printMsg(serverUpdateMessage{
-               Status:         "success",
-               ServerURL:      aliasedURL,
-               CurrentVersion: us.CurrentVersion,
-               UpdatedVersion: us.UpdatedVersion,
+               Status:             "success",
+               ServerURL:          aliasedURL,
+               ServerUpdateStatus: us,
        })
        return nil
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/globals.go 
new/mc-20240128T162314Z/cmd/globals.go
--- old/mc-20240118T070339Z/cmd/globals.go      2024-01-18 08:03:39.000000000 
+0100
+++ new/mc-20240128T162314Z/cmd/globals.go      2024-01-28 17:23:14.000000000 
+0100
@@ -90,10 +90,11 @@
        globalPagerDisabled     = false
        globalHelpPager         *termPager
        globalPagerEnabledTerms = map[string]bool{
-               "xterm":          true,
-               "xterm-256color": true,
-               "tmux":           true,
-               "tmux-256color":  true,
+               "screen-256color": true,
+               "xterm":           true,
+               "xterm-256color":  true,
+               "tmux":            true,
+               "tmux-256color":   true,
        }
 
        // CA root certificates, a nil value means system certs pool will be 
used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/humanized-duration.go 
new/mc-20240128T162314Z/cmd/humanized-duration.go
--- old/mc-20240118T070339Z/cmd/humanized-duration.go   2024-01-18 
08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/cmd/humanized-duration.go   2024-01-28 
17:23:14.000000000 +0100
@@ -25,16 +25,19 @@
 
 // humanizedDuration container to capture humanized time.
 type humanizedDuration struct {
-       Days    int64 `json:"days,omitempty"`
-       Hours   int64 `json:"hours,omitempty"`
-       Minutes int64 `json:"minutes,omitempty"`
-       Seconds int64 `json:"seconds,omitempty"`
+       Days         int64 `json:"days,omitempty"`
+       Hours        int64 `json:"hours,omitempty"`
+       Minutes      int64 `json:"minutes,omitempty"`
+       Seconds      int64 `json:"seconds,omitempty"`
+       MilliSeconds int64 `json:"milliSeconds,omitempty"`
 }
 
 // StringShort() humanizes humanizedDuration to human readable short format.
 // This does not print at seconds.
 func (r humanizedDuration) StringShort() string {
        switch {
+       case r.Days == 0 && r.Hours == 0 && r.Minutes == 0 && r.Seconds == 0:
+               return fmt.Sprintf("%d milliseconds", r.MilliSeconds)
        case r.Days == 0 && r.Hours == 0 && r.Minutes == 0:
                return fmt.Sprintf("%d seconds", r.Seconds)
        case r.Days == 0 && r.Hours == 0:
@@ -50,6 +53,10 @@
 
 // String() humanizes humanizedDuration to human readable,
 func (r humanizedDuration) String() string {
+       if r.Days == 0 && r.Hours == 0 && r.Minutes == 0 && r.Seconds == 0 {
+               return fmt.Sprintf("%d milliseconds", r.MilliSeconds)
+       }
+
        if r.Days == 0 && r.Hours == 0 && r.Minutes == 0 {
                return fmt.Sprintf("%d seconds", r.Seconds)
        }
@@ -65,6 +72,10 @@
 // timeDurationToHumanizedDuration convert golang time.Duration to a custom 
more readable humanizedDuration.
 func timeDurationToHumanizedDuration(duration time.Duration) humanizedDuration 
{
        r := humanizedDuration{}
+       if duration.Milliseconds() < 1000 {
+               r.MilliSeconds = int64(duration.Milliseconds())
+               return r
+       }
        if duration.Seconds() < 60.0 {
                r.Seconds = int64(duration.Seconds())
                return r
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/mirror-main.go 
new/mc-20240128T162314Z/cmd/mirror-main.go
--- old/mc-20240118T070339Z/cmd/mirror-main.go  2024-01-18 08:03:39.000000000 
+0100
+++ new/mc-20240128T162314Z/cmd/mirror-main.go  2024-01-28 17:23:14.000000000 
+0100
@@ -133,6 +133,10 @@
                        Name:  "summary",
                        Usage: "print a summary of the mirror session",
                },
+               cli.BoolFlag{
+                       Name:  "skip-errors",
+                       Usage: "skip any errors when mirroring",
+               },
        }
 )
 
@@ -545,8 +549,12 @@
                                                ignoreErr = true
                                        }
                                        if !ignoreErr {
-                                               
errorIf(sURLs.Error.Trace(sURLs.SourceContent.URL.String()),
-                                                       fmt.Sprintf("Failed to 
copy `%s`.", sURLs.SourceContent.URL.String()))
+                                               if !mj.opts.skipErrors {
+                                                       
errorIf(sURLs.Error.Trace(sURLs.SourceContent.URL.String()),
+                                                               
fmt.Sprintf("Failed to copy `%s`.", sURLs.SourceContent.URL.String()))
+                                               } else {
+                                                       console.Infof("[Warn] 
Failed to copy `%s`. %s", sURLs.SourceContent.URL.String(), 
sURLs.Error.Trace(sURLs.SourceContent.URL.String()))
+                                               }
                                        }
                                }
                        case sURLs.TargetContent != nil:
@@ -569,7 +577,7 @@
                                mirrorFailedOps.Inc()
                                errDuringMirror = true
                                // Quit mirroring if --watch and 
--active-active are not passed
-                               if !mj.opts.activeActive && !mj.opts.isWatch {
+                               if !mj.opts.skipErrors && !mj.opts.activeActive 
&& !mj.opts.isWatch {
                                        cancel()
                                        cancelInProgress = true
                                }
@@ -955,6 +963,7 @@
                isRetriable:           cli.Bool("retry"),
                md5:                   cli.Bool("md5"),
                disableMultipart:      cli.Bool("disable-multipart"),
+               skipErrors:            cli.Bool("skip-errors"),
                excludeOptions:        cli.StringSlice("exclude"),
                excludeStorageClasses: cli.StringSlice("exclude-storageclass"),
                olderThan:             cli.String("older-than"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/mirror-url.go 
new/mc-20240128T162314Z/cmd/mirror-url.go
--- old/mc-20240118T070339Z/cmd/mirror-url.go   2024-01-18 08:03:39.000000000 
+0100
+++ new/mc-20240128T162314Z/cmd/mirror-url.go   2024-01-28 17:23:14.000000000 
+0100
@@ -229,6 +229,7 @@
        isWatch, isRemove, isMetadata         bool
        isRetriable                           bool
        isSummary                             bool
+       skipErrors                            bool
        excludeOptions, excludeStorageClasses []string
        encKeyDB                              map[string][]prefixSSEPair
        md5, disableMultipart                 bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/cmd/pipe-main.go 
new/mc-20240128T162314Z/cmd/pipe-main.go
--- old/mc-20240118T070339Z/cmd/pipe-main.go    2024-01-18 08:03:39.000000000 
+0100
+++ new/mc-20240128T162314Z/cmd/pipe-main.go    2024-01-28 17:23:14.000000000 
+0100
@@ -109,7 +109,7 @@
 `,
 }
 
-func pipe(ctx *cli.Context, targetURL string, encKeyDB 
map[string][]prefixSSEPair, meta map[string]string) *probe.Error {
+func pipe(ctx *cli.Context, targetURL string, encKeyDB 
map[string][]prefixSSEPair, meta map[string]string, quiet bool) *probe.Error {
        // If possible increase the pipe buffer size
        if e := increasePipeBufferSize(os.Stdin, ctx.Int("pipe-max-size")); e 
!= nil {
                fatalIf(probe.NewError(e), "Unable to increase custom 
pipe-max-size")
@@ -151,9 +151,15 @@
                concurrentStream: ctx.IsSet("concurrent"),
        }
 
-       pg := newProgressBar(0)
+       var reader io.Reader
+       if !quiet {
+               pg := newProgressBar(0)
+               reader = io.TeeReader(os.Stdin, pg)
+       } else {
+               reader = os.Stdin
+       }
 
-       _, err := putTargetStreamWithURL(targetURL, io.TeeReader(os.Stdin, pg), 
-1, opts)
+       _, err := putTargetStreamWithURL(targetURL, reader, -1, opts)
        // TODO: See if this check is necessary.
        switch e := err.ToGoError().(type) {
        case *os.PathError:
@@ -183,6 +189,9 @@
        // validate pipe input arguments.
        checkPipeSyntax(ctx)
 
+       // globalQuiet is true for no window size to get. We just need --quiet 
here.
+       quiet := ctx.IsSet("quiet")
+
        meta := map[string]string{}
        if attr := ctx.String("attr"); attr != "" {
                meta, err = getMetaDataEntry(attr)
@@ -192,12 +201,12 @@
                meta["X-Amz-Tagging"] = tags
        }
        if len(ctx.Args()) == 0 {
-               err = pipe(ctx, "", nil, meta)
+               err = pipe(ctx, "", nil, meta, quiet)
                fatalIf(err.Trace("stdout"), "Unable to write to one or more 
targets.")
        } else {
                // extract URLs.
                URLs := ctx.Args()
-               err = pipe(ctx, URLs[0], encKeyDB, meta)
+               err = pipe(ctx, URLs[0], encKeyDB, meta, quiet)
                fatalIf(err.Trace(URLs[0]), "Unable to write to one or more 
targets.")
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/go.mod 
new/mc-20240128T162314Z/go.mod
--- old/mc-20240118T070339Z/go.mod      2024-01-18 08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/go.mod      2024-01-28 17:23:14.000000000 +0100
@@ -46,7 +46,7 @@
        github.com/gdamore/tcell/v2 v2.7.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.37
+       github.com/minio/madmin-go/v3 v3.0.41
        github.com/minio/pkg/v2 v2.0.7
        github.com/muesli/reflow v0.3.0
        github.com/navidys/tvxwidgets v0.4.1
@@ -92,7 +92,7 @@
        github.com/lestrrat-go/blackmagic v1.0.2 // indirect
        github.com/lestrrat-go/httpcc v1.0.1 // indirect
        github.com/lestrrat-go/iter v1.0.2 // indirect
-       github.com/lestrrat-go/jwx v1.2.27 // indirect
+       github.com/lestrrat-go/jwx v1.2.28 // indirect
        github.com/lestrrat-go/option v1.0.1 // indirect
        github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
        github.com/lufia/plan9stats v0.0.0-20231016141302-07b5767bb0ed // 
indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mc-20240118T070339Z/go.sum 
new/mc-20240128T162314Z/go.sum
--- old/mc-20240118T070339Z/go.sum      2024-01-18 08:03:39.000000000 +0100
+++ new/mc-20240128T162314Z/go.sum      2024-01-28 17:23:14.000000000 +0100
@@ -104,8 +104,8 @@
 github.com/lestrrat-go/httpcc v1.0.1/go.mod 
h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
 github.com/lestrrat-go/iter v1.0.2 
h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=
 github.com/lestrrat-go/iter v1.0.2/go.mod 
h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
-github.com/lestrrat-go/jwx v1.2.27 
h1:cvnTnda/YzdyFuWdEAMkI6BsLtItSrASEVCI3C/IUEQ=
-github.com/lestrrat-go/jwx v1.2.27/go.mod 
h1:Stob9LjSqR3lOmNdxF0/TvZo60V3hUGv8Fr7Bwzla3k=
+github.com/lestrrat-go/jwx v1.2.28 
h1:uadI6o0WpOVrBSf498tRXZIwPpEtLnR9CvqPFXeI5sA=
+github.com/lestrrat-go/jwx v1.2.28/go.mod 
h1:nF+91HEMh/MYFVwKPl5HHsBGMPscqbQb+8IDQdIazP8=
 github.com/lestrrat-go/option v1.0.0/go.mod 
h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
 github.com/lestrrat-go/option v1.0.1 
h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=
 github.com/lestrrat-go/option v1.0.1/go.mod 
h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
@@ -142,8 +142,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.37 
h1:u8gl6xg6Vt+LLwes/8rJhAq2wtpIRWRULptNVQtH9JE=
-github.com/minio/madmin-go/v3 v3.0.37/go.mod 
h1:4QN2NftLSV7MdlT50dkrenOMmNVHluxTvlqJou3hte8=
+github.com/minio/madmin-go/v3 v3.0.41 
h1:9pU7xW51cn8Ixy8ftaRfp4SbHtnhEPlwU6mMA9KwwB8=
+github.com/minio/madmin-go/v3 v3.0.41/go.mod 
h1:4QN2NftLSV7MdlT50dkrenOMmNVHluxTvlqJou3hte8=
 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.66 
h1:bnTOXOHjOqv/gcMuiVbN9o2ngRItvqE774dG9nq0Dzw=
@@ -278,7 +278,6 @@
 golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod 
h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.16.0/go.mod 
h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
 golang.org/x/crypto v0.17.0/go.mod 
h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=

++++++ mc.obsinfo ++++++
--- /var/tmp/diff_new_pack.eDoctX/_old  2024-01-30 18:25:25.421960733 +0100
+++ /var/tmp/diff_new_pack.eDoctX/_new  2024-01-30 18:25:25.421960733 +0100
@@ -1,5 +1,5 @@
 name: mc
-version: 20240118T070339Z
-mtime: 1705561419
-commit: bb25267eaadc0e025243b443a94ff33bde6302ad
+version: 20240128T162314Z
+mtime: 1706458994
+commit: ba9fc6a3075df6d8a413cc7e423645706aaefae1
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/minio-client/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.minio-client.new.1815/vendor.tar.gz differ: char 5, 
line 1

Reply via email to