Skip to content

NO-ISSUE: bump golangci-lint to v2.11.3#602

Merged
openshift-merge-bot[bot] merged 1 commit intoopenshift:mainfrom
simonpasquier:bump-golangci-lint
May 6, 2026
Merged

NO-ISSUE: bump golangci-lint to v2.11.3#602
openshift-merge-bot[bot] merged 1 commit intoopenshift:mainfrom
simonpasquier:bump-golangci-lint

Conversation

@simonpasquier
Copy link
Copy Markdown
Contributor

@simonpasquier simonpasquier commented May 6, 2026

Summary by CodeRabbit

  • New Features

    • Enabled OpenTelemetry tracing support for observability
    • Added JWT-based client authorization capability
  • Improvements

    • Enhanced error handling and error messages throughout the application
    • Improved HTTP client robustness for resource cleanup
    • Updated metrics encoding with compression support
  • Chores

    • Upgraded golangci-lint to v2.11.3
    • Standardized error handling practices across codebase
    • Code reorganization and cleanup

Signed-off-by: Simon Pasquier <spasquie@redhat.com>
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 6, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@simonpasquier: This pull request explicitly references no jira issue.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci Bot requested review from coleenquadros and rexagod May 6, 2026 09:51
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 6, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 6, 2026

Walkthrough

This pull request modernizes the codebase with four major initiatives: upgrading golangci-lint from v1 to v2, standardizing error handling across packages to use Go's standard fmt.Errorf with %w wrapping, adding OpenTelemetry tracing instrumentation to services, and enhancing authorization (JWT validation, request size limits) plus updating metrics protocol handling to use newer Prometheus expfmt APIs.

Changes

Build Configuration & Linting

Layer / File(s) Summary
Lint Configuration
.golangci.yml
Upgraded from v1 to v2 configuration structure. Enables comprehensive linter set explicitly with a default-deny approach. Adds errcheck, staticcheck, and depguard rules; excludes vendor, test, hack, and examples directories; enumerates linters for _test.go files.
Tool Version
Makefile
Updated GOLANGCI_LINT_VERSION from v1.64.8 to v2.11.3.

Code Quality—Error Handling & Resource Management

Layer / File(s) Summary
Error Wrapping Migration
pkg/authorize/{handler,roundtripper,stub,token_store}.go, pkg/authorize/tollbooth/{mock,tollbooth}.go, pkg/cache/{cache,memcached/memcached}.go, pkg/fnv/hash.go, pkg/forwarder/forwarder.go, pkg/runutil/runutil.go, cmd/telemeter-benchmark/main.go, cmd/telemeter-client/main.go, cmd/telemeter-server/main.go, cmd/rhelemeter-server/main.go
Replaced github.com/pkg/errors with standard fmt.Errorf and %w wrapping throughout. Enables idiomatic Go error chain inspection via errors.Is and errors.As.
Request/Response Cleanup
pkg/authorize/handler.go, pkg/authorize/jwt/handler.go, pkg/authorize/tollbooth/mock.go, pkg/receive/handler.go, pkg/server/forward.go, pkg/metricsclient/metricsclient.go
Converted deferred body closes from direct calls to defer func() { _ = r.Body.Close() }() pattern. Ignores errors during resource cleanup for robustness; added //nolint:bodyclose directives where appropriate.
EOF Detection Improvements
pkg/authorize/jwt/validator.go, pkg/benchmark/benchmark.go, pkg/metricsclient/metricsclient.go, pkg/server/{forward,validator}.go
Updated EOF checks from direct comparison (err == io.EOF) to errors.Is(err, io.EOF) to correctly detect wrapped EOF errors.

Observability & Instrumentation

Layer / File(s) Summary
Tracing Infrastructure
pkg/tracing/tracing.go
Replaced trace.NewNoopTracerProvider() with noop.NewTracerProvider() for no-op tracing path; imports adjusted accordingly.
Service Instrumentation
cmd/rhelemeter-server/main.go, cmd/telemeter-benchmark/main.go, cmd/telemeter-client/main.go, cmd/telemeter-server/main.go
Added OpenTelemetry HTTP instrumentation imports, structured logging via go-kit/log, and Oklog run group lifecycle management. Integrated tracer initialization with error wrapping.
Configuration & Startup
cmd/telemeter-client/main.go, cmd/telemeter-benchmark/main.go
Enhanced URL parsing and validation for federation endpoints (--from, --to-upload, --to-auth, --to). Added default path normalization (e.g., /federate) and auto-derivation of authorize/upload endpoints.

Authorization Enhancements & Protocol Updates

Layer / File(s) Summary
JWT Client Authorization
pkg/authorize/jwt/client_authorizer.go
New exported constructor NewClientAuthorizer(issuer, keys, validator) enables JWT-based client authorization. Parses signed JWTs across multiple keys, verifies issuer, and delegates claims validation to pluggable Validator.
JWT Handler & Validator
pkg/authorize/jwt/{handler,validator}.go, pkg/authorize/jwt/handler_test.go, pkg/authorize/jwt/client_authorizer_test.go
Enhanced handler with http.MaxBytesReader to cap request size at 4 KB. Updated validator to use errors.Is for wrapped error detection. Improved error responses with http_status_code logging and Retry-After header for 429 responses.
Metrics Protocol & Format
pkg/metricsclient/metricsclient.go, cmd/telemeter-client/main.go, pkg/benchmark/benchmark.go
Updated Accept and Content-Type headers to use newer expfmt.NewFormat(TypeProtoDelim) and expfmt.NewFormat(TypeTextPlain) APIs. Metrics response now serves text/plain format via Prometheus expfmt. Decoder and encoder creation aligned with new format API.
Import Reordering
test/e2e/receive_test.go, cmd/telemeter-server/main_e2e_test.go, pkg/http/client.go, pkg/server/forward.go, multiple authorize/jwt files
Reorganized import blocks for consistency; no functional impact.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 10 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title 'NO-ISSUE: bump golangci-lint to v2.11.3' clearly and specifically describes the main change: upgrading golangci-lint to version v2.11.3. However, the actual changeset goes far beyond a simple version bump, involving extensive refactoring of error handling patterns, import organization, and code improvements across 30+ files. Update the title to reflect the scope of changes, such as 'Bump golangci-lint to v2.11.3 and refactor error handling to use standard library' or similar to accurately represent the comprehensive refactoring in the changeset.
Docstring Coverage ⚠️ Warning Docstring coverage is 57.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR does not use Ginkgo tests. Repository uses standard Go testing framework with testing.T and t.Run(). All test names are static and descriptive. Check is not applicable to this codebase.
Test Structure And Quality ✅ Passed Not applicable: Check requests review of Ginkgo test code. This repository uses standard Go testing package, not Ginkgo. The PR only modifies test imports.
Microshift Test Compatibility ✅ Passed The PR adds new e2e tests but uses standard Go testing patterns (func TestXxx), not Ginkgo. The check applies only to Ginkgo e2e tests. Tests do not reference MicroShift-incompatible APIs.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added. PR only bumps golangci-lint version and updates code quality. The SNO compatibility check does not apply.
Topology-Aware Scheduling Compatibility ✅ Passed PR only modifies Go linter config, build tools, and application source code. No deployment manifests, operator code, or controllers are added/modified. Topology-aware scheduling check does not apply.
Ote Binary Stdout Contract ✅ Passed All logging correctly configured to stderr via go-kit/log and log.NewSyncWriter(os.Stderr). No klog, no direct stdout writes, no Ginkgo suite setup found.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests added. Test file changes are import-only. This is a golangci-lint version bump PR with error handling improvements.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.1)

level=error msg="Running error: context loading failed: failed to load packages: failed to load packages: failed to load with go/packages: err: exit status 1: stderr: go: inconsistent vendoring in :\n\tgithub.com/bradfitz/gomemcache@v0.0.0-20230905024940-24af94b03874: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/coreos/go-oidc/v3@v3.9.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/efficientgo/core@v1.0.0-rc.2: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/go-chi/chi@v4.0.4+incompatible: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/go-jose/go-jose/v3@v3.0.5: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/go-kit/log@v0.2.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/gogo/protobuf@v

... [truncated 5767 characters] ...

.org/x/text@v0.28.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgoogle.golang.org/genproto/googleapis/api@v0.0.0-20231127180814-3a041ad873d4: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgoogle.golang.org/genproto/googleapis/rpc@v0.0.0-20231120223509-83a465c0220f: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgoogle.golang.org/grpc@v1.59.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgoogle.golang.org/protobuf@v1.36.8: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\n\tTo ignore the vendor directory, use -mod=readonly or -mod=mod.\n\tTo sync the vendor directory, run:\n\t\tgo mod vendor\n"


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
cmd/telemeter-benchmark/main.go (1)

117-125: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

--to-upload flag is always overwritten when --to is provided.

When both --to and --to-upload are specified, the explicitly provided --to-upload value is unconditionally overwritten on lines 122-124. This differs from the handling of --to-auth which correctly checks if toAuthorize == nil before defaulting.

Proposed fix
 		if toAuthorize == nil {
 			u := *to
 			u.Path = path.Join(to.Path, "authorize")
 			toAuthorize = &u
 		}
-		u := *to
-		u.Path = path.Join(to.Path, "upload")
-		toUpload = &u
+		if toUpload == nil {
+			u := *to
+			u.Path = path.Join(to.Path, "upload")
+			toUpload = &u
+		}
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/telemeter-benchmark/main.go` around lines 117 - 125, The current logic
always overwrites an explicit --to-upload because the block that sets toUpload
from to runs unconditionally; change the code in main.go so that the upload
target is only defaulted when toUpload == nil (same pattern used for
toAuthorize), i.e. guard the path.Join(..., "upload") assignment with if
toUpload == nil and only then copy *to into u and set u.Path to
path.Join(to.Path, "upload") to assign toUpload; reference variables/functions:
toUpload, toAuthorize, to, path.Join.
pkg/receive/handler.go (1)

151-172: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Response body is not explicitly closed in the error path.

The //nolint:bodyclose annotation suppresses the linter warning, but the response body from h.client.Do(req) is never explicitly closed in this function. While the body may be read in the error path (line 161), resp.Body.Close() should be called to release resources.

🔧 Proposed fix to close response body
-	resp, err := h.client.Do(req) //nolint:bodyclose
+	resp, err := h.client.Do(req)
 	if err != nil {
 		h.forwardRequestsTotal.WithLabelValues("error").Inc()
 		level.Error(logger).Log("msg", "failed to forward request", "err", err)
 		http.Error(w, err.Error(), http.StatusBadGateway)
 		return
 	}
+	defer func() { _ = resp.Body.Close() }()
 
 	if resp.StatusCode/100 != 2 {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/receive/handler.go` around lines 151 - 172, In the request-forwarding
block inside the handler that calls h.client.Do(req), ensure the response body
is always closed: after successfully getting resp (err == nil) immediately
arrange to close resp.Body (e.g., defer resp.Body.Close()) so that both the
error path where you read the body (io.ReadAll(resp.Body)) and the success path
(writing resp.StatusCode) release resources; update the logic around resp
handling in the function that performs h.client.Do to call resp.Body.Close() in
all paths instead of relying on //nolint:bodyclose.
pkg/authorize/jwt/client_authorizer.go (1)

12-14: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Stale comment mentions non-existent parameter.

The comment references "If lookup is true" but the function has no lookup parameter. This appears to be copy-pasted documentation that doesn't apply to this function.

📝 Suggested fix
 // NewClientAuthorizer authenticates tokens as JWT tokens produced by JWTTokenGenerator
-// Token signatures are verified using each of the given public keys until one works (allowing key rotation)
-// If lookup is true, the service account and secret referenced as claims inside the token are retrieved and verified with the provided ServiceAccountTokenGetter
+// Token signatures are verified using each of the given public keys until one works (allowing key rotation).
+// The provided Validator is used for domain-specific token validation after signature verification.
 func NewClientAuthorizer(issuer string, keys []crypto.PublicKey, v Validator) *clientAuthorizer {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/authorize/jwt/client_authorizer.go` around lines 12 - 14, The function
comment for NewClientAuthorizer incorrectly references a non-existent "lookup"
parameter; update the docstring for NewClientAuthorizer in client_authorizer.go
to remove the "If lookup is true" clause and instead describe the actual
behavior and parameters of NewClientAuthorizer (how token signatures are
verified using the provided public keys and how service account/secret handling
actually works) so the comment matches the function signature and behavior.
🧹 Nitpick comments (3)
cmd/telemeter-server/main.go (1)

633-633: 💤 Low value

Multiple %w verbs in a single fmt.Errorf may obscure error chain.

Using multiple %w verbs in a single format string (e.g., "'%w', '%w' and '%w'") is valid since Go 1.20, but errors.Is() and errors.As() will only match against the first wrapped error in the chain. Consider using errors.Join() to combine all three errors if you want all of them to be unwrappable.

♻️ Alternative using errors.Join
-	return nil, fmt.Errorf("unable to parse private key data: '%w', '%w' and '%w'", err0, err1, err2)
+	return nil, fmt.Errorf("unable to parse private key data: %w", errors.Join(err0, err1, err2))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/telemeter-server/main.go` at line 633, Replace the current fmt.Errorf
that uses three %w verbs with a single wrapped joined error so callers can
unwrap all errors: construct a combinedErr := errors.Join(err0, err1, err2) and
return fmt.Errorf("unable to parse private key data: %w", combinedErr); ensure
the errors package is imported and reference the existing err0, err1, err2 used
in the failing return expression.
.golangci.yml (1)

55-73: ⚡ Quick win

Test files are excluded from all linters, effectively disabling linting on tests.

The exclusion rule at lines 56-73 lists every enabled linter under the _test\.go path pattern. According to the comment on line 58-59, this is intentional and "any linter that needs to be run on test files should be dropped from here." However, since all enabled linters are listed, no linting runs on test files at all.

Consider removing at least govet, staticcheck, and unused from this exclusion list, as these catch real bugs in test code.

♻️ Suggested change to enable key linters on test files
     rules:
       - path: _test\.go
         linters:
-          # The list of linters below is exhaustive with respect to the linters defined above, and as such, and linter
-          # that needs to be run on test files should be dropped from here.
+          # Linters disabled for test files - removed govet, staticcheck, unused to catch bugs in tests
           - depguard
           - errcheck
           - errorlint
           - bodyclose
           - ineffassign
           - misspell
           - nolintlint
           - nosprintfhostport
-          - staticcheck
           - usetesting
           - unconvert
-          - unused
           - wastedassign
           - whitespace
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.golangci.yml around lines 55 - 73, The test-file rule currently excludes
all linters by listing every enabled linter under the path pattern `_test\.go`,
which disables linting for tests; edit the `_test\.go` rule in .golangci.yml
(the rules -> - path: _test\.go block) and remove at least `govet`,
`staticcheck`, and `unused` from the linters array so those linters run on test
files (you may also remove any other linters you want to apply to tests), then
validate the YAML and run golangci-lint to ensure the intended linters now
execute against test files.
cmd/telemeter-client/main.go (1)

378-379: 💤 Low value

Consider caching the format to avoid duplicate computation.

expfmt.NewFormat(expfmt.TypeTextPlain) is called twice. Store it in a variable for clarity and minor efficiency.

♻️ Suggested refactor
 	families := worker.LastMetrics()
-	w.Header().Set("Content-Type", string(expfmt.NewFormat(expfmt.TypeTextPlain)))
-	encoder := expfmt.NewEncoder(w, expfmt.NewFormat(expfmt.TypeTextPlain))
+	format := expfmt.NewFormat(expfmt.TypeTextPlain)
+	w.Header().Set("Content-Type", string(format))
+	encoder := expfmt.NewEncoder(w, format)
 	for _, family := range families {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/telemeter-client/main.go` around lines 378 - 379, Duplicate calls to
expfmt.NewFormat(expfmt.TypeTextPlain) appear in the response writer setup;
cache the result in a local variable (e.g., fmt :=
expfmt.NewFormat(expfmt.TypeTextPlain)) and reuse it in
w.Header().Set("Content-Type", string(fmt)) and in expfmt.NewEncoder(w, fmt) to
avoid repeated computation and improve clarity in the code around the
w.Header().Set and encoder := expfmt.NewEncoder(...) lines.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@cmd/telemeter-benchmark/main.go`:
- Around line 117-125: The current logic always overwrites an explicit
--to-upload because the block that sets toUpload from to runs unconditionally;
change the code in main.go so that the upload target is only defaulted when
toUpload == nil (same pattern used for toAuthorize), i.e. guard the
path.Join(..., "upload") assignment with if toUpload == nil and only then copy
*to into u and set u.Path to path.Join(to.Path, "upload") to assign toUpload;
reference variables/functions: toUpload, toAuthorize, to, path.Join.

In `@pkg/authorize/jwt/client_authorizer.go`:
- Around line 12-14: The function comment for NewClientAuthorizer incorrectly
references a non-existent "lookup" parameter; update the docstring for
NewClientAuthorizer in client_authorizer.go to remove the "If lookup is true"
clause and instead describe the actual behavior and parameters of
NewClientAuthorizer (how token signatures are verified using the provided public
keys and how service account/secret handling actually works) so the comment
matches the function signature and behavior.

In `@pkg/receive/handler.go`:
- Around line 151-172: In the request-forwarding block inside the handler that
calls h.client.Do(req), ensure the response body is always closed: after
successfully getting resp (err == nil) immediately arrange to close resp.Body
(e.g., defer resp.Body.Close()) so that both the error path where you read the
body (io.ReadAll(resp.Body)) and the success path (writing resp.StatusCode)
release resources; update the logic around resp handling in the function that
performs h.client.Do to call resp.Body.Close() in all paths instead of relying
on //nolint:bodyclose.

---

Nitpick comments:
In @.golangci.yml:
- Around line 55-73: The test-file rule currently excludes all linters by
listing every enabled linter under the path pattern `_test\.go`, which disables
linting for tests; edit the `_test\.go` rule in .golangci.yml (the rules -> -
path: _test\.go block) and remove at least `govet`, `staticcheck`, and `unused`
from the linters array so those linters run on test files (you may also remove
any other linters you want to apply to tests), then validate the YAML and run
golangci-lint to ensure the intended linters now execute against test files.

In `@cmd/telemeter-client/main.go`:
- Around line 378-379: Duplicate calls to expfmt.NewFormat(expfmt.TypeTextPlain)
appear in the response writer setup; cache the result in a local variable (e.g.,
fmt := expfmt.NewFormat(expfmt.TypeTextPlain)) and reuse it in
w.Header().Set("Content-Type", string(fmt)) and in expfmt.NewEncoder(w, fmt) to
avoid repeated computation and improve clarity in the code around the
w.Header().Set and encoder := expfmt.NewEncoder(...) lines.

In `@cmd/telemeter-server/main.go`:
- Line 633: Replace the current fmt.Errorf that uses three %w verbs with a
single wrapped joined error so callers can unwrap all errors: construct a
combinedErr := errors.Join(err0, err1, err2) and return fmt.Errorf("unable to
parse private key data: %w", combinedErr); ensure the errors package is imported
and reference the existing err0, err1, err2 used in the failing return
expression.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 54ceaf78-7f7f-4969-9917-261b5ca59117

📥 Commits

Reviewing files that changed from the base of the PR and between 8bfe7aa and d66fc45.

📒 Files selected for processing (32)
  • .golangci.yml
  • Makefile
  • cmd/rhelemeter-server/main.go
  • cmd/telemeter-benchmark/main.go
  • cmd/telemeter-client/main.go
  • cmd/telemeter-server/main.go
  • cmd/telemeter-server/main_e2e_test.go
  • pkg/authorize/handler.go
  • pkg/authorize/jwt/client_authorizer.go
  • pkg/authorize/jwt/client_authorizer_test.go
  • pkg/authorize/jwt/handler.go
  • pkg/authorize/jwt/handler_test.go
  • pkg/authorize/jwt/validator.go
  • pkg/authorize/roundtripper.go
  • pkg/authorize/stub/stub.go
  • pkg/authorize/token_store.go
  • pkg/authorize/tollbooth/mock.go
  • pkg/authorize/tollbooth/tollbooth.go
  • pkg/benchmark/benchmark.go
  • pkg/cache/cache.go
  • pkg/cache/memcached/memcached.go
  • pkg/fnv/hash.go
  • pkg/forwarder/forwarder.go
  • pkg/http/client.go
  • pkg/metricfamily/overwrite.go
  • pkg/metricsclient/metricsclient.go
  • pkg/receive/handler.go
  • pkg/runutil/runutil.go
  • pkg/server/forward.go
  • pkg/server/validator.go
  • pkg/tracing/tracing.go
  • test/e2e/receive_test.go
💤 Files with no reviewable changes (1)
  • pkg/metricfamily/overwrite.go

@simonpasquier
Copy link
Copy Markdown
Contributor Author

/verified by tests

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label May 6, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@simonpasquier: This PR has been marked as verified by tests.

Details

In response to this:

/verified by tests

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@simonpasquier
Copy link
Copy Markdown
Contributor Author

/cc @jan--f

@openshift-ci openshift-ci Bot requested a review from jan--f May 6, 2026 12:35
Copy link
Copy Markdown
Contributor

@jan--f jan--f left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lovely refactor, thanks!

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label May 6, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 6, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jan--f, simonpasquier

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:
  • OWNERS [jan--f,simonpasquier]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 6, 2026

@simonpasquier: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot openshift-merge-bot Bot merged commit 0973145 into openshift:main May 6, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants