Repository navigation
refactor(pipeline): add PipelineError::reconstruct to de-duplicate outcome rematch - #416
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## feat-runall #416 +/- ##
==============================================
Coverage ? 93.31%
==============================================
Files ? 138
Lines ? 54928
Branches ? 0
==============================================
Hits ? 51254
Misses ? 3674
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…tcome rematch `Pipeline::run` (core/builder.rs) and the fused single-thread driver (core/runtime/fused.rs) each open-coded the same per-variant match to turn the borrowed `signal.outcome(): Option<&PipelineError>` into the owned error they return — necessary because `PipelineError` is not `Clone` (its `Io` variant holds a non-`Clone` `io::Error`). Extract that into `PipelineError::reconstruct(&self) -> PipelineError`; both call sites collapse to `Some(err) => Err(err.reconstruct())`. Behavior-identical (the `Io` source is still rebuilt from `kind()` + display string), and a future error variant now only needs handling in one place instead of two. Fused-pipeline and pipeline error-path tests pass unchanged.
4a6fa4b to
87ed834
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
Warning Review limit reached
More reviews will be available in 36 minutes and 15 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughAdds 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
|
@coderabbitai full review |
✅ Action performedFull review finished. |
…tcome rematch (#416) `Pipeline::run` (core/builder.rs) and the fused single-thread driver (core/runtime/fused.rs) each open-coded the same per-variant match to turn the borrowed `signal.outcome(): Option<&PipelineError>` into the owned error they return — necessary because `PipelineError` is not `Clone` (its `Io` variant holds a non-`Clone` `io::Error`). Extract that into `PipelineError::reconstruct(&self) -> PipelineError`; both call sites collapse to `Some(err) => Err(err.reconstruct())`. Behavior-identical (the `Io` source is still rebuilt from `kind()` + display string), and a future error variant now only needs handling in one place instead of two. Fused-pipeline and pipeline error-path tests pass unchanged.
Summary
Pipeline::run(core/builder.rs) and the fused single-thread driver (core/runtime/fused.rs) each open-coded the same per-variant match to turn the borrowedsignal.outcome(): Option<&PipelineError>into the owned error they return — necessary becausePipelineErroris notClone(itsIovariant holds a non-Cloneio::Error). Extract that intoPipelineError::reconstruct(&self) -> PipelineError; both call sites collapse toSome(err) => Err(err.reconstruct()).Behavior preservation
Identical — the
Iosource is still rebuilt fromkind()+ display string, all other variants copied. A future error variant now needs handling in one place instead of two. Fused-pipeline and pipeline error-path tests pass unchanged.Context
Third of the post-#330 subsystem-simplification cleanups (discovery bundle "pipeline misc"). Dual-reviewed before push (CLI: no findings; skill: 0 actionable).