From ff64e83e8ba9384a906b6909873c971d729dff90 Mon Sep 17 00:00:00 2001 From: Pierluigi Lenoci Date: Wed, 22 Apr 2026 16:25:33 +0200 Subject: [PATCH 1/2] fix: honor -stderrthreshold when -logtostderr=true MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit klog v2 defaults -logtostderr to true, which silently ignores -stderrthreshold — all severities are unconditionally sent to stderr. Bump klog to v2.140.0 and opt into the fixed behavior by setting legacy_stderr_threshold_behavior=false so that -stderrthreshold is respected. The default is set to INFO (preserving current behavior); users can now override it on the command line. Ref: kubernetes/klog#212, kubernetes/klog#432 Signed-off-by: Pierluigi Lenoci Signed-off-by: Pierluigi Lenoci --- cmd/tidb-backup-manager/main.go | 6 ++++++ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cmd/tidb-backup-manager/main.go b/cmd/tidb-backup-manager/main.go index 03df371f5cd..30f5a1a4430 100644 --- a/cmd/tidb-backup-manager/main.go +++ b/cmd/tidb-backup-manager/main.go @@ -15,6 +15,7 @@ package main import ( + "flag" "os" "k8s.io/klog/v2" @@ -24,6 +25,11 @@ import ( func main() { klog.InitFlags(nil) + // Opt into the new klog behavior so that -stderrthreshold is honored even + // when -logtostderr=true (the default). + // Ref: kubernetes/klog#212, kubernetes/klog#432 + flag.Set("legacy_stderr_threshold_behavior", "false") //nolint:errcheck + flag.Set("stderrthreshold", "INFO") //nolint:errcheck if err := app.Run(); err != nil { os.Exit(1) } diff --git a/go.mod b/go.mod index b0cffa72627..d1beab35ee5 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( k8s.io/client-go v0.32.13 k8s.io/component-base v0.32.13 k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7 - k8s.io/klog/v2 v2.130.1 + k8s.io/klog/v2 v2.140.0 k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff k8s.io/kubectl v0.32.13 k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 diff --git a/go.sum b/go.sum index 931924dd5d0..f5a7b716e82 100644 --- a/go.sum +++ b/go.sum @@ -810,8 +810,8 @@ k8s.io/component-base v0.32.13 h1:QTroT4xOtYXc8ySp7Wvj5llxDNxz16YoG5Pw3zJBMds= k8s.io/component-base v0.32.13/go.mod h1:hfuVb9GlAuoIXRimoph+0e862qEwxRA7h+6oOIFelCE= k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7 h1:2OX19X59HxDprNCVrWi6jb7LW1PoqTlYqEq5H2oetog= k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= +k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= k8s.io/kubectl v0.32.13 h1:SgKMRUwpRIR+8DHPphU/wDskNsj0Jtf6bEVyuus+FtI= From 56f034e7c352be0dbab49bee23be72f02abe94f3 Mon Sep 17 00:00:00 2001 From: Pierluigi Lenoci Date: Fri, 24 Apr 2026 13:43:59 +0200 Subject: [PATCH 2/2] fix: handle flag.Set errors to satisfy gosec G104 lint rule The project disables errcheck but enables gosec, whose G104 rule also catches unhandled error returns. Replace //nolint:errcheck directives with explicit error handling. Signed-off-by: Pierluigi Lenoci --- cmd/tidb-backup-manager/main.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cmd/tidb-backup-manager/main.go b/cmd/tidb-backup-manager/main.go index 30f5a1a4430..c2487c6a98d 100644 --- a/cmd/tidb-backup-manager/main.go +++ b/cmd/tidb-backup-manager/main.go @@ -16,6 +16,7 @@ package main import ( "flag" + "fmt" "os" "k8s.io/klog/v2" @@ -28,8 +29,14 @@ func main() { // Opt into the new klog behavior so that -stderrthreshold is honored even // when -logtostderr=true (the default). // Ref: kubernetes/klog#212, kubernetes/klog#432 - flag.Set("legacy_stderr_threshold_behavior", "false") //nolint:errcheck - flag.Set("stderrthreshold", "INFO") //nolint:errcheck + if err := flag.Set("legacy_stderr_threshold_behavior", "false"); err != nil { + fmt.Fprintf(os.Stderr, "failed to set legacy_stderr_threshold_behavior: %v\n", err) + os.Exit(1) + } + if err := flag.Set("stderrthreshold", "INFO"); err != nil { + fmt.Fprintf(os.Stderr, "failed to set stderrthreshold: %v\n", err) + os.Exit(1) + } if err := app.Run(); err != nil { os.Exit(1) }