Repository navigation
fix(plugins): continue batch operations after failures - #11490
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Central YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughPlugin install and update now share asynchronous task joining and aggregated failure reporting. Batch operations continue collecting task results, sort multiple failures, preserve single-error chains, and include end-to-end coverage for failed and partially successful plugin batches. ChangesPlugin batch failure handling
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant PluginCommand
participant PluginTask
participant join_plugin_tasks
User->>PluginCommand: run batch install or update
PluginCommand->>PluginTask: spawn bounded operation
PluginTask-->>join_plugin_tasks: return plugin name and result
join_plugin_tasks->>PluginTask: join remaining tasks
join_plugin_tasks-->>PluginCommand: return aggregated result
PluginCommand-->>User: report success or failed plugin names
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR makes batch plugin operations drain all spawned tasks before reporting failures.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains; the task-ID mapping now preserves plugin identity for panicked tasks, and all batch tasks are drained before failures are returned. Important Files Changed
Reviews (2): Last reviewed commit: "fix(plugins): continue batch operations ..." | Re-trigger Greptile |
Summary
plugins update, multi-pluginplugins install, andplugins install --allRoot cause
Both plugin batch paths returned from their
JoinSetloop as soon as the first error was observed. Dropping the set could cancel tasks that were still queued or running, so one broken plugin prevented unrelated plugins from completing.Behavior
All plugin tasks are now queued before execution and acquire the existing
--jobssemaphore inside each task. The shared completion helper drains the full task set, retains successful installs or updates, and reports failures only after every plugin has finished. Panicked tasks are also recorded without cancelling their siblings.Single-plugin URL installs remain on their existing direct path, and no CLI options or configuration formats change.
Validation
mise exec -- cargo test --all-features cli::plugins::tests --no-fail-fastmise run test:e2e e2e/plugins/test_plugin_batch_failuresmise run test:e2e e2e/plugins/test_plugin_update e2e/plugins/test_plugin_installmise exec -- cargo check --all-featuresmise exec -- cargo fmt --all -- --checkmise exec -- shellcheck -x e2e/plugins/test_plugin_batch_failuresmise exec -- shfmt -d -s e2e/plugins/test_plugin_batch_failuresmise run formatandmise run lintstop in thehkwrapper because this Sapling working copy is not detected as a Git repository; the applicable format and lint commands were run individually as listed above.Addresses #4803
AI-assisted — Tool: Codex; model: OpenAI/GPT-5; version: unavailable.
Summary by CodeRabbit
Bug Fixes
Tests