New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reliable persistence #1101
Reliable persistence #1101
Conversation
be2c271
to
7668c6a
Compare
Transactions CostsSizes and execution budgets for Hydra protocol transactions. Note that unlisted parameters are currently using
Script summary
Cost of Init Transaction
Cost of Commit TransactionThis is using ada-only outputs for better comparability.
Cost of CollectCom Transaction
Cost of Close Transaction
Cost of Contest Transaction
Cost of Abort TransactionSome variation because of random mixture of still initial and already committed outputs.
Cost of FanOut TransactionInvolves spending head output and burning head tokens. Uses ada-only UTxO for better comparability.
End-To-End Benchmark ResultsThis page is intended to collect the latest end-to-end benchmarks results produced by Hydra's Continuous Integration system from the latest Please take those results with a grain of salt as they are currently produced from very limited cloud VMs and not controlled hardware. Instead of focusing on the absolute results, the emphasis should be on relative results, eg. how the timings for a scenario evolve as the code changes. Generated at 2023-10-10 10:05:19.9137102 UTC 3-nodes ScenarioA rather typical setup, with 3 nodes forming a Hydra head.
Baseline ScenarioThis scenario represents a minimal case and as such is a good baseline against which to assess the overhead introduced by more complex setups. There is a single hydra-node d with a single client submitting single input and single output transactions with a constant UTxO set of 1.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As already commented, this change does not completely fix #1079 even though it's a good step forward. the fact we are using 2 Persistence
handles we need to pass to the Reliability
layer somehow feels wrong but I don't have a better solution right now, perhaps something we should discuss together?
a22bcbd
to
8442b26
Compare
6044617
to
a3fa1c7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some comments left, and we should update the documentation for the Reliability
module
-- | Tracer to use for logging messages. | ||
Tracer IO (LogEntry tx msg) -> | ||
-- | Persistence directory | ||
FilePath -> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add some more comment on what's this directory is used for
eaa3382
to
6fa1f12
Compare
We removed the use of TVar but callback is not thread safe and therefore we need to ensure updates to the acks are atomic across broadcast and callback calls, which is not possible when writing to disk in both calls. Broadcast is "guaranteed" to be called from a single thread and therefore it's the only place where we can safely write to disk.
6fa1f12
to
9a1cebc
Compare
handles part of #1079