Vendor Prow with Jira QA Contact/Target Version removal; add name-based custom field helper#5017
Conversation
|
Pipeline controller notification For optional jobs, comment This repository is configured in: automatic mode |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (231)
📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (2)
WalkthroughUpdated Go directive and bumped multiple indirect module versions in go.mod; added a concurrency-safe cached Jira custom field resolver with unit tests; and adjusted Makefile targets to use a vendored-safe GOFLAGS and added a generate verification pre-check. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Comment |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: deepsm007 The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
pkg/jira/customfield_test.go (1)
74-87: This test doesn’t exercise resolver fallback logic.
TestValueByID_with_fallback_idvalidates direct ID lookup only. It won’t catch regressions inFieldID/FallbackIDsbehavior, which is a core addition in this PR.Suggested additional test
+func TestFieldID_usesFallbackIDWhenNameMissing(t *testing.T) { + t.Parallel() + r := NewCustomFieldResolver(nil) + r.loaded = true // skip API call path; test fallback behavior directly + r.FallbackIDs = map[string]string{"QA Contact": "customfield_12316243"} + + got, err := r.FieldID(context.Background(), "QA Contact") + if err != nil { + t.Fatalf("FieldID() error = %v", err) + } + if got != "customfield_12316243" { + t.Fatalf("FieldID() = %q, want %q", got, "customfield_12316243") + } +}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@pkg/jira/customfield_test.go` around lines 74 - 87, Extend the test to exercise the resolver fallback path instead of only direct-ID lookup: create or configure a Resolver with Resolver.FallbackIDs mapping a human name (e.g. "qa_field") to "customfield_12316243", create an Issue whose Fields.Unknowns contains "customfield_12316243" => "qa@example.com" but no direct entry for the human name, then call the public resolution helpers (FieldID and/or ValueByID) with the human name and assert you get "customfield_12316243" for FieldID and "qa@example.com" for ValueByID; update or add a test (adjacent to TestValueByID_with_fallback_id) that references Resolver.FallbackIDs, ValueByID, and FieldID so the fallback behavior is exercised.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@pkg/jira/customfield_test.go`:
- Around line 64-69: The test uses a direct equality check on values returned by
ValueByID which can panic for uncomparable types (maps/slices); change the
assertion to use deep equality (reflect.DeepEqual or cmp.Equal) instead of `got
!= tt.want`, and add the necessary import for reflect (or cmp) in
pkg/jira/customfield_test.go so the test safely compares any values returned by
ValueByID.
In `@pkg/jira/customfield.go`:
- Around line 14-20: CustomFieldResolver currently exposes a mutable exported
map FallbackIDs that FieldID reads without synchronization, risking concurrent
map read/write panics; make the fallback map safe by making it unexported (e.g.,
fallbackIDs) and only mutate/access it under the existing mutex (mu), or provide
synchronized accessor/mutator methods (e.g., SetFallbackIDs(map[string]string)
which copies the input map under mu, and getFallbackID(name string) that reads
under mu and returns a copy/value) and update FieldID to use the synchronized
getter; ensure any external callers use the new setter instead of directly
mutating the map.
- Around line 26-27: The loadFields method on CustomFieldResolver can panic
because NewCustomFieldResolver allows r.client to be nil but loadFields
dereferences r.client unconditionally; modify loadFields to check for a nil
r.client at the start (after acquiring the read lock or use write lock as
needed), return a clear error (or no-op) if r.client == nil, and avoid any calls
like r.client.SomeMethod when nil; ensure the same nil-check pattern is applied
to the other affected block(s) referenced (around lines 34-41) so all accesses
to r.client are guarded.
---
Nitpick comments:
In `@pkg/jira/customfield_test.go`:
- Around line 74-87: Extend the test to exercise the resolver fallback path
instead of only direct-ID lookup: create or configure a Resolver with
Resolver.FallbackIDs mapping a human name (e.g. "qa_field") to
"customfield_12316243", create an Issue whose Fields.Unknowns contains
"customfield_12316243" => "qa@example.com" but no direct entry for the human
name, then call the public resolution helpers (FieldID and/or ValueByID) with
the human name and assert you get "customfield_12316243" for FieldID and
"qa@example.com" for ValueByID; update or add a test (adjacent to
TestValueByID_with_fallback_id) that references Resolver.FallbackIDs, ValueByID,
and FieldID so the fallback behavior is exercised.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 0a8a5657-bbf2-4844-92b9-7332ce849f98
⛔ Files ignored due to path filters (233)
go.sumis excluded by!**/*.sumvendor/github.com/google/go-cmp/cmp/report_compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/go-cmp/cmp/report_reflect.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_forward.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_order.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/http_assertions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_default.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/tracer.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.codespellignoreis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.golangci.ymlis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.lycheeignoreis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CHANGELOG.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CODEOWNERSis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CONTRIBUTING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/Makefileis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/RELEASING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.ymlis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/VERSIONING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/encoder.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/filter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/hash.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/internal/attribute.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/internal/xxhash/xxhash.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/key.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/kv.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/set.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/type_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/baggage/baggage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/codes/codes.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/dependencies.Dockerfileis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/instruments.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/internal_logging.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/trace.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/asyncfloat64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/asyncint64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/noop/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/syncfloat64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/syncint64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/baggage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/propagation.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/trace_context.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/internal/x/features.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/internal/x/x.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/instrument.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/instrumentkind_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/provider.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/builtin.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/container.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/env.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/process.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/resource.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/attribute_group.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/error_type.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/exception.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/otelconv/metric.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/schema.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/auto.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/hex.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/noop/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/trace.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/tracestate.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/versions.yamlis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_arm64.sis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_gc_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_x86.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/mkerrors.shis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_386.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_amd64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_arm.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_loong64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_s390x.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.gois excluded by!vendor/**,!**/vendor/**vendor/modules.txtis excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/apis/prowjobs/v1/types.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/bugzilla/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/cache/cache.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/cache.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/jobs.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/tide.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/crier/reporters/gerrit/reporter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/deck/jobs/jobs.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/genyaml/genyaml.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/genyaml/populate_struct.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/gerrit/adapter/adapter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/gerrit/client/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/hook/server.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/interrupts/interrupts.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/io/opener.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/jira/jira.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/kube/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/logrusutil/logrusutil.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/moonraker/moonraker.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/filter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/pjutil.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/tot.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pluginhelp/hook/hook.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/approve/approvers/owners.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/assign/assign.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/blockade/blockade.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/blunderbuss/blunderbuss.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/bugzilla/bugzilla.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/cat/cat.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/cla/cla.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/dog/dog.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/goose/goose.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/heart/heart.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/issue-management/link-issue.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/jira/jira.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/plugin-config-documented.yamlis excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/plugins.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/pony/pony.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/releasenote/releasenote.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/respond.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/slackevents/slackevents.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/testfreeze/checker/checker.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/transfer-issue/transfer-issue.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trick-or-treat/trick-or-treat.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/generic-comment.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/push.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/trigger.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pod-utils/decorate/podspec.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pod-utils/downwardapi/jobspec.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/repoowners/repoowners.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/sidecar/censor.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/sidecar/run.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/slack/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/throttle/throttle.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/blockers/blockers.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/gerrit.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/github.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/history/history.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/status.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/tide.gois excluded by!vendor/**,!**/vendor/**
📒 Files selected for processing (3)
go.modpkg/jira/customfield.gopkg/jira/customfield_test.go
ef00ae7 to
e7cdfd2
Compare
There was a problem hiding this comment.
♻️ Duplicate comments (2)
pkg/jira/customfield.go (2)
19-20:⚠️ Potential issue | 🔴 CriticalSynchronize fallback map access to prevent concurrent map panics.
FallbackIDsis an exported mutable map (Line 19), andFieldIDreads it unsafely (Line 62). Concurrent writes by callers can causeconcurrent map read and map writepanics.Proposed fix
import ( "context" + "maps" "sync" jiraapi "github.com/andygrunwald/go-jira" jirautil "sigs.k8s.io/prow/pkg/jira" ) @@ type CustomFieldResolver struct { client *jiraapi.Client mu sync.RWMutex byName map[string]string loaded bool - FallbackIDs map[string]string // optional: field name -> custom field ID + fallbackIDs map[string]string // optional: field name -> custom field ID } @@ func NewCustomFieldResolver(client *jiraapi.Client) *CustomFieldResolver { - return &CustomFieldResolver{client: client, byName: make(map[string]string)} + return &CustomFieldResolver{ + client: client, + byName: make(map[string]string), + fallbackIDs: make(map[string]string), + } } + +func (r *CustomFieldResolver) SetFallbackIDs(ids map[string]string) { + r.mu.Lock() + defer r.mu.Unlock() + r.fallbackIDs = maps.Clone(ids) +} @@ - if r.FallbackIDs != nil { - if fallback := r.FallbackIDs[fieldName]; fallback != "" { - return fallback, nil - } - } + r.mu.RLock() + fallback := r.fallbackIDs[fieldName] + r.mu.RUnlock() + if fallback != "" { + return fallback, nil + }Also applies to: 62-64
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@pkg/jira/customfield.go` around lines 19 - 20, The exported mutable map FallbackIDs can be read concurrently in FieldID causing panics; add a sync.RWMutex field (e.g., fallbackMu or FallbackIDsMu) to the same struct that holds FallbackIDs and use RLock/RUnlock inside FieldID when accessing FallbackIDs, and update any internal writers to use Lock/Unlock (or provide setter/delete methods that lock) so all reads/writes to FallbackIDs are synchronized; refer to symbols FallbackIDs and FieldID when making the changes.
22-23:⚠️ Potential issue | 🔴 CriticalGuard
r.clientbefore dereference inloadFields.
NewCustomFieldResolverallows a nil client (Lines 22-23), butloadFieldsdereferencesr.clientunconditionally at Line 39. This can panic at runtime.Proposed fix
import ( "context" + "errors" "sync" @@ func (r *CustomFieldResolver) loadFields(ctx context.Context) error { @@ r.mu.Lock() defer r.mu.Unlock() if r.loaded { return nil } + if r.client == nil { + return errors.New("jira client is nil") + } fields, resp, err := r.client.Field.GetListWithContext(ctx)Also applies to: 39-39
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@pkg/jira/customfield.go` around lines 22 - 23, NewCustomFieldResolver currently allows creating a resolver with a nil jira client but loadFields dereferences r.client, which can panic; update loadFields to guard r.client before any dereference (e.g., at the top of loadFields check if r.client == nil and return early with a safe value or error), and keep using the existing byName map initialized by NewCustomFieldResolver; reference the NewCustomFieldResolver constructor and the loadFields method when applying the nil-check so the fix is localized to that method.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@pkg/jira/customfield.go`:
- Around line 19-20: The exported mutable map FallbackIDs can be read
concurrently in FieldID causing panics; add a sync.RWMutex field (e.g.,
fallbackMu or FallbackIDsMu) to the same struct that holds FallbackIDs and use
RLock/RUnlock inside FieldID when accessing FallbackIDs, and update any internal
writers to use Lock/Unlock (or provide setter/delete methods that lock) so all
reads/writes to FallbackIDs are synchronized; refer to symbols FallbackIDs and
FieldID when making the changes.
- Around line 22-23: NewCustomFieldResolver currently allows creating a resolver
with a nil jira client but loadFields dereferences r.client, which can panic;
update loadFields to guard r.client before any dereference (e.g., at the top of
loadFields check if r.client == nil and return early with a safe value or
error), and keep using the existing byName map initialized by
NewCustomFieldResolver; reference the NewCustomFieldResolver constructor and the
loadFields method when applying the nil-check so the fix is localized to that
method.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 4f0ffba6-4245-40f2-841d-d06ffc5209d3
⛔ Files ignored due to path filters (233)
go.sumis excluded by!**/*.sumvendor/github.com/google/go-cmp/cmp/report_compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/go-cmp/cmp/report_reflect.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_forward.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_order.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/http_assertions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_default.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/tracer.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.codespellignoreis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.golangci.ymlis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.lycheeignoreis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CHANGELOG.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CODEOWNERSis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CONTRIBUTING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/Makefileis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/RELEASING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.ymlis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/VERSIONING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/encoder.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/filter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/hash.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/internal/attribute.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/internal/xxhash/xxhash.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/key.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/kv.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/set.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/type_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/baggage/baggage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/codes/codes.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/dependencies.Dockerfileis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/instruments.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/internal_logging.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/trace.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/asyncfloat64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/asyncint64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/noop/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/syncfloat64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/syncint64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/baggage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/propagation.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/trace_context.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/internal/x/features.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/internal/x/x.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/instrument.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/instrumentkind_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/provider.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/builtin.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/container.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/env.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/process.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/resource.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/attribute_group.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/error_type.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/exception.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/otelconv/metric.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/schema.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/auto.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/hex.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/noop/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/trace.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/tracestate.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/versions.yamlis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_arm64.sis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_gc_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_x86.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/mkerrors.shis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_386.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_amd64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_arm.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_loong64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_s390x.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.gois excluded by!vendor/**,!**/vendor/**vendor/modules.txtis excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/apis/prowjobs/v1/types.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/bugzilla/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/cache/cache.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/cache.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/jobs.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/tide.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/crier/reporters/gerrit/reporter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/deck/jobs/jobs.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/genyaml/genyaml.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/genyaml/populate_struct.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/gerrit/adapter/adapter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/gerrit/client/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/hook/server.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/interrupts/interrupts.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/io/opener.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/jira/jira.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/kube/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/logrusutil/logrusutil.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/moonraker/moonraker.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/filter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/pjutil.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/tot.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pluginhelp/hook/hook.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/approve/approvers/owners.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/assign/assign.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/blockade/blockade.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/blunderbuss/blunderbuss.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/bugzilla/bugzilla.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/cat/cat.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/cla/cla.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/dog/dog.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/goose/goose.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/heart/heart.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/issue-management/link-issue.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/jira/jira.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/plugin-config-documented.yamlis excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/plugins.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/pony/pony.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/releasenote/releasenote.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/respond.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/slackevents/slackevents.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/testfreeze/checker/checker.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/transfer-issue/transfer-issue.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trick-or-treat/trick-or-treat.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/generic-comment.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/push.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/trigger.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pod-utils/decorate/podspec.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pod-utils/downwardapi/jobspec.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/repoowners/repoowners.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/sidecar/censor.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/sidecar/run.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/slack/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/throttle/throttle.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/blockers/blockers.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/gerrit.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/github.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/history/history.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/status.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/tide.gois excluded by!vendor/**,!**/vendor/**
📒 Files selected for processing (3)
go.modpkg/jira/customfield.gopkg/jira/customfield_test.go
e7cdfd2 to
65933f5
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
pkg/jira/customfield.go (2)
15-20:⚠️ Potential issue | 🔴 CriticalSynchronize fallback ID access.
Line 64 reads an exported map without
mu, so callers can triggerconcurrent map read and map writeby updating fallbacks while lookups are running. Keep the map private and only replace/read it under the resolver lock.Proposed fix
+import "maps" + type CustomFieldResolver struct { client *jiraapi.Client mu sync.RWMutex byName map[string]string loaded bool - FallbackIDs map[string]string // optional: field name -> custom field ID + fallbackIDs map[string]string // optional: field name -> custom field ID } func NewCustomFieldResolver(client *jiraapi.Client) *CustomFieldResolver { - return &CustomFieldResolver{client: client, byName: make(map[string]string)} + return &CustomFieldResolver{ + client: client, + byName: make(map[string]string), + fallbackIDs: make(map[string]string), + } } + +func (r *CustomFieldResolver) SetFallbackIDs(ids map[string]string) { + r.mu.Lock() + defer r.mu.Unlock() + r.fallbackIDs = maps.Clone(ids) +} @@ - if r.FallbackIDs != nil { - if fallback := r.FallbackIDs[fieldName]; fallback != "" { - return fallback, nil - } - } + r.mu.RLock() + fallback := r.fallbackIDs[fieldName] + r.mu.RUnlock() + if fallback != "" { + return fallback, nil + }Also applies to: 63-65
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@pkg/jira/customfield.go` around lines 15 - 20, The exported map FallbackIDs on CustomFieldResolver is being read without locking, causing race conditions; make the map unexported (e.g., fallbackIDs) and ensure all accesses and replacements happen under the resolver's mu (use mu.Lock()/mu.Unlock() for writes and mu.RLock()/mu.RUnlock() for reads), and when updating replace the entire map atomically (assign a new map while holding mu) or copy-on-write to avoid concurrent read/write panics; update any methods that reference FallbackIDs (and any callers) to use the new private field and the locked accessors.
23-25:⚠️ Potential issue | 🟠 MajorGuard
loadFieldsagainst a nil Jira client.
NewCustomFieldResolveracceptsnil, but Line 40 dereferencesr.clientunconditionally. The firstFieldIDorValuecall will panic instead of returning an error.Proposed fix
+import "errors" + func (r *CustomFieldResolver) loadFields(ctx context.Context) error { r.mu.RLock() if r.loaded { r.mu.RUnlock() return nil @@ r.mu.Lock() defer r.mu.Unlock() if r.loaded { return nil } + if r.client == nil { + return errors.New("jira client is nil") + } fields, resp, err := r.client.Field.GetListWithContext(ctx)Also applies to: 27-40
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@pkg/jira/customfield.go` around lines 23 - 25, NewCustomFieldResolver currently allows creating a CustomFieldResolver with a nil jira client but loadFields (called by methods FieldID and Value) dereferences r.client unconditionally; update loadFields to check for r.client == nil and return a descriptive error instead of panicking, and propagate that error back to callers (FieldID and Value) so they return the error instead of panicking; reference functions: NewCustomFieldResolver, loadFields, FieldID, Value and field r.client when adding the nil-check and error return.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Makefile`:
- Around line 278-279: The Makefile currently overwrites GOFLAGS when invoking
the scripts (e.g. the lines with export GOFLAGS=-mod=vendor &&
hack/update-codegen.sh and export GOFLAGS=-mod=vendor &&
hack/generate-ci-op-reference.sh), which discards any flags provided by CI or
the caller; change these to append -mod=vendor to the existing GOFLAGS (e.g.
export GOFLAGS="${GOFLAGS} -mod=vendor" or the Makefile-equivalent) so the
original GOFLAGS are preserved, and apply the same change to the other
occurrence mentioned for the generate/imports commands.
---
Duplicate comments:
In `@pkg/jira/customfield.go`:
- Around line 15-20: The exported map FallbackIDs on CustomFieldResolver is
being read without locking, causing race conditions; make the map unexported
(e.g., fallbackIDs) and ensure all accesses and replacements happen under the
resolver's mu (use mu.Lock()/mu.Unlock() for writes and mu.RLock()/mu.RUnlock()
for reads), and when updating replace the entire map atomically (assign a new
map while holding mu) or copy-on-write to avoid concurrent read/write panics;
update any methods that reference FallbackIDs (and any callers) to use the new
private field and the locked accessors.
- Around line 23-25: NewCustomFieldResolver currently allows creating a
CustomFieldResolver with a nil jira client but loadFields (called by methods
FieldID and Value) dereferences r.client unconditionally; update loadFields to
check for r.client == nil and return a descriptive error instead of panicking,
and propagate that error back to callers (FieldID and Value) so they return the
error instead of panicking; reference functions: NewCustomFieldResolver,
loadFields, FieldID, Value and field r.client when adding the nil-check and
error return.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 47d78d3e-d722-4d67-a8a2-8733277ff178
⛔ Files ignored due to path filters (231)
go.sumis excluded by!**/*.sumvendor/github.com/stretchr/testify/assert/assertion_compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_forward.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertion_order.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/assertions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/http_assertions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_default.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/auto/sdk/tracer.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.codespellignoreis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.golangci.ymlis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/.lycheeignoreis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CHANGELOG.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CODEOWNERSis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/CONTRIBUTING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/Makefileis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/RELEASING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.ymlis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/VERSIONING.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/encoder.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/filter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/hash.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/internal/attribute.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/internal/xxhash/xxhash.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/key.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/kv.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/set.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/type_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/attribute/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/baggage/baggage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/codes/codes.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/dependencies.Dockerfileis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/instruments.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/internal_logging.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/internal/global/trace.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/asyncfloat64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/asyncint64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/noop/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/syncfloat64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/metric/syncint64.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/baggage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/propagation.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/propagation/trace_context.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/internal/x/features.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/internal/x/x.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/instrument.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/instrumentkind_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/meter.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality_string.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/provider.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/reader.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/metric/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/builtin.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/container.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/env.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/process.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/resource/resource.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/sdk/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/MIGRATION.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/README.mdis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/attribute_group.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/doc.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/error_type.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/exception.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/otelconv/metric.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.39.0/schema.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/auto.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/config.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/hex.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/noop/noop.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/span.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/trace.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/trace/tracestate.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/version.gois excluded by!vendor/**,!**/vendor/**vendor/go.opentelemetry.io/otel/versions.yamlis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_arm64.sis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_gc_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/cpu/cpu_x86.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/mkerrors.shis excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_386.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_amd64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_arm.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_arm64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_loong64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_s390x.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.gois excluded by!vendor/**,!**/vendor/**vendor/modules.txtis excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/apis/prowjobs/v1/types.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/bugzilla/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/cache/cache.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/cache.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/jobs.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/config/tide.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/crier/reporters/gerrit/reporter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/deck/jobs/jobs.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/genyaml/genyaml.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/genyaml/populate_struct.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/gerrit/adapter/adapter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/gerrit/client/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/hook/server.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/interrupts/interrupts.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/io/opener.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/jira/jira.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/kube/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/logrusutil/logrusutil.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/moonraker/moonraker.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/filter.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/pjutil.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pjutil/tot.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pluginhelp/hook/hook.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/approve/approvers/owners.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/assign/assign.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/blockade/blockade.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/blunderbuss/blunderbuss.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/bugzilla/bugzilla.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/cat/cat.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/cla/cla.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/config.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/dog/dog.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/goose/goose.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/heart/heart.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/issue-management/link-issue.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/jira/jira.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/plugin-config-documented.yamlis excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/plugins.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/pony/pony.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/releasenote/releasenote.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/respond.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/slackevents/slackevents.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/testfreeze/checker/checker.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/transfer-issue/transfer-issue.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trick-or-treat/trick-or-treat.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/generic-comment.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/push.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/plugins/trigger/trigger.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pod-utils/decorate/podspec.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/pod-utils/downwardapi/jobspec.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/repoowners/repoowners.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/sidecar/censor.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/sidecar/run.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/slack/client.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/throttle/throttle.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/blockers/blockers.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/gerrit.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/github.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/history/history.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/status.gois excluded by!vendor/**,!**/vendor/**vendor/sigs.k8s.io/prow/pkg/tide/tide.gois excluded by!vendor/**,!**/vendor/**
📒 Files selected for processing (4)
Makefilego.modpkg/jira/customfield.gopkg/jira/customfield_test.go
🚧 Files skipped from review as they are similar to previous changes (1)
- pkg/jira/customfield_test.go
65933f5 to
f525545
Compare
|
@deepsm007: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions 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. |
Changes
Prow
replace sigs.k8s.io/prow => github.com/deepsm007/prowfromgo.mod.sigs.k8s.io/prow@main(post-merge of PR 657).Jira custom fields (
pkg/jira/)map[string]string, name → ID) used when name lookup is empty so callers can supply known IDs (e.g.customfield_12316243).TestValueByID,TestValueByID_with_fallback_idinpkg/jira/customfield_test.go.Usage
resolver.FieldID(ctx, "QA Contact")thenValueByID(issue, id), orresolver.Value(ctx, issue, "QA Contact").resolver.FallbackIDs = map[string]string{"QA Contact": "customfield_12316243", "Target Version": "customfield_12319940"}(or your instance IDs).ValueByID(issue, "customfield_12316243").Testing
go test ./pkg/jira/...passes./cc @openshift/test-platform