Commit Graph

141 Commits

Author SHA1 Message Date
Jane Lusby a6bd77e98a
Add check to ensure heights in state service are sequential (#1290)
* Add check to ensure heights in state service are sequential

Co-authored-by: teor <teor@riseup.net>
2020-11-17 09:53:33 +10:00
Jane Lusby 4c2b44be93
Add tests for QueuedBlocks (#1268)
* Add unit test for QueuedBlocks
* Add test for pruned blocks
2020-11-17 09:31:22 +10:00
teor 2253ab3c00 Improve state request docs
Document best and any chain requests
Explain that the block locator is sparse
2020-11-17 07:52:53 +10:00
Jane Lusby 57637560b9
Add internal iterator API for accessing relevant chain blocks (#1271)
* Add internal iterator API for accessing relevant chain blocks
* get blocks from all chains in non_finalized state
* Impl FusedIterator for service::Iter
* impl ExactSizedIterator for service::Iter
* let size_hint find heights in side chains

Co-authored-by: teor <teor@riseup.net>
2020-11-16 12:22:53 +10:00
dependabot[bot] 18eb4d1c31 build(deps): bump primitive-types from 0.7.2 to 0.7.3
Bumps [primitive-types](https://github.com/paritytech/parity-common) from 0.7.2 to 0.7.3.
- [Release notes](https://github.com/paritytech/parity-common/releases)
- [Commits](https://github.com/paritytech/parity-common/compare/primitive-types-v0.7.2...primitive-types-v0.7.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-13 15:59:04 -05:00
dependabot[bot] 8c5f6d0177 build(deps): bump once_cell from 1.5.1 to 1.5.2
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.5.1...v1.5.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-13 14:48:11 -05:00
Jane Lusby 7403897fda
Add transcript tests as described in the state service tracking issue (#1281)
* Add transcript test for requests while state is empty

* Add happy path test for each query once the state is populated

* let populate logic handle out of order blocks
2020-11-13 10:19:47 -08:00
Jane Lusby 8ba9d0114b
Add consensus critical check for sequential heights (#1291)
* Add consensus critical check for sequential heights
* document the check module
* Add unit tests for consensus checks
2020-11-13 14:26:16 +10:00
Jane Lusby 7c0275ac0b
reorganize stop check (#1288)
* reorganize stop check
* remove unused enum
* move out and make it unique
Co-authored-by: teor <teor@riseup.net>
2020-11-13 11:37:52 +10:00
teor 4e07719a7d
Add a maximum queued height metric to the finalized state (#1262)
* Add a maximum queued height metric to the finalized state
And rename all the finalized state metrics to contain "finalized".

* Use i32 and -1 instead of Option<Height>
Co-authored-by: Jane Lusby <jlusby42@gmail.com>
2020-11-13 09:49:55 +10:00
Jane Lusby 32934bd574 remove redundant conversions 2020-11-12 09:14:52 -05:00
Jane Lusby a5861e5ad9 use arbitrary for creating work 2020-11-12 09:14:52 -05:00
Jane Lusby b287ea58c2 Add proptest for work roundtrip 2020-11-12 09:14:52 -05:00
Jane Lusby a798074088 split conversion into a fn 2020-11-12 09:14:52 -05:00
Jane Lusby ae843d856f Add comment explaining work to expanded conversion 2020-11-12 09:14:52 -05:00
Jane Lusby 1bc833dbcc Move work conversion helpers to test code 2020-11-12 09:14:52 -05:00
Jane Lusby beede1c03d tweek chain test to use set_work 2020-11-12 09:14:52 -05:00
Jane Lusby c41a7303fa Add helpers for setting work on fake chains 2020-11-12 09:14:52 -05:00
Jane Lusby dc9081b738 clarify test name 2020-11-12 09:14:52 -05:00
Jane Lusby a398e96f79 Update zebra-state/src/service/memory_state/non_finalized_state.rs
Co-authored-by: teor <teor@riseup.net>
2020-11-12 09:14:52 -05:00
Jane Lusby c54b07eb32 Update zebra-state/src/service/memory_state/non_finalized_state.rs
Co-authored-by: teor <teor@riseup.net>
2020-11-12 09:14:52 -05:00
Jane Lusby 8279c65218 Update zebra-state/src/service/memory_state/non_finalized_state.rs
Co-authored-by: teor <teor@riseup.net>
2020-11-12 09:14:52 -05:00
Jane Lusby dcc19f6b25 fully cover commit_block 2020-11-12 09:14:52 -05:00
Jane Lusby 74af22e5ca Add unit tests for 2020-11-12 09:14:52 -05:00
dependabot[bot] a7ad73feac build(deps): bump sled from 0.34.4 to 0.34.5
Bumps [sled](https://github.com/spacejam/sled) from 0.34.4 to 0.34.5.
- [Release notes](https://github.com/spacejam/sled/releases)
- [Changelog](https://github.com/spacejam/sled/blob/master/CHANGELOG.md)
- [Commits](https://github.com/spacejam/sled/compare/v0.34.4...v0.34.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-10 11:01:06 -05:00
teor 41788c3f27
Add metrics for the non-finalized state and queue (#1263) 2020-11-10 11:11:58 +10:00
Alfredo Garcia 128643d81e
Call `zebra_test::init` where needed. (#1227)
* Add missing `zebra_test::init()` to zebra-chain
* Add missing `zebra_test::init()` to zebra-consensus
* Add missing `zebra_test::init()` to zebra-network
* Add missing `zebra_test::init()` to zebra-state
* Add missing `zebra_test::init()` to zebra-test
* Add missing `zebra_test::init()` to zebrad
2020-11-10 10:29:25 +10:00
Jane Lusby 34f50d7ebb
Fix inconsistencies related to best chain order in RFC and state impl (#1267)
Prior to this PR we realized that the RFC had been drafted with the assumption that chains would be ordered from best to worst in `NonFinalizedState`. This assumption was incorrect, since `BTreeSet` only ever orders values in ascending order. This discrepancy was noticed and fixed in the code, but there were still some inconsistencies that needed to be cleaned up.

This PR updates all the incorrect or confusing comments about chain ordering in the RFC and code.
2020-11-09 15:53:16 -08:00
Jane Lusby 818fede30f
Reorganize memory_state to avoid giant test module (#1258)
Prior to this PR `memory_state` defined and implemented functionality for three different types, `Chain`, `NonFinalizedState`, and `QueuedBlocks`. Each of these components will need a fair number of unit tests, and I realized that as its currently organized it would be difficult to organize the tests or at a glance figure out which tests are testing which components.

This PR changes the organization of `memory_state` such that each component it exports is defined in its own module. In follow up PRs each module will get its own test module, which will focus exclusively on unit tests for the item defined there-in.

- [Tracking Issue](https://github.com/ZcashFoundation/zebra/issues/1250)
2020-11-09 10:05:18 -08:00
Jane Lusby c9bf7f4cf6 Add tests for new sled impls needed for debug format 2020-11-09 09:12:26 -05:00
Jane Lusby c1de002f58 add key debug to assert error message 2020-11-09 09:12:26 -05:00
Jane Lusby ee7ec31aa2 Add a more relevant error message to insert panics 2020-11-09 09:12:26 -05:00
Deirdre Connolly 782f4606d0 Revert "Add message if assertion that sled map keys don't collide fails"
This reverts commit d784a23eabf57eb10596108b96d8964e06b6b7a3.
2020-11-09 09:12:26 -05:00
Deirdre Connolly 1a9490dc4f Revert "Bytes are Display-able"
This reverts commit c48e24e89bc6d43854f1e0e165349c9646fc36bc.
2020-11-09 09:12:26 -05:00
Deirdre Connolly 27d0fa8d83 Bytes are Display-able 2020-11-09 09:12:26 -05:00
Deirdre Connolly bfbdd7112b Add message if assertion that sled map keys don't collide fails
Co-authored-by: teor <teor@riseup.net>
2020-11-09 09:12:26 -05:00
Jane Lusby 76385e8620 assert that sled maps are collision free 2020-11-09 09:12:26 -05:00
Jane Lusby e8a3a28869
swap best_chain_len and related constants to u32 for consistency (#1257) 2020-11-06 14:00:10 +10:00
Jane Lusby 06e74d15ae
Add proptests for sled conversions (#1253)
* Add proptests for sled conversions
* document primary helper functions
2020-11-05 14:47:56 +10:00
dependabot[bot] e87340594a build(deps): bump thiserror from 1.0.21 to 1.0.22
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.21 to 1.0.22.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.21...1.0.22)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-04 19:28:42 -05:00
Jane Lusby 714def990e
make state service use both finalized and non-finalized state (#1239)
* make service use both finalized and non-finalized state

* Document new functions

* add documentation to sled fns

* cleanup tip fn now that errors are gone

* rename height unwrap fn
2020-11-01 10:49:34 -08:00
Jane Lusby 1b7c57371d
Fix format used to store transactions in sled (#1238)
## Motivation

While working on the block locator fix PR together with Henry we noticed that we'd accidentally serialized entire transactions in `tx_by_hash`, instead of serializing just the height of the block and the index of the transaction within the block, as described by the original RFC.

## Solution

We've fixed it by adding a `TransactionLocation` new type, which handles the sled format traits. We've removed the sled format impls for `Transaction` to prevent inserting the wrong data in the future. Finally we've bumped the database format to reflect the change in the format on the disk and its incompatibility with previous versions.
2020-10-30 15:24:39 -07:00
Henry de Valence e2c5b71323 state: document memory_cache_bytes, reduce default
Closes #1026

Because of the way that sled uses this parameter, the actual in-memory
size may be much larger.  Dialing this down should help avoid high
memory usage.
2020-10-29 14:31:50 -04:00
Henry de Valence 68b9a70a60 state: skip transactions in a genesis block 2020-10-29 09:58:56 -07:00
Henry de Valence 1573e0e4ae state: remove spent UTXOs in commit_finalized_direct 2020-10-29 09:58:56 -07:00
Jane Lusby c8a97f94b2 state: clean up SledState query impls 2020-10-29 09:58:56 -07:00
Jane Lusby dace92aca1 state: add SLED_FORMAT_VERSION prefix to db path
Also removes a redundant test.
2020-10-29 09:58:56 -07:00
Jane Lusby 2095b4f0d3 state: insert into nullifier trees 2020-10-29 09:58:56 -07:00
Jane Lusby 6758fdbd1c state: create SledSerialize, SledDeserialize traits 2020-10-29 09:58:56 -07:00
teor 0d47b80e68
Fix a comment typo 2020-10-27 19:31:45 +10:00