Skip to content

improve field accessor retrieval with nil checks and type assertions#694

Merged
matthyx merged 1 commit intomainfrom
panic
Jan 26, 2026
Merged

improve field accessor retrieval with nil checks and type assertions#694
matthyx merged 1 commit intomainfrom
panic

Conversation

@matthyx
Copy link
Copy Markdown
Contributor

@matthyx matthyx commented Jan 26, 2026

Summary by CodeRabbit

  • Bug Fixes
    • Improved field accessor retrieval to robustly handle nil receivers, invalid cached values, and type assertion failures, preventing potential application crashes.
    • Enhanced caching logic with comprehensive validation checks and strengthened fallback mechanisms to ensure reliable field access throughout the application.
    • Increased overall application stability by eliminating edge cases that could cause unexpected behavior.

✏️ Tip: You can customize this high-level summary in your review settings.

Signed-off-by: Matthias Bertschy <matthias.bertschy@gmail.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 26, 2026

📝 Walkthrough

Walkthrough

The getFieldAccessor function in datasource_event.go is enhanced with robust nil and type-safety checks. It now validates nil receivers, performs two-stage cache resolution using sync.Map, type-asserts cached values, and verifies field accessors implement the correct interface, returning a fallback accessor on any validation failure.

Changes

Cohort / File(s) Summary
Nil safety and type assertion improvements
pkg/utils/datasource_event.go
Added nil receiver check, two-stage cache resolution with explicit type assertions, nil guard for missing datasource fields, and accessor type verification. Cache now uses per-type sync.Map with LoadOrStore for field resolution. Fallback to missingFieldAccessor on any validation failure.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 A cache so clever, now holds its ground,
With nil-checks and assertions all around,
No panics shall spring from types unknown,
Defensive walls protect each stone! 🛡️✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and concisely describes the main change: adding nil checks and type assertions to improve field accessor retrieval robustness.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing touches
  • 📝 Generate docstrings

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

@matthyx matthyx added the release Create release label Jan 26, 2026
@matthyx matthyx merged commit 61c086d into main Jan 26, 2026
27 checks passed
@matthyx matthyx deleted the panic branch January 26, 2026 15:11
Darkflame72 pushed a commit to Darkflame72/home-ops that referenced this pull request Feb 10, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [kubescape-operator](https://kubescape.io/)
([source](https://github.com/kubescape/helm-charts)) | patch |
`1.30.2` → `1.30.3` |

---

### Release Notes

<details>
<summary>kubescape/helm-charts (kubescape-operator)</summary>

###
[`v1.30.3`](https://github.com/kubescape/helm-charts/releases/tag/kubescape-operator-1.30.3)

[Compare
Source](https://github.com/kubescape/helm-charts/compare/kubescape-operator-1.30.2...kubescape-operator-1.30.3)

Kubescape is an E2E Kubernetes cluster security platform

#### What's Changed

- chore: adding the ability to adjust the source of busybox by
[@&#8203;drew-viles](https://github.com/drew-viles) in
[#&#8203;784](https://github.com/kubescape/helm-charts/pull/784)
- add k8s context tag by
[@&#8203;YakirOren](https://github.com/YakirOren) in
[#&#8203;785](https://github.com/kubescape/helm-charts/pull/785)
- run system tests from private repo by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[#&#8203;786](https://github.com/kubescape/helm-charts/pull/786)
- add stream logs and wait for tests finish by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[#&#8203;787](https://github.com/kubescape/helm-charts/pull/787)
- fix attempt by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[#&#8203;788](https://github.com/kubescape/helm-charts/pull/788)
- Update 02-e2e-test.yaml by
[@&#8203;armobot](https://github.com/armobot) in
[#&#8203;789](https://github.com/kubescape/helm-charts/pull/789)
- Run test from private repo by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[#&#8203;791](https://github.com/kubescape/helm-charts/pull/791)
- add workflow\_call by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[#&#8203;792](https://github.com/kubescape/helm-charts/pull/792)
- add startup probe by
[@&#8203;YakirOren](https://github.com/YakirOren) in
[#&#8203;793](https://github.com/kubescape/helm-charts/pull/793)
- <kubescape/kubescape@v3.0.47...v3.0.48>
- Fix typos in documentation by
[@&#8203;oglok](https://github.com/oglok) in
[kubescape/kubescape#1913](https://github.com/kubescape/kubescape/pull/1913)
- fix: Kustomize directory analysis not working by
[@&#8203;majiayu000](https://github.com/majiayu000) in
[kubescape/kubescape#1914](https://github.com/kubescape/kubescape/pull/1914)
- feat: Define labels to copy from workloads to reports by
[@&#8203;majiayu000](https://github.com/majiayu000) in
[kubescape/kubescape#1915](https://github.com/kubescape/kubescape/pull/1915)
- Add SkipPersistence flag to MetricsQueryParams in metrics endpoint by
[@&#8203;BroderPeters](https://github.com/BroderPeters) in
[kubescape/kubescape#1917](https://github.com/kubescape/kubescape/pull/1917)
- ci: update scorecard action version by
[@&#8203;AndrewCharlesHay](https://github.com/AndrewCharlesHay)
in
[kubescape/kubescape#1918](https://github.com/kubescape/kubescape/pull/1918)
- update test lists by
[@&#8203;amirmalka](https://github.com/amirmalka) in
[kubescape/kubescape#1919](https://github.com/kubescape/kubescape/pull/1919)
- build(deps): Bump github.com/sigstore/cosign/v3 from
3.0.3-0.20251208232815-901b44d65952 to 3.0.4 by
[@&#8203;dependabot](https://github.com/dependabot)\[bot] in
[kubescape/kubescape#1920](https://github.com/kubescape/kubescape/pull/1920)
- Update build number retrieval and permissions in workflow by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/kubescape#1921](https://github.com/kubescape/kubescape/pull/1921)
- Fix workload scan to include allcontrols framework by
[@&#8203;Copilot](https://github.com/Copilot) in
[kubescape/kubescape#1922](https://github.com/kubescape/kubescape/pull/1922)
- build(deps): Bump github.com/sigstore/fulcio from 1.8.4 to 1.8.5 by
[@&#8203;dependabot](https://github.com/dependabot)\[bot] in
[kubescape/kubescape#1923](https://github.com/kubescape/kubescape/pull/1923)
- Fix panic on unsafe interface{} to string type assertions by
[@&#8203;Copilot](https://github.com/Copilot) in
[kubescape/kubescape#1926](https://github.com/kubescape/kubescape/pull/1926)
- build(deps): Bump github.com/theupdateframework/go-tuf/v2 from 2.3.0
to 2.3.1 by
[@&#8203;dependabot](https://github.com/dependabot)\[bot] in
[kubescape/kubescape#1927](https://github.com/kubescape/kubescape/pull/1927)
- build(deps): Bump github.com/sigstore/rekor from 1.4.3 to 1.5.0 by
[@&#8203;dependabot](https://github.com/dependabot)\[bot] in
[kubescape/kubescape#1928](https://github.com/kubescape/kubescape/pull/1928)
- <kubescape/operator@v0.2.121...v0.2.126>
- bump version by
[@&#8203;jnathangreeg](https://github.com/jnathangreeg) in
[kubescape/operator#349](https://github.com/kubescape/operator/pull/349)
- Fix comment typo in checkECRRegistry function to clarify \_catalog
end… by [@&#8203;jnathangreeg](https://github.com/jnathangreeg)
in
[kubescape/operator#351](https://github.com/kubescape/operator/pull/351)
- add permissions by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[kubescape/operator#352](https://github.com/kubescape/operator/pull/352)
- bump github.com/armosec/armoapi-go v0.0.673 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/operator#353](https://github.com/kubescape/operator/pull/353)
- bump github.com/kubescape/go-logger v0.0.26 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/operator#354](https://github.com/kubescape/operator/pull/354)
- bump github.com/goradd/maps v1.3.0 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/operator#355](https://github.com/kubescape/operator/pull/355)
- <kubescape/kubevuln@v0.3.98...v0.3.104>
- replace debian 12 with debian 13 when building container images by
[@&#8203;pfarikrispy](https://github.com/pfarikrispy) in
[kubescape/kubevuln#317](https://github.com/kubescape/kubevuln/pull/317)
- Add comprehensive documentation and governance by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/kubevuln#318](https://github.com/kubescape/kubevuln/pull/318)
- Bump github.com/cilium/cilium from 1.16.9 to 1.16.17 by
[@&#8203;dependabot](https://github.com/dependabot)\[bot] in
[kubescape/kubevuln#319](https://github.com/kubescape/kubevuln/pull/319)
- Add timeout to Grype DB update with graceful fallback to prevent
indefinite readiness probe failures by
[@&#8203;Copilot](https://github.com/Copilot) in
[kubescape/kubevuln#320](https://github.com/kubescape/kubevuln/pull/320)
- Prevent DB update cancellation on readiness probe by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/kubevuln#321](https://github.com/kubescape/kubevuln/pull/321)
- <kubescape/storage@v0.0.237...v0.0.239>
- feat: handle large object storage by clearing spec and updating
annotations by [@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/storage#279](https://github.com/kubescape/storage/pull/279)
- bump k8s version to v0.35.0 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/storage#280](https://github.com/kubescape/storage/pull/280)
- <kubescape/node-agent@v0.3.11...v0.3.36>
- feat: propagate IsTriggerAlert field from rules to runtime alerts by
[@&#8203;slashben](https://github.com/slashben) in
[kubescape/node-agent#686](https://github.com/kubescape/node-agent/pull/686)
- Generating release by
[@&#8203;slashben](https://github.com/slashben) in
[kubescape/node-agent#688](https://github.com/kubescape/node-agent/pull/688)
- Feature/rule engine redesign by
[@&#8203;YakirOren](https://github.com/YakirOren) in
[kubescape/node-agent#685](https://github.com/kubescape/node-agent/pull/685)
- refactor: update cloud metadata types to use armotypes package by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#689](https://github.com/kubescape/node-agent/pull/689)
- Replace host sensor with node agent sensing by
[@&#8203;Bezbran](https://github.com/Bezbran) in
[kubescape/node-agent#681](https://github.com/kubescape/node-agent/pull/681)
- use k8s-interface by
[@&#8203;Bezbran](https://github.com/Bezbran) in
[kubescape/node-agent#691](https://github.com/kubescape/node-agent/pull/691)
- optimize header parsing and add early return in ruleAppliesToContext
by [@&#8203;YakirOren](https://github.com/YakirOren) in
[kubescape/node-agent#692](https://github.com/kubescape/node-agent/pull/692)
- improve field accessor retrieval with nil checks and type assertions
by [@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#694](https://github.com/kubescape/node-agent/pull/694)
- Bump github.com/sigstore/sigstore from 1.9.5 to 1.10.4 by
[@&#8203;dependabot](https://github.com/dependabot)\[bot] in
[kubescape/node-agent#696](https://github.com/kubescape/node-agent/pull/696)
- Add Azure ResourceGroup enrichment to CloudMetadata by
[@&#8203;slashben](https://github.com/slashben) in
[kubescape/node-agent#697](https://github.com/kubescape/node-agent/pull/697)
- Add unit tests for Azure ResourceGroup parsing by
[@&#8203;slashben](https://github.com/slashben) in
[kubescape/node-agent#698](https://github.com/kubescape/node-agent/pull/698)
- remove toMap function by
[@&#8203;YakirOren](https://github.com/YakirOren) in
[kubescape/node-agent#693](https://github.com/kubescape/node-agent/pull/693)
- run system test from private repo by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[kubescape/node-agent#700](https://github.com/kubescape/node-agent/pull/700)
- bump: update golang-set dependency to v2.8.0 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#701](https://github.com/kubescape/node-agent/pull/701)
- bump: update armoapi-go dependency to v0.0.671 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#702](https://github.com/kubescape/node-agent/pull/702)
- update the tests\_groups by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[kubescape/node-agent#703](https://github.com/kubescape/node-agent/pull/703)
- bump: update dependencies for backend, storage, and OpenAPI packages
by [@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#704](https://github.com/kubescape/node-agent/pull/704)
- update chart repo by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[kubescape/node-agent#705](https://github.com/kubescape/node-agent/pull/705)
- bump: update cel-go dependency to v0.26.1 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#706](https://github.com/kubescape/node-agent/pull/706)
- Implement ClusterUID enrichment for runtime alerts by
[@&#8203;slashben](https://github.com/slashben) in
[kubescape/node-agent#708](https://github.com/kubescape/node-agent/pull/708)
- fix a bug where failed expressions would recompile on every event by
[@&#8203;YakirOren](https://github.com/YakirOren) in
[kubescape/node-agent#690](https://github.com/kubescape/node-agent/pull/690)
- fix container watcher error propagation by
[@&#8203;YakirOren](https://github.com/YakirOren) in
[kubescape/node-agent#709](https://github.com/kubescape/node-agent/pull/709)
- add permissions by
[@&#8203;bvolovat](https://github.com/bvolovat) in
[kubescape/node-agent#710](https://github.com/kubescape/node-agent/pull/710)
- upgrade to IG v0.48.1 by
[@&#8203;matthyx](https://github.com/matthyx) in
[kubescape/node-agent#695](https://github.com/kubescape/node-agent/pull/695)
-
<kubescape/synchronizer@v0.0.127...v0.0.128>
- perf: optimize memory usage by avoiding string-to-byte conversions by
[@&#8203;amirmalka](https://github.com/amirmalka) in
[kubescape/synchronizer#135](https://github.com/kubescape/synchronizer/pull/135)

#### New Contributors

- [@&#8203;drew-viles](https://github.com/drew-viles) made
their first contribution in
[#&#8203;784](https://github.com/kubescape/helm-charts/pull/784)
- [@&#8203;YakirOren](https://github.com/YakirOren) made their
first contribution in
[#&#8203;785](https://github.com/kubescape/helm-charts/pull/785)
- [@&#8203;armobot](https://github.com/armobot) made their
first contribution in
[#&#8203;789](https://github.com/kubescape/helm-charts/pull/789)
- [@&#8203;pfarikrispy](https://github.com/pfarikrispy) made
their first contribution in
[kubescape/kubevuln#317](https://github.com/kubescape/kubevuln/pull/317)
- [@&#8203;bvolovat](https://github.com/bvolovat) made their
first contribution in
[kubescape/operator#352](https://github.com/kubescape/operator/pull/352)
- [@&#8203;oglok](https://github.com/oglok) made their first
contribution in
[kubescape/kubescape#1913](https://github.com/kubescape/kubescape/pull/1913)
- [@&#8203;majiayu000](https://github.com/majiayu000) made
their first contribution in
[kubescape/kubescape#1914](https://github.com/kubescape/kubescape/pull/1914)
- [@&#8203;BroderPeters](https://github.com/BroderPeters) made
their first contribution in
[kubescape/kubescape#1917](https://github.com/kubescape/kubescape/pull/1917)
-
[@&#8203;AndrewCharlesHay](https://github.com/AndrewCharlesHay)
made their first contribution in
[kubescape/kubescape#1918](https://github.com/kubescape/kubescape/pull/1918)
- [@&#8203;Bezbran](https://github.com/Bezbran) made their
first contribution in
[kubescape/node-agent#681](https://github.com/kubescape/node-agent/pull/681)
- [@&#8203;bvolovat](https://github.com/bvolovat) made their
first contribution in
[kubescape/node-agent#700](https://github.com/kubescape/node-agent/pull/700)

**Full Changelog**:
<kubescape/helm-charts@kubescape-operator-1.30.2...kubescape-operator-1.30.3>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Darkflame72/home-ops).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvaGVsbSIsInR5cGUvcGF0Y2giXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Create release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants