From 905490bac53aedeb7260013d5bc9faef51664d95 Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Thu, 27 Mar 2025 21:09:10 +0300 Subject: [PATCH 01/14] PT-2424 - Typo in pt-table-checksum error message "--resume and --no-empty-replicate-table are mutually exclusive" - Fixed typo - Added test case --- bin/pt-table-checksum | 4 ++-- t/pt-table-checksum/bugs.t | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/bin/pt-table-checksum b/bin/pt-table-checksum index 8892fbeb..e262682e 100755 --- a/bin/pt-table-checksum +++ b/bin/pt-table-checksum @@ -10272,11 +10272,11 @@ sub main { if ( $o->get('truncate-replicate-table') && $o->get('resume') ) { - die "--resume and truncate-replicate-table are mutually exclusive"; + die "--resume and truncate-replicate-table are mutually exclusive"; } if ( $o->get('truncate-replicate-table') && !$o->get('empty-replicate-table') ) { - die "--resume and --no-empty-replicate-table are mutually exclusive"; + die "--truncate-replicate-table and --no-empty-replicate-table are mutually exclusive"; } # ######################################################################## diff --git a/t/pt-table-checksum/bugs.t b/t/pt-table-checksum/bugs.t index 34edfe27..c8f4127d 100644 --- a/t/pt-table-checksum/bugs.t +++ b/t/pt-table-checksum/bugs.t @@ -378,6 +378,29 @@ is( diag(`/tmp/12346/stop >/dev/null`); diag(`/tmp/12346/start >/dev/null`); +# ############################################################################# +# typo in pt-table-checksum error message +# https://perconadev.atlassian.net/browse/PT-2424 +# ############################################################################# + +$output = output(sub { + pt_table_checksum::main($source_dsn, + qw(--no-empty-replicate-table --truncate-replicate-table) + )}, + stderr => 1, +); + +unlike( + $output, + qr/--resume and --no-empty-replicate-table are mutually exclusive/, + "PT-2424: no typo in the error message" +); + +like( + $output, + qr/--truncate-replicate-table and --no-empty-replicate-table are mutually exclusive/, + "PT-2424: correct error message" +); # # ############################################################################# From e940d154c0ca4a9d790276d7244847661e848559 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Apr 2025 23:19:56 +0000 Subject: [PATCH 02/14] build(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 Bumps [golang.org/x/net](https://github.com/golang/net) from 0.36.0 to 0.38.0. - [Commits](https://github.com/golang/net/compare/v0.36.0...v0.38.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-version: 0.38.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8b175321..bf30b962 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,7 @@ require ( github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sync v0.12.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/term v0.30.0 // indirect diff --git a/go.sum b/go.sum index 5a3b5115..e7c75803 100644 --- a/go.sum +++ b/go.sum @@ -146,8 +146,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From d2db8f5789dc3b63d74c0c7ab6ad230ca92d82f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Kudzia?= <30438339+pakud@users.noreply.github.com> Date: Thu, 17 Apr 2025 14:11:01 +0200 Subject: [PATCH 03/14] Update pt-query-digest pt-query-digest - fixing documentation for --output secure-slowlog option --- bin/pt-query-digest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/pt-query-digest b/bin/pt-query-digest index f6bf5d52..c2955cb8 100755 --- a/bin/pt-query-digest +++ b/bin/pt-query-digest @@ -16258,12 +16258,12 @@ type: string; default: report How to format and print the query analysis results. Accepted values are: VALUE FORMAT - ======= =============================== + ======= ====================================== report Standard query analysis report slowlog MySQL slow log json JSON, one array per query class json-anon JSON without example queries - secure-slowlog JSON without example queries + secure-slowlog MySQL slow log with anonymized queries The entire C output can be disabled by specifying C<--no-report> (see L<"--[no]report">), and its sections can be disabled or rearranged From b98ec7baa7d4c25bb15b7debbfb44527b1d98867 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 3 May 2025 07:33:35 +0000 Subject: [PATCH 04/14] fix: requirements-docbuild.txt to reduce vulnerabilities The following vulnerabilities are fixed by pinning transitive dependencies: - https://snyk.io/vuln/SNYK-PYTHON-SETUPTOOLS-9964606 --- requirements-docbuild.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-docbuild.txt b/requirements-docbuild.txt index 6e56a4f9..d04d4306 100644 --- a/requirements-docbuild.txt +++ b/requirements-docbuild.txt @@ -17,5 +17,5 @@ certifi>=2024.7.4 # not directly required, pinned by Snyk to avoid a vulnerabili jinja2>=3.1.6 # not directly required, pinned by Snyk to avoid a vulnerability pygments>=2.15.0 # not directly required, pinned by Snyk to avoid a vulnerability requests>=2.31.0 # not directly required, pinned by Snyk to avoid a vulnerability -setuptools>=70.0.0 # not directly required, pinned by Snyk to avoid a vulnerability +setuptools>=78.1.1 # not directly required, pinned by Snyk to avoid a vulnerability idna>=3.7 # not directly required, pinned by Snyk to avoid a vulnerability From 2383a399a69795226a522a1ee450240f0d4d53f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 09:45:27 +0000 Subject: [PATCH 05/14] build(deps): bump k8s.io/api from 0.32.3 to 0.33.1 Bumps [k8s.io/api](https://github.com/kubernetes/api) from 0.32.3 to 0.33.1. - [Commits](https://github.com/kubernetes/api/compare/v0.32.3...v0.33.1) --- updated-dependencies: - dependency-name: k8s.io/api dependency-version: 0.33.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 12 ++++++------ go.sum | 25 +++++++++++++------------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index 8b175321..c47d4ff5 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/percona/percona-toolkit -go 1.23.4 +go 1.24.0 toolchain go1.24.1 @@ -33,7 +33,7 @@ require ( golang.org/x/exp v0.0.0-20230321023759-10a507213a29 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.32.3 + k8s.io/api v0.33.1 k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 ) @@ -45,7 +45,6 @@ require ( github.com/go-ole/go-ole v1.2.6 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/gofuzz v1.2.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.16.7 // indirect github.com/kr/text v0.2.0 // indirect @@ -62,16 +61,17 @@ require ( github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - golang.org/x/net v0.36.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sync v0.12.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/term v0.30.0 // indirect golang.org/x/text v0.23.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apimachinery v0.32.3 // indirect + k8s.io/apimachinery v0.33.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/go.sum b/go.sum index 5a3b5115..805a5aae 100644 --- a/go.sum +++ b/go.sum @@ -41,8 +41,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= @@ -86,8 +84,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= @@ -146,8 +144,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -205,17 +203,20 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/api v0.33.1 h1:tA6Cf3bHnLIrUK4IqEgb2v++/GYUtqiu9sRVk3iBXyw= +k8s.io/api v0.33.1/go.mod h1:87esjTn9DRSRTD4fWMXamiXxJhpOIREjWOSjsW1kEHw= +k8s.io/apimachinery v0.33.1 h1:mzqXWV8tW9Rw4VeW9rEkqvnxj59k1ezDUl20tFK/oM4= +k8s.io/apimachinery v0.33.1/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= +sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 6e7a867fed7dda84d7a634ea3c497e02f21b8f15 Mon Sep 17 00:00:00 2001 From: IMP <27162227+impimp@users.noreply.github.com> Date: Fri, 30 May 2025 14:24:03 +0200 Subject: [PATCH 06/14] PT-2453: Add -skip-pod-summary for pt-k8s-debug-collector In some cases, collecting additional data from pods is not needed and, due to the current tool design, can cause significant delays. This commit introduces a workaround to skip such collection when it's not required. --- .../pt-k8s-debug-collector/dumper/dumper.go | 64 ++++++++++--------- src/go/pt-k8s-debug-collector/main.go | 4 +- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/src/go/pt-k8s-debug-collector/dumper/dumper.go b/src/go/pt-k8s-debug-collector/dumper/dumper.go index 61b7d07f..a5e2958e 100644 --- a/src/go/pt-k8s-debug-collector/dumper/dumper.go +++ b/src/go/pt-k8s-debug-collector/dumper/dumper.go @@ -28,31 +28,33 @@ type sslSecret struct { // Dumper struct is for dumping cluster type Dumper struct { - cmd string - kubeconfig string - resources []string - filePaths []string - fileContainer string - namespace string - location string - errors string - mode int64 - crType string - forwardport string - sslSecrets []sslSecret + cmd string + kubeconfig string + resources []string + filePaths []string + fileContainer string + namespace string + location string + errors string + mode int64 + crType string + forwardport string + sslSecrets []sslSecret + skipPodSummary bool } var resourcesRe = regexp.MustCompile(`(\w+\.(\w+).percona\.com)`) // New return new Dumper object -func New(location, namespace, resource string, kubeconfig string, forwardport string) Dumper { +func New(location, namespace, resource string, kubeconfig string, forwardport string, skipPodSummary bool) Dumper { d := Dumper{ - cmd: "kubectl", - kubeconfig: kubeconfig, - location: "cluster-dump", - mode: int64(0o777), - namespace: namespace, - forwardport: forwardport, + cmd: "kubectl", + kubeconfig: kubeconfig, + location: "cluster-dump", + mode: int64(0o777), + namespace: namespace, + forwardport: forwardport, + skipPodSummary: skipPodSummary, } resources := []string{ "pods", @@ -352,18 +354,20 @@ func (d *Dumper) DumpCluster() error { crName = pod.Labels["app.kubernetes.io/instance"] } // Get summary - output, err = d.getPodSummary(resourceType(d.crType), pod.Name, crName, ns.Name) - if err != nil { - d.logError(err.Error(), d.crType, pod.Name) - err = addToArchive(location, d.mode, []byte(err.Error()), tw) + if !d.skipPodSummary { + output, err = d.getPodSummary(resourceType(d.crType), pod.Name, crName, ns.Name) if err != nil { - log.Printf("Error: create summary errors archive for pod %s in namespace %s: %v", pod.Name, ns.Name, err) - } - } else { - err = addToArchive(location, d.mode, output, tw) - if err != nil { - d.logError(err.Error(), "create summary archive for pod "+pod.Name) - log.Printf("Error: create summary archive for pod %s: %v", pod.Name, err) + d.logError(err.Error(), d.crType, pod.Name) + err = addToArchive(location, d.mode, []byte(err.Error()), tw) + if err != nil { + log.Printf("Error: create summary errors archive for pod %s in namespace %s: %v", pod.Name, ns.Name, err) + } + } else { + err = addToArchive(location, d.mode, output, tw) + if err != nil { + d.logError(err.Error(), "create summary archive for pod "+pod.Name) + log.Printf("Error: create summary archive for pod %s: %v", pod.Name, err) + } } } diff --git a/src/go/pt-k8s-debug-collector/main.go b/src/go/pt-k8s-debug-collector/main.go index db7a8005..71d95dae 100644 --- a/src/go/pt-k8s-debug-collector/main.go +++ b/src/go/pt-k8s-debug-collector/main.go @@ -28,6 +28,7 @@ func main() { kubeconfig := "" forwardport := "" version := false + skipPodSummary := false flag.StringVar(&namespace, "namespace", "", "Namespace for collecting data. If empty data will be collected from all namespaces") flag.StringVar(&resource, "resource", "auto", "Collect data, specific to the resource. Supported values: pxc, psmdb, pg, pgv2, ps, none, auto") @@ -35,6 +36,7 @@ func main() { flag.StringVar(&kubeconfig, "kubeconfig", "", "Path to kubeconfig") flag.StringVar(&forwardport, "forwardport", "", "Port to use for port forwarding") flag.BoolVar(&version, "version", false, "Print version") + flag.BoolVar(&skipPodSummary, "skip-pod-summary", false, "Skip pod summary collection") flag.Parse() if version { @@ -50,7 +52,7 @@ func main() { resource += "/" + clusterName } - d := dumper.New("", namespace, resource, kubeconfig, forwardport) + d := dumper.New("", namespace, resource, kubeconfig, forwardport, skipPodSummary) log.Println("Start collecting cluster data") err := d.DumpCluster() From a0a1e1decf704a0a4e9ed27ab64b36763c885f2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 09:40:20 +0000 Subject: [PATCH 07/14] build(deps): bump go.mongodb.org/mongo-driver from 1.17.3 to 1.17.4 Bumps [go.mongodb.org/mongo-driver](https://github.com/mongodb/mongo-go-driver) from 1.17.3 to 1.17.4. - [Release notes](https://github.com/mongodb/mongo-go-driver/releases) - [Commits](https://github.com/mongodb/mongo-go-driver/compare/v1.17.3...v1.17.4) --- updated-dependencies: - dependency-name: go.mongodb.org/mongo-driver dependency-version: 1.17.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8b175321..8b99d2b6 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/stretchr/testify v1.10.0 github.com/xlab/treeprint v1.2.0 - go.mongodb.org/mongo-driver v1.17.3 + go.mongodb.org/mongo-driver v1.17.4 golang.org/x/crypto v0.36.0 golang.org/x/exp v0.0.0-20230321023759-10a507213a29 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 diff --git a/go.sum b/go.sum index 5a3b5115..cb322a24 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ= -go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= From 7ad2e73e5d78c258c07b95d4445da2299ba618b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 10:14:11 +0000 Subject: [PATCH 08/14] build(deps): bump aquasecurity/trivy-action from 0.30.0 to 0.31.0 Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.30.0 to 0.31.0. - [Release notes](https://github.com/aquasecurity/trivy-action/releases) - [Commits](https://github.com/aquasecurity/trivy-action/compare/0.30.0...0.31.0) --- updated-dependencies: - dependency-name: aquasecurity/trivy-action dependency-version: 0.31.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/toolkit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/toolkit.yml b/.github/workflows/toolkit.yml index 4146bc04..796a5a73 100644 --- a/.github/workflows/toolkit.yml +++ b/.github/workflows/toolkit.yml @@ -27,7 +27,7 @@ jobs: - name: Build the Docker image run: echo "FROM oraclelinux:9-slim" > Dockerfile; echo "RUN microdnf -y update" >> Dockerfile; echo "COPY bin/* /usr/bin/" >> Dockerfile; docker build . --file Dockerfile --tag percona-toolkit:${{ github.sha }} - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.30.0 + uses: aquasecurity/trivy-action@0.31.0 with: image-ref: 'percona-toolkit:${{ github.sha }}' format: 'table' From 554d8294e155c054b025f48b818e46d0d20cfdf2 Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Mon, 9 Jun 2025 16:46:40 +0300 Subject: [PATCH 09/14] PT-2453 - Add -skip-pod-summary for pt-k8s-debug-collector - Added test case --- src/go/pt-k8s-debug-collector/main_test.go | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/src/go/pt-k8s-debug-collector/main_test.go b/src/go/pt-k8s-debug-collector/main_test.go index 29f3d25e..a64e5fdd 100644 --- a/src/go/pt-k8s-debug-collector/main_test.go +++ b/src/go/pt-k8s-debug-collector/main_test.go @@ -365,6 +365,106 @@ func TestSSLResourceOption(t *testing.T) { } } +/* +Tests for option --skip-pod-summary +*/ +func TestPT_2453(t *testing.T) { + testcmd := []string{"sh", "-c", "tar -tf cluster-dump.tar.gz --wildcards '*/summary.txt' 2>/dev/null | wc -l"} + tests := []struct { + name string + resource string + want string + kubeconfig string + }{ + { + name: "none", + resource: "none", + want: "0", + kubeconfig: "", + }, + { + name: "pxc", + resource: "pxc", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PXC"), + }, + { + name: "ps", + resource: "ps", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PS"), + }, + { + name: "psmdb", + resource: "psmdb", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PSMDB"), + }, + { + name: "pg", + resource: "pg", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PG"), + }, + { + name: "pgv2", + resource: "pgv2", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PG2"), + }, + { + name: "auto pxc", + resource: "auto", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PXC"), + }, + { + name: "auto ps", + resource: "auto", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PS"), + }, + { + name: "auto psmdb", + resource: "auto", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PSMDB"), + }, + { + name: "auto pg", + resource: "auto", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PG"), + }, + { + name: "auto pgv2", + resource: "auto", + want: "0", + kubeconfig: os.Getenv("KUBECONFIG_PG2"), + }, + } + + for _, test := range tests { + cmd := exec.Command("../../../bin/pt-k8s-debug-collector", "--kubeconfig", test.kubeconfig, "--forwardport", os.Getenv("FORWARDPORT"), "--resource", test.resource, "--skip-pod-summary") + if err := cmd.Run(); err != nil { + t.Errorf("error executing pt-k8s-debug-collector: %s\nCommand: %s", err.Error(), cmd.String()) + } + defer func() { + cmd = exec.Command("rm", "-f", "cluster-dump.tar.gz") + if err := cmd.Run(); err != nil { + t.Errorf("error cleaning up test data: %s", err.Error()) + } + }() + out, err := exec.Command(testcmd[0], testcmd[1:]...).Output() + if err != nil { + t.Errorf("test %s, error running command %s:\n%s\n\nCommand output:\n%s", test.name, testcmd, err.Error(), out) + } + if strings.TrimRight(bytes.NewBuffer(out).String(), "\n") != test.want { + t.Errorf("test %s, output is not as expected\nOutput: %s\nWanted: %s", test.name, out, test.want) + } + } +} + /* Option --version */ From f31ea3542182d66b385d3dae0c8f343627f12f47 Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Mon, 9 Jun 2025 16:51:06 +0300 Subject: [PATCH 10/14] PT-2453 - Add -skip-pod-summary for pt-k8s-debug-collector - Added reserved word into .typos.toml --- .typos.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/.typos.toml b/.typos.toml index a1702340..6d2c2c7b 100644 --- a/.typos.toml +++ b/.typos.toml @@ -39,6 +39,7 @@ extend-ignore-re = [ "END_ND_TOOLTIPS" = "END_ND_TOOLTIPS" "EXPLAINed" = "EXPLAINed" "FH_ND_FILE" = "FH_ND_FILE" +"GTID" = "GTID" "INSERTs" = "INSERTs" "IST" = "IST" "istError" = "istError" From 21b7edea4f48d0c3c5fc7b14d3f019ddc4974b8c Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Mon, 9 Jun 2025 16:55:24 +0300 Subject: [PATCH 11/14] PT-2453 - Add -skip-pod-summary for pt-k8s-debug-collector - Added reserved word into .typos.toml --- .typos.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/.typos.toml b/.typos.toml index 6d2c2c7b..64601914 100644 --- a/.typos.toml +++ b/.typos.toml @@ -39,6 +39,7 @@ extend-ignore-re = [ "END_ND_TOOLTIPS" = "END_ND_TOOLTIPS" "EXPLAINed" = "EXPLAINed" "FH_ND_FILE" = "FH_ND_FILE" +"GTI" = "GTI" "GTID" = "GTID" "INSERTs" = "INSERTs" "IST" = "IST" From b1279680fda9c7a3c4a86001528ea8877e4ec142 Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Mon, 9 Jun 2025 17:14:00 +0300 Subject: [PATCH 12/14] PT-2453 - Add -skip-pod-summary for pt-k8s-debug-collector - Added reserved word into .typos.toml --- .typos.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/.typos.toml b/.typos.toml index 64601914..fc64158d 100644 --- a/.typos.toml +++ b/.typos.toml @@ -41,6 +41,7 @@ extend-ignore-re = [ "FH_ND_FILE" = "FH_ND_FILE" "GTI" = "GTI" "GTID" = "GTID" +"GTIDs" = "GTIDs" "INSERTs" = "INSERTs" "IST" = "IST" "istError" = "istError" From a63e3212f0e673f1cf4d68a1545fd6520f3e276a Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Thu, 12 Jun 2025 16:41:53 +0300 Subject: [PATCH 13/14] Updated 3.7.0-2 notes with actual bug fixes --- Changelog | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Changelog b/Changelog index def20b7a..14a14784 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,21 @@ Changelog for Percona Toolkit +v3.7.0-2 released 2025-05-14 + +This release addresses multiple security vulnerabilities reported in Percona Toolkit version 3.7.0, including issues related to the `libxml2` component (CVE-2024-56171, CVE-2025-24928), `openssl` (CVE-2024-12797), and `krb5` (CVE-2022-37967). + +* Fixed bug PT-2442: percona-toolkit:latest Vulnerability [CVE-2024-56171 CVE-2024-12797 CVE-2022-37967 CVE-2025-24928] +* Fixed bug PT-2375: pt-table-sync does not work with generated columns (Thanks to Henning Pöttker for the contribution) +* Fixed bug PT-2400: pt-table-checksum reports the error for warning code 4164 +* Fixed bug PT-2377: pt-table-sync does not handle utf8 strings in JSON columns correctly (Thanks to Henning Pöttker for the contribution) +* Fixed bug PT-2378: pt-table-sync does print floating point numbers in SQL statements with insufficient precision (Thanks to Henning Pöttker for the contribution) +* Fixed bug PT-2389: pt-online-schema-change resume functionality doesn't work with ADD/DROP column (Thanks to Perry Harrington for the contribution) +* Fixed bug PT-2410: pt-archiver brokes when using output-format=csv and has null values (Thanks to Roberto de Bem for the contribution) +* Fixed bug PT-2422: pt-online-schema-change race overwrites new_table_name (Thanks to Perry Harrington for the contribution) +* Fixed bug PT-2407: pt-online-schema-change exit status(return code) is 0 even if it does NOT succeed +* Fixed bug PT-2355: pt-online-schema-change should not resume a job with empty boundaries +* Fixed bug PT-1577: pt-secure-collect, replace pt-secure-data in Usage section + v3.7.0 released 2024-12-25 * Feature PT-2340: Support MySQL 8.4 @@ -18,8 +34,7 @@ v3.6.0 released 2024-06-12 * Improvement PR-160: added support for operf if present, and if CMD_OPCONTROL is not set (Thanks to Fernando Ipar for the contribution) * Improvement PR-140: Add CPU cache configuration info to pt-summary (Thanks to Alexey Kopytov for the contribution) * Improvement PR-765: pt-galera-log-explainer: improvements from feedbacks (Thanks Yoann La Cancellera for the contribution) -* Improvement PT-2233: pt-k8s-debug-collector needs psql in the host node -(Thanks to Jobin Augustine for the contribution) +* Improvement PT-2233: pt-k8s-debug-collector needs psql in the host node (Thanks to Jobin Augustine for the contribution) * Improvement PR-772: pt-galera-log-explainer: add custom regexes parameter (Thanks Yoann La Cancellera for the contribution) * Improvement PT-2301: pt-galera-log-explainer: whois redesign (Thanks Yoann La Cancellera for the contribution) * Improvement PT-2190: pt-show-grants should use print_identified_with_as_hex From 8b4065c4d30b1801089eb58aa24983104fbdfc4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 14:34:00 +0000 Subject: [PATCH 14/14] build(deps): bump golang.org/x/crypto from 0.36.0 to 0.39.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.36.0 to 0.39.0. - [Commits](https://github.com/golang/crypto/compare/v0.36.0...v0.39.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.39.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index c47d4ff5..1e6d56ee 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/xlab/treeprint v1.2.0 go.mongodb.org/mongo-driver v1.17.3 - golang.org/x/crypto v0.36.0 + golang.org/x/crypto v0.39.0 golang.org/x/exp v0.0.0-20230321023759-10a507213a29 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v2 v2.4.0 @@ -62,10 +62,10 @@ require ( github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/sync v0.12.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/term v0.30.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/sync v0.15.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/term v0.32.0 // indirect + golang.org/x/text v0.26.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apimachinery v0.33.1 // indirect diff --git a/go.sum b/go.sum index 805a5aae..a5c35077 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -151,8 +151,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -168,18 +168,18 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=