fix(fabricx): stop retaining RWSets and tx statuses in the vault - #1618
Conversation
|
Hey @SaidAltury-ibm 👋 thanks for the PR! This comment updates automatically as you push changes -- think of it as your PR's live scoreboard! PR Checks✅ DCO Sign-off -- All commits have valid sign-offs. Nice work! ✅ GPG Signature -- All commits have verified GPG signatures. Locked and loaded! ✅ Merge Conflicts -- No merge conflicts detected. Smooth sailing! ✅ Issue Link -- Linked to #1599 (assigned to you). 🎉 All checks passed! Your PR is ready for review. Great job! |
mbrandenburger
left a comment
There was a problem hiding this comment.
Thank you @SaidAltury-ibm - this is a solid PR. Please see my comments below.
Signed-off-by: Said Altury <Said.Altury@ibm.com>
mbrandenburger
left a comment
There was a problem hiding this comment.
Thank you @SaidAltury-ibm - greate updates on this PR. I think this PR is almost ready to be merged. Please see my minor comments below. Thank you
Signed-off-by: Said Altury <Said.Altury@ibm.com>
|
Tick the box to add this pull request to the merge queue (same as
|
closes #1599
The FabricX vault held two in-memory maps (rwsets, txStatuses) that grew
unboundedly: nothing on the FabricX path ever pruned or read them. FabricX has
no local commit pipeline — commit/validation happens in the external
fabric-x-committer, and finality is delivered by the gRPC notifier — so the
vault methods that populated or read those maps (CommitTX/DiscardTx/
SetDiscarded/Match/RWSExists) are never invoked in the FabricX wiring. Endorse-
only nodes were pinning ~1.5 GB of RWSets at rest as a result (PR #1206).
Changes:
NewRWSet/NewRWSetFromBytes no longer retain the RWSet; the wrapper owns it.
value. They exist only to satisfy fdriver.Vault; reaching one means the vault
was wired into a generic committer by mistake, which is a programming error,
not a runtime condition. Panicking fails loudly and cannot be silently
swallowed — RWSExists in particular has no error channel, so its old
falsereturn was an actively misleading answer.
the committer as Unknown ("not final yet") rather than as an error — the
condition a caller polling an in-flight tx will hit.
through a shared mutable field, fixing a data race between concurrent Bytes()
calls. The marshaller is now stateless; the racy field and its exported
wrapper are removed. Covered by a new -race test.