Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fortio for openSUSE:Factory checked in at 2023-09-15 22:05:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fortio (Old) and /work/SRC/openSUSE:Factory/.fortio.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fortio" Fri Sep 15 22:05:39 2023 rev:50 rq:1111537 version:1.60.1 Changes: -------- --- /work/SRC/openSUSE:Factory/fortio/fortio.changes 2023-09-14 16:28:42.381099629 +0200 +++ /work/SRC/openSUSE:Factory/.fortio.new.1766/fortio.changes 2023-09-15 22:11:07.233246149 +0200 @@ -1,0 +2,7 @@ +Fri Sep 15 09:29:21 UTC 2023 - ka...@b1-systems.de + +- Update to version 1.60.1: + * Bump google.golang.org/grpc from 1.58.0 to 1.58.1 (#841) + * Bump fortio.org/version from 1.0.2 to 1.0.3 (#840) + +------------------------------------------------------------------- Old: ---- fortio-1.60.0.obscpio New: ---- fortio-1.60.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fortio.spec ++++++ --- /var/tmp/diff_new_pack.nEZASA/_old 2023-09-15 22:11:08.609295349 +0200 +++ /var/tmp/diff_new_pack.nEZASA/_new 2023-09-15 22:11:08.609295349 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: fortio -Version: 1.60.0 +Version: 1.60.1 Release: 0 Summary: Load testing library, command line tool, advanced echo server and web UI License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.nEZASA/_old 2023-09-15 22:11:08.645296636 +0200 +++ /var/tmp/diff_new_pack.nEZASA/_new 2023-09-15 22:11:08.649296779 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/fortio/fortio</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v1.60.0</param> + <param name="revision">v1.60.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.nEZASA/_old 2023-09-15 22:11:08.673297637 +0200 +++ /var/tmp/diff_new_pack.nEZASA/_new 2023-09-15 22:11:08.677297780 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/fortio/fortio</param> - <param name="changesrevision">616c1dbb73fdab150cd59a9a7b43a307d08ba212</param></service></servicedata> + <param name="changesrevision">dcad10f29dab524eeb5a94c3037a63d04f101310</param></service></servicedata> (No newline at EOF) ++++++ fortio-1.60.0.obscpio -> fortio-1.60.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.60.0/README.md new/fortio-1.60.1/README.md --- old/fortio-1.60.0/README.md 2023-09-14 02:04:22.000000000 +0200 +++ new/fortio-1.60.1/README.md 2023-09-14 22:05:42.000000000 +0200 @@ -1,4 +1,4 @@ -<!-- 1.60.0 --> +<!-- 1.60.1 --> # Fortio [](https://github.com/avelino/awesome-go#networking) @@ -60,13 +60,13 @@ The [releases](https://github.com/fortio/fortio/releases) page has binaries for many OS/architecture combinations (see assets): ```shell -curl -L https://github.com/fortio/fortio/releases/download/v1.60.0/fortio-linux_amd64-1.60.0.tgz \ +curl -L https://github.com/fortio/fortio/releases/download/v1.60.1/fortio-linux_amd64-1.60.1.tgz \ | sudo tar -C / -xvzpf - # or the debian package -wget https://github.com/fortio/fortio/releases/download/v1.60.0/fortio_1.60.0_amd64.deb -dpkg -i fortio_1.60.0_amd64.deb +wget https://github.com/fortio/fortio/releases/download/v1.60.1/fortio_1.60.1_amd64.deb +dpkg -i fortio_1.60.1_amd64.deb # or the rpm -rpm -i https://github.com/fortio/fortio/releases/download/v1.60.0/fortio-1.60.0-1.x86_64.rpm +rpm -i https://github.com/fortio/fortio/releases/download/v1.60.1/fortio-1.60.1-1.x86_64.rpm # and more, see assets in release page ``` @@ -76,7 +76,7 @@ brew install fortio ``` -On Windows, download https://github.com/fortio/fortio/releases/download/v1.60.0/fortio_win_1.60.0.zip and extract `fortio.exe` to any location, then using the Windows Command Prompt: +On Windows, download https://github.com/fortio/fortio/releases/download/v1.60.1/fortio_win_1.60.1.zip and extract `fortio.exe` to any location, then using the Windows Command Prompt: ``` fortio.exe server ``` @@ -128,7 +128,7 @@ <!-- use release/updateFlags.sh to update this section --> <pre> <!-- USAGE_START --> -ΦοÏÏίο 1.60.0 usage: +ΦοÏÏίο 1.60.1 usage: fortio command [flags] target where command is one of: load (load testing), server (starts ui, rest api, http-echo, redirect, proxies, tcp-echo, udp-echo and grpc ping servers), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.60.0/go.mod new/fortio-1.60.1/go.mod --- old/fortio-1.60.0/go.mod 2023-09-14 02:04:22.000000000 +0200 +++ new/fortio-1.60.1/go.mod 2023-09-14 22:05:42.000000000 +0200 @@ -10,11 +10,11 @@ fortio.org/scli v1.11.0 fortio.org/sets v1.0.3 fortio.org/testscript v0.3.1 - fortio.org/version v1.0.2 + fortio.org/version v1.0.3 github.com/golang/protobuf v1.5.3 github.com/google/uuid v1.3.1 golang.org/x/net v0.15.0 - google.golang.org/grpc v1.58.0 + google.golang.org/grpc v1.58.1 ) // Local dev of dependencies changes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fortio-1.60.0/go.sum new/fortio-1.60.1/go.sum --- old/fortio-1.60.0/go.sum 2023-09-14 02:04:22.000000000 +0200 +++ new/fortio-1.60.1/go.sum 2023-09-14 22:05:42.000000000 +0200 @@ -12,8 +12,8 @@ fortio.org/sets v1.0.3/go.mod h1:QZVj0r6KP/ZD9ebySW9SgxVNy/NjghUfyHW9NN+WU+4= fortio.org/testscript v0.3.1 h1:MmRO64AsmzaU1KlYMzAbotJIMKRGxD1XXssJnBRiMGQ= fortio.org/testscript v0.3.1/go.mod h1:7OJ+U4avooRNqc7p/VHKJadYgj9fA6+N0SbGU8FVWGs= -fortio.org/version v1.0.2 h1:8NwxdX58aoeKx7T5xAPO0xlUu1Hpk42nRz5s6e6eKZ0= -fortio.org/version v1.0.2/go.mod h1:2JQp9Ax+tm6QKiGuzR5nJY63kFeANcgrZ0osoQFDVm0= +fortio.org/version v1.0.3 h1:5gJ3plj6isAOMq52cI5ifo4cC+QHmJF76Wevc5Cp4x0= +fortio.org/version v1.0.3/go.mod h1:2JQp9Ax+tm6QKiGuzR5nJY63kFeANcgrZ0osoQFDVm0= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -37,8 +37,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb h1:Isk1sSH7bovx8Rti2wZK0UZF6oraBDK74uoyLEEVFN0= google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= -google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.58.1 h1:OL+Vz23DTtrrldqHK49FUOPHyY75rvFqJfXC84NYW58= +google.golang.org/grpc v1.58.1/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= ++++++ fortio.obsinfo ++++++ --- /var/tmp/diff_new_pack.nEZASA/_old 2023-09-15 22:11:08.833303358 +0200 +++ /var/tmp/diff_new_pack.nEZASA/_new 2023-09-15 22:11:08.837303501 +0200 @@ -1,5 +1,5 @@ name: fortio -version: 1.60.0 -mtime: 1694649862 -commit: 616c1dbb73fdab150cd59a9a7b43a307d08ba212 +version: 1.60.1 +mtime: 1694721942 +commit: dcad10f29dab524eeb5a94c3037a63d04f101310 ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/version/README.md new/vendor/fortio.org/version/README.md --- old/vendor/fortio.org/version/README.md 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/fortio.org/version/README.md 2023-09-15 11:29:33.000000000 +0200 @@ -9,6 +9,8 @@ Complete example in [sample/simpleMain.go](sample/simpleMain.go) +See also a tiny library using this one to reduce the repition in main programs: [fortio.org/cli](https://github.com/fortio/cli#cli) package. + Yielding: ```shell $ go install fortio.org/version/sample@latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/version/version.go new/vendor/fortio.org/version/version.go --- old/vendor/fortio.org/version/version.go 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/fortio.org/version/version.go 2023-09-15 11:29:33.000000000 +0200 @@ -40,12 +40,13 @@ return short } -func getVersion(binfo *debug.BuildInfo, path string) (short, sum, mainPath, base string) { +func getVersion(binfo *debug.BuildInfo, path string) (short, sum, mainPath, base string, isMain bool) { mainPath = binfo.Main.Path base = normalizeVersion(binfo.Main.Version) if path == "" || path == mainPath { sum = binfo.Main.Sum short = base + isMain = true return } // try to find the right module in deps @@ -71,9 +72,9 @@ log.Print("Error calling debug.ReadBuildInfo() for fortio version module") return } - short, sum, mainPath, base := getVersion(binfo, path) + short, sum, mainPath, base, isMain := getVersion(binfo, path) long = short + " " + sum + " " + binfo.GoVersion + " " + runtime.GOARCH + " " + runtime.GOOS - if short != base { + if !isMain { long = long + " (in " + mainPath + " " + base + ")" } full = fmt.Sprintf("%s\n%v", long, binfo.String()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/grpc/call.go new/vendor/google.golang.org/grpc/call.go --- old/vendor/google.golang.org/grpc/call.go 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/google.golang.org/grpc/call.go 2023-09-15 11:29:33.000000000 +0200 @@ -27,11 +27,6 @@ // // All errors returned by Invoke are compatible with the status package. func (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply any, opts ...CallOption) error { - if err := cc.idlenessMgr.OnCallBegin(); err != nil { - return err - } - defer cc.idlenessMgr.OnCallEnd() - // allow interceptor to see all applicable call options, which means those // configured as defaults from dial option as well as per-call options opts = combine(cc.dopts.callOptions, opts) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/grpc/clientconn.go new/vendor/google.golang.org/grpc/clientconn.go --- old/vendor/google.golang.org/grpc/clientconn.go 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/google.golang.org/grpc/clientconn.go 2023-09-15 11:29:33.000000000 +0200 @@ -1091,8 +1091,8 @@ ac.cancel() ac.ctx, ac.cancel = context.WithCancel(ac.cc.ctx) - // We have to defer here because GracefulClose => Close => onClose, which - // requires locking ac.mu. + // We have to defer here because GracefulClose => onClose, which requires + // locking ac.mu. if ac.transport != nil { defer ac.transport.GracefulClose() ac.transport = nil @@ -1680,16 +1680,7 @@ ac.updateConnectivityState(connectivity.Shutdown, nil) ac.cancel() ac.curAddr = resolver.Address{} - if err == errConnDrain && curTr != nil { - // GracefulClose(...) may be executed multiple times when - // i) receiving multiple GoAway frames from the server; or - // ii) there are concurrent name resolver/Balancer triggered - // address removal and GoAway. - // We have to unlock and re-lock here because GracefulClose => Close => onClose, which requires locking ac.mu. - ac.mu.Unlock() - curTr.GracefulClose() - ac.mu.Lock() - } + channelz.AddTraceEvent(logger, ac.channelzID, 0, &channelz.TraceEventDesc{ Desc: "Subchannel deleted", Severity: channelz.CtInfo, @@ -1703,6 +1694,29 @@ // being deleted right away. channelz.RemoveEntry(ac.channelzID) ac.mu.Unlock() + + // We have to release the lock before the call to GracefulClose/Close here + // because both of them call onClose(), which requires locking ac.mu. + if curTr != nil { + if err == errConnDrain { + // Close the transport gracefully when the subConn is being shutdown. + // + // GracefulClose() may be executed multiple times if: + // - multiple GoAway frames are received from the server + // - there are concurrent name resolver or balancer triggered + // address removal and GoAway + curTr.GracefulClose() + } else { + // Hard close the transport when the channel is entering idle or is + // being shutdown. In the case where the channel is being shutdown, + // closing of transports is also taken care of by cancelation of cc.ctx. + // But in the case where the channel is entering idle, we need to + // explicitly close the transports here. Instead of distinguishing + // between these two cases, it is simpler to close the transport + // unconditionally here. + curTr.Close(err) + } + } } func (ac *addrConn) getState() connectivity.State { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/grpc/stream.go new/vendor/google.golang.org/grpc/stream.go --- old/vendor/google.golang.org/grpc/stream.go 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/google.golang.org/grpc/stream.go 2023-09-15 11:29:33.000000000 +0200 @@ -158,11 +158,6 @@ // If none of the above happen, a goroutine and a context will be leaked, and grpc // will not call the optionally-configured stats handler with a stats.End message. func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) { - if err := cc.idlenessMgr.OnCallBegin(); err != nil { - return nil, err - } - defer cc.idlenessMgr.OnCallEnd() - // allow interceptor to see all applicable call options, which means those // configured as defaults from dial option as well as per-call options opts = combine(cc.dopts.callOptions, opts) @@ -179,6 +174,16 @@ } func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) { + // Start tracking the RPC for idleness purposes. This is where a stream is + // created for both streaming and unary RPCs, and hence is a good place to + // track active RPC count. + if err := cc.idlenessMgr.OnCallBegin(); err != nil { + return nil, err + } + // Add a calloption, to decrement the active call count, that gets executed + // when the RPC completes. + opts = append([]CallOption{OnFinish(func(error) { cc.idlenessMgr.OnCallEnd() })}, opts...) + if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok { // validate md if err := imetadata.Validate(md); err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/google.golang.org/grpc/version.go new/vendor/google.golang.org/grpc/version.go --- old/vendor/google.golang.org/grpc/version.go 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/google.golang.org/grpc/version.go 2023-09-15 11:29:33.000000000 +0200 @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.58.0" +const Version = "1.58.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2023-09-14 07:02:11.000000000 +0200 +++ new/vendor/modules.txt 2023-09-15 11:29:33.000000000 +0200 @@ -28,7 +28,7 @@ fortio.org/testscript/internal/os/execpath fortio.org/testscript/par fortio.org/testscript/testenv -# fortio.org/version v1.0.2 +# fortio.org/version v1.0.3 ## explicit; go 1.18 fortio.org/version # github.com/fsnotify/fsnotify v1.6.0 @@ -76,7 +76,7 @@ # google.golang.org/genproto/googleapis/rpc v0.0.0-20230913181813-007df8e322eb ## explicit; go 1.19 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.58.0 +# google.golang.org/grpc v1.58.1 ## explicit; go 1.19 google.golang.org/grpc google.golang.org/grpc/attributes