fix: improve epoxy propose errors, add gcp logging fmt#4698
Conversation
|
🚅 Deployed to the rivet-pr-4698 environment in rivet-frontend
|
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
f7f556c to
ca359e4
Compare
9c42c67 to
a1d6d8b
Compare
PR #4698 Review: fix: improve epoxy propose errors, add gcp logging fmtSummary: This PR does two things: (1) restructures ProposalResult in the epoxy consensus subsystem to replace the opaque ConsensusFailed/CommandError variants with a unified ConsensusFailed type that carries structured failure context; and (2) adds a GCP Cloud Logging (Stackdriver) output format selectable via RUST_LOG_FORMAT=gcp. Must Fix Test compilation failures. Three test files still import CommandError which no longer exists in epoxy::ops::propose:
All three files also match against ProposalResult::CommandError(CommandError::ExpectedValueDoesNotMatch) (e.g., kv.rs lines 42-44, 70-72, 107-109; backfill_snapshot.rs lines 100, 226; migration.rs line 36). These will not compile. They need to be updated to match the new ConsensusFailedReason::ExpectedValueDoesNotMatch pattern. Should Address Gasoline activity output serialization break. ProposalResult is used as the return type of the propose activity in engine/packages/pegboard/src/workflows/actor/keys.rs and actor2/keys.rs. Gasoline serializes activity outputs to JSON for workflow replay. The serialized JSON shapes have changed with this refactor. Any in-flight workflows with a persisted Propose activity output using the old JSON shape will fail deserialization on replay after deploy. Consider serde(alias) attributes to bridge the gap if forward-compatibility is needed. Should Fix Em dash in doc comment (engine/packages/runtime/src/traces.rs:17): CLAUDE.md explicitly prohibits em dashes. Change the doc comment to use a period instead. Minor Redundant branch in result_for_committed_value (engine/packages/epoxy/src/ops/propose.rs lines 137-153): The mutable and non-mutable branches now produce identical code after the unification. The branch can be collapsed to a simple conditional on current_value == self.value. Good Changes
Summary
|

Description
Please include a summary of the changes and the related issue. Please also include relevant motivation and context.
Type of change
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Checklist: