collect_usage propagates the first error from replace_app_deployment_usage_breakdown with ? (lnvps_operator/src/app_deployments.rs:1332), so every deployment after the failing one is skipped for that pass. The caller only warns, so the reconcile itself survives (app_deployments.rs:1260).
The denied DELETE that surfaced #314 made this visible: one grant problem emptied the breakdown for all deployments, not just the one that hit it. Same shape for a transient DB error.
Log and continue per deployment instead, the way the compose-parse failures just above it already do (app_deployments.rs:1315,1321).
Filed separately from #314, which is the grant docs only.
collect_usagepropagates the first error fromreplace_app_deployment_usage_breakdownwith?(lnvps_operator/src/app_deployments.rs:1332), so every deployment after the failing one is skipped for that pass. The caller only warns, so the reconcile itself survives (app_deployments.rs:1260).The denied DELETE that surfaced #314 made this visible: one grant problem emptied the breakdown for all deployments, not just the one that hit it. Same shape for a transient DB error.
Log and continue per deployment instead, the way the compose-parse failures just above it already do (
app_deployments.rs:1315,1321).Filed separately from #314, which is the grant docs only.