Skip to content

Add timeout to Grype DB update with graceful fallback to prevent indefinite readiness probe failures#320

Merged
matthyx merged 5 commits intomainfrom
copilot/fix-grype-db-update-issue
Jan 16, 2026
Merged

Add timeout to Grype DB update with graceful fallback to prevent indefinite readiness probe failures#320
matthyx merged 5 commits intomainfrom
copilot/fix-grype-db-update-issue

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Jan 16, 2026

Grype DB updates can hang silently during the 24-hour refresh cycle, causing pods to fail readiness probes indefinitely with no recovery mechanism.

Changes

  • Add 15-minute timeout to DB update operation using context.WithTimeout
  • Execute update in goroutine with buffered channel to enable timeout handling
  • Intelligent fallback behavior to prevent crashloop on slow networks:
    • Scheduled updates: On timeout, keeps existing DB and continues operating (retries in 24h)
    • Initial download: On timeout, restarts pod (no fallback available)
  • Graceful degradation instead of always crashing on timeout
// Create a context with timeout to prevent stuck updates
// 15 minutes allows for slow network connections while still catching truly stuck downloads
updateCtx, cancel := context.WithTimeout(ctx, 15*time.Minute)
defer cancel()

// Track if we have an existing DB to fall back on
hasExistingDB := g.dbStatus != nil

// Buffered channel (size 1) prevents goroutine from blocking if timeout occurs
resultCh := make(chan updateResult, 1)

go func() {
    store, dbStatus, err := grype.LoadVulnerabilityDB(g.distCfg, g.installCfg, true)
    resultCh <- updateResult{store: store, dbStatus: dbStatus, err: err}
}()

select {
case result := <-resultCh:
    // Handle success/failure
case <-updateCtx.Done():
    if hasExistingDB {
        // Keep using old DB, log warning, stay ready
        logger.L().Ctx(ctx).Warning("grype DB update timed out after 15 minutes, continuing with existing DB")
        return true
    } else {
        // No DB to fall back on, must restart
        logger.L().Ctx(ctx).Error("grype DB initial download timed out after 15 minutes")
        tools.DeleteContents(g.installCfg.DBRootDir)
        os.Exit(0)
    }
}

Note: grype.LoadVulnerabilityDB does not accept context for cancellation, so the goroutine completes in background. The buffered channel ensures it won't block.

Behavior

  • Stuck download during scheduled update: Logs warning, continues with existing DB, retries in next 24h cycle
  • Stuck download during initial startup: Cleans cache and restarts pod
  • Slow but functional network: 15-minute timeout accommodates slow downloads, preventing crashloop
  • Update success: Updates DB normally
  • Update error: Cleans cache and restarts pod (existing behavior)
Original prompt

This section details on the original issue you should resolve

<issue_title>Readiness probe fail stuck due to Grype DB unsucessful update</issue_title>
<issue_description># Description
Readiness probe fails and pods get stuck due to Grype DB unsuccessful updates. The issue occurs intermittently during the automatic 24-hour Grype DB refresh cycle. When this happens, no logs are generated indicating “updating grype db” or any retry attempts. The pod remains stuck, causing readiness probe failures.

Environment

OS: <your OS here>
Version: v0.3.82

Steps To Reproduce

  1. Deploy Kubescape with Kubevuln integration enabled also custom endpoint we have for listing its a mirror of grype listings endpoint.
  2. Let it run for a few days until the scheduled Grype DB update is triggered (every 24 hours).
  3. Observe the logs during the DB update window.
  4. At random cycles, the update process hangs silently with no retry attempts and Pod readiness probe fails, leaving the pod stuck.

Expected behavior

Grype DB should update successfully every 24 hours. If the update fails or stalls, Kubevuln should log an error and retry downloading the database instead of remaining stuck.

Actual Behavior

  • Random failures during DB updates.
  • No logs generated showing the update attempt.
  • No retry mechanism triggered.
  • Pods status is Ready but stuck due to readiness probe failures.
  • As soon as deployment is restarted manually it works fine again.

Additional context

The issue was first noticed a few days after deployment when Grype DB updates failed silently. It seems the update process isn’t handling download errors and gets stuck with a lock, preventing the readiness probe from recovering. I tested by intentionally taking down our DB listing endpoint before deployment start, it clearly fails to download, falls back to the previous DB, and restarts gracefully until the endpoint is back. But when the deployment is already running and I take down the endpoint, it fails silently without retries. However, since our endpoints are normally available 24/7, I’m not sure where the issue lies but it should either retry and then restart itself when if readiness fails for a while.
</issue_description>

<agent_instructions>add a context timeout to restart the update or the Pod when it's stuck updating the grype DB</agent_instructions>

Comments on the Issue (you are @copilot in this section)

@matthyx actually the readiness probe should fail in that case... but maybe we could add a context timeout to restart the update or the Pod when it's stuck like that do you want to work on that @Ripeey ?

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Summary by CodeRabbit

  • Bug Fixes
    • Vulnerability database updates now run asynchronously with a 15-minute timeout
    • Database gracefully falls back to the previous version if an update times out, ensuring continuous operation
    • Enhanced error handling with automatic restart when needed

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

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 16, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

The Ready path now executes grype DB updates asynchronously with a 15-minute timeout enforced via context. A goroutine handles the LoadVulnerabilityDB call using a buffered channel to capture results. Success updates store and status; timeout with existing DB logs warning and reuses the current DB; timeout without existing DB logs error and restarts the process; errors trigger logging, cache cleanup, and process restart.

Changes

Cohort / File(s) Summary
Asynchronous DB Update with Timeout
adapters/v1/grype.go
Refactored synchronous LoadVulnerabilityDB call to run asynchronously in a goroutine with a buffered channel. Enforces 15-minute timeout via context. Implements fallback logic: timeout with existing DB logs warning and reuses DB; timeout without existing DB or on error logs and restarts process. Introduces hasExistingDB flag to distinguish recovery behaviors.

Sequence Diagram

sequenceDiagram
    actor Caller as Caller/Scheduler
    participant Ready as Ready()
    participant Context as Context (15m timeout)
    participant Goroutine as Goroutine
    participant LoadDB as LoadVulnerabilityDB()
    participant Store as Store
    participant Logger as Logger
    participant Process as Process

    Caller->>Ready: Check readiness & update DB
    Ready->>Context: Create context with 15min timeout
    Ready->>Goroutine: Launch async LoadVulnerabilityDB
    
    par Timeout Monitor
        Context-->>Ready: Await result or timeout
    and Async Work
        Goroutine->>LoadDB: Load vulnerability DB
        alt Success
            LoadDB-->>Goroutine: Return DB
            Goroutine->>Store: Update store & status
            Goroutine->>Logger: Log success
            Goroutine-->>Ready: Send result on channel
            Ready->>Ready: Return true
        else Error/Failure
            LoadDB-->>Goroutine: Return error
            Goroutine->>Logger: Log error
            Goroutine->>Store: Cleanup cache
            Goroutine->>Process: os.Exit(0)
        end
    end
    
    alt Timeout Occurred
        Context->>Ready: Timeout fired
        alt Existing DB Present
            Ready->>Logger: Log warning (reusing)
            Ready->>Store: Refresh lastDbUpdate
            Ready->>Ready: Return true
        else No Existing DB
            Ready->>Logger: Log error
            Ready->>Store: Cleanup cache
            Ready->>Process: os.Exit(0)
        end
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 A rabbit's tale of async flows,
Where Grype DB through timeouts goes,
Fifteen minutes, channels wide,
Fallback dances safe inside,
Now readiness hops free! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a timeout to Grype DB updates with graceful fallback behavior to prevent readiness probe failures.
Linked Issues check ✅ Passed The implementation addresses all key objectives from issue #303: adds timeout to prevent stuck updates, implements graceful fallback for existing DBs, restarts on initial failures, and includes retry mechanism via 24h cycle.
Out of Scope Changes check ✅ Passed All changes are scoped to the Grype DB update mechanism and directly address the readiness probe failure issue; no unrelated modifications detected.
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.


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

Copilot AI and others added 2 commits January 16, 2026 13:02
Co-authored-by: matthyx <20683409+matthyx@users.noreply.github.com>
Co-authored-by: matthyx <20683409+matthyx@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix readiness probe failure due to Grype DB update issues Add timeout to Grype DB update to prevent indefinite readiness probe failures Jan 16, 2026
Copilot AI requested a review from matthyx January 16, 2026 13:11
@matthyx
Copy link
Copy Markdown
Contributor

matthyx commented Jan 16, 2026

@copilot what happens if downloading the grypeDB takes longer than 5 minutes because of poor internet access? Will we end up in a crashloop?

…B on timeout

Co-authored-by: matthyx <20683409+matthyx@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Jan 16, 2026

@copilot what happens if downloading the grypeDB takes longer than 5 minutes because of poor internet access? Will we end up in a crashloop?

Good catch! I've addressed this by:

  1. Increased timeout to 15 minutes - accommodates slow networks while still catching stuck downloads
  2. Smart fallback behavior - if timeout occurs during scheduled update (when an existing DB is available), the pod continues using the old DB instead of crashing
  3. Only crashes on initial download timeout - when there's no DB to fall back to

This prevents crashloop on slow networks while still handling stuck downloads. The pod will retry the update in the next 24-hour cycle.

Changes in commit d291b49

Copilot AI changed the title Add timeout to Grype DB update to prevent indefinite readiness probe failures Add timeout to Grype DB update with graceful fallback to prevent indefinite readiness probe failures Jan 16, 2026
@matthyx matthyx marked this pull request as ready for review January 16, 2026 14:58
@matthyx
Copy link
Copy Markdown
Contributor

matthyx commented Jan 16, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 16, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@adapters/v1/grype.go`:
- Around line 178-186: The call to g.DBVersion(ctx) while g.mu.Lock() is held
causes deadlock because DBVersion acquires g.mu.RLock(); replace that call with
a lock-free access to the status (or add an internal helper that assumes the
caller already holds the lock). Specifically, inside the updateCtx.Done()
handling where g.mu.Lock() is held, read g.dbStatus.From directly (or create a
new dbVersionLocked() helper that parses g.dbStatus.From without acquiring any
mutex) and use that value in the logger and when setting g.lastDbUpdate to avoid
calling DBVersion while holding the write lock.
🧹 Nitpick comments (1)
adapters/v1/grype.go (1)

187-195: Minor style consideration: unreachable code after os.Exit.

While os.Exit(0) terminates the process and the code is technically correct, some static analysis tools may flag the lack of an explicit return. Consider adding a return false after os.Exit(0) for clarity, though this is optional since the code is unreachable.

Optional: add unreachable return for static analysis
 			logger.L().Info("restarting pod due to grype DB initial download timeout")
 			os.Exit(0)
+			return false // unreachable, but satisfies static analysis
 		}
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 666ace5 and d291b49.

📒 Files selected for processing (1)
  • adapters/v1/grype.go
🧰 Additional context used
🧬 Code graph analysis (1)
adapters/v1/grype.go (1)
internal/tools/tools.go (1)
  • DeleteContents (94-106)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: pr-created / test / Create cross-platform build
  • GitHub Check: build-and-push-image
🔇 Additional comments (4)
adapters/v1/grype.go (4)

137-140: LGTM on timeout context setup.

The 15-minute timeout is reasonable for slow networks while still catching truly stuck downloads. The deferred cancel() ensures proper cleanup.


142-143: LGTM on existing DB tracking.

Correctly captures whether a fallback DB exists before starting the async update.


145-153: LGTM on channel design.

The buffered channel (size 1) correctly prevents the goroutine from blocking if timeout occurs, and the comments clearly explain this design decision.


155-161: Acknowledge the goroutine completion behavior.

Since grype.LoadVulnerabilityDB doesn't accept a context, the goroutine continues running after timeout. This is an acceptable trade-off given the constraint. In the timeout-with-existing-DB scenario, the orphaned goroutine will eventually complete and the result will be discarded—which is fine since we've already decided to continue with the existing DB.

One consideration: if the background download succeeds after timeout, the downloaded DB files remain on disk but aren't loaded into memory until the next 24h cycle. This is benign but worth noting.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment thread adapters/v1/grype.go
Comment on lines +178 to +186
case <-updateCtx.Done():
if hasExistingDB {
// We have an existing DB, keep using it instead of crashing
// This prevents crashloop in case of slow but functional network
logger.L().Ctx(ctx).Warning("grype DB update timed out after 15 minutes, continuing with existing DB",
helpers.String("existingDBVersion", g.DBVersion(ctx)))
// Update lastDbUpdate to prevent immediate retry, will retry in next 24h cycle
g.lastDbUpdate = now
return true
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot Jan 16, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Deadlock: g.DBVersion(ctx) acquires read lock while write lock is held.

At line 183, g.DBVersion(ctx) is called while g.mu.Lock() is already held (acquired at line 130). The DBVersion method (lines 112-118) attempts to acquire g.mu.RLock(), which will deadlock since Go's sync.RWMutex does not support re-entrant locking.

🔧 Proposed fix: access dbStatus directly without calling DBVersion
 		case <-updateCtx.Done():
 			if hasExistingDB {
 				// We have an existing DB, keep using it instead of crashing
 				// This prevents crashloop in case of slow but functional network
+				parts := strings.Split(g.dbStatus.From, "%3A")
+				existingVersion := parts[len(parts)-1]
 				logger.L().Ctx(ctx).Warning("grype DB update timed out after 15 minutes, continuing with existing DB",
-					helpers.String("existingDBVersion", g.DBVersion(ctx)))
+					helpers.String("existingDBVersion", existingVersion))
 				// Update lastDbUpdate to prevent immediate retry, will retry in next 24h cycle
 				g.lastDbUpdate = now
 				return true

Alternatively, create an internal helper that doesn't acquire the lock:

func (g *GrypeAdapter) dbVersionLocked() string {
	parts := strings.Split(g.dbStatus.From, "%3A")
	return parts[len(parts)-1]
}
🤖 Prompt for AI Agents
In `@adapters/v1/grype.go` around lines 178 - 186, The call to g.DBVersion(ctx)
while g.mu.Lock() is held causes deadlock because DBVersion acquires
g.mu.RLock(); replace that call with a lock-free access to the status (or add an
internal helper that assumes the caller already holds the lock). Specifically,
inside the updateCtx.Done() handling where g.mu.Lock() is held, read
g.dbStatus.From directly (or create a new dbVersionLocked() helper that parses
g.dbStatus.From without acquiring any mutex) and use that value in the logger
and when setting g.lastDbUpdate to avoid calling DBVersion while holding the
write lock.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@copilot can you check?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

@matthyx matthyx added the release Create release label Jan 16, 2026
@matthyx matthyx merged commit e5ba930 into main Jan 16, 2026
9 of 11 checks passed
@matthyx matthyx deleted the copilot/fix-grype-db-update-issue branch January 16, 2026 15:48
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.

Readiness probe fail stuck due to Grype DB unsucessful update

2 participants