feat(sharding): use non-blocking shard removal - #3285
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3285 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 164 165 +1
Lines 25589 25605 +16
=====================================
- Misses 25589 25605 +16 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
P1: |
|
P1 fixed at exact head Redis and FalkorDB ShardingDefinitions now use their existing full annotation helpers, which preserve Local evidence:
Core PR #10725 and runtime validation remain separate dependencies; this commit closes the addon-side same-name immutable-update blocker only. |
|
Current dependency/runtime ledger (2026-08-09):
This records exact dependencies and evidence boundaries only. It does not claim runtime acceptance. |
|
Dependency exact-head update: Core PR #10725 moved from The new Addon head remains |
What changed
Enable
nonBlockingfor theshardRemovelifecycle action in:Set
timeoutSeconds: 3600for all three actions. For non-blocking actions, this is the total execution budget across all argument invocations, retries, and retry intervals.Why
These shard-removal actions perform data-dependent work that can exceed the synchronous Action limit:
removeShardto complete.Without an explicit timeout, MongoDB would use the 30-second default. The existing 600-second values for Redis and FalkorDB would become hard total limits after switching to non-blocking execution. A finite one-hour window matches the intended long-running shard-operation configuration while still bounding stuck actions.
KubeBlocks can persist the selected targets and poll these actions until they reach a terminal result.
User impact
Scale-in for these sharded databases no longer depends on shard removal finishing within one synchronous controller call and has up to one hour to finish migration and retries. This requires apecloud/kubeblocks#10725.
Validation
For each of
redis,falkordb, andmongodb:helm dependency build --skip-refresh addons/<addon>helm lint addons/<addon>helm template <addon> addons/<addon>and verifiedspec.lifecycleActions.shardRemove.nonBlocking: trueandtimeoutSeconds: 3600