Commit Graph

405 Commits

Author SHA1 Message Date
Anatoly Yakovenko b1a648113f simple replay stage 2019-03-01 20:56:29 -08:00
anatoly yakovenko 041a06b432
kill multinode (#3038) 2019-03-01 20:09:13 -08:00
anatoly yakovenko c27726e065
Add a black box local cluster harness (#3028)
Integration test harness for the network.
2019-03-01 10:36:52 -08:00
Michael Vines 7c4473e0aa Rename Entry.id to Entry.hash 2019-03-01 09:31:49 -08:00
Michael Vines 251b0957f1
Ignore flaky test_dropped_handoff_recovery 2019-03-01 09:01:28 -08:00
Michael Vines 6b228df3df Remove last_entry_id/next_blob_index from TvuRotationInfo 2019-02-28 21:57:17 -08:00
Michael Vines 6cf6a1ccc3 process_blocktree() now halts forks at the first partial slot 2019-02-28 21:57:17 -08:00
Michael Vines 93d65aa9cc Use your words 2019-02-28 21:02:29 -08:00
Michael Vines f216a7179a
Ignore test_full_leader_validator_network 2019-02-28 21:01:10 -08:00
Sagar Dhawan 07e4f9a611 Fix PR race 2019-02-28 18:44:07 -08:00
Pankaj Garg d5f0e49535
Refactor fullnode rotation test (#3015) 2019-02-28 15:53:09 -08:00
Michael Vines 0dc5af62ff Standardize on 'use log::*' for easy access to all log level macros 2019-02-27 21:16:23 -08:00
Sagar Dhawan 3a20a20807
Reintroduce leader_id to blobs (#2986) 2019-02-27 13:37:08 -08:00
Michael Vines 140954a53c Remove Tpu::is_leader(), fullnode doesn't need it anymore 2019-02-27 11:55:21 -08:00
Michael Vines b5d7ac3ce3 Set delay based on ticks_per_slot to ensure the test makes it to a new block 2019-02-27 11:13:29 -08:00
Sathish Ambley 4149f7fd1c Fix review comments 2019-02-27 08:22:52 -08:00
Sathish Ambley c276375a0e Persistent account storage across directories 2019-02-27 08:22:52 -08:00
Michael Vines 9e2a7921c8 Recover from rebase 2019-02-26 22:08:17 -08:00
Michael Vines 84bd9296cd Centralize unwrap() within create_new_tmp_ledger! 2019-02-26 22:08:17 -08:00
Michael Vines 88ecce12a2 No longer need to give new_fullnode() a random string 2019-02-26 22:08:17 -08:00
Michael Vines 5a7b99ecc2 Add/employ create_new_tmp_ledger!() 2019-02-26 22:08:17 -08:00
Michael Vines 55a76ed4b0 Populate test ledgers with a full slots to reduce test boilerplate 2019-02-26 22:08:17 -08:00
Pankaj Garg 789fff2ae2 Replace LeaderScheduler with LeaderScheduler1 (#2962)
* Migrate to LeaderScheduler1 (and added some missing methods)
* Delete LeaderScheduler
* Rename LeaderScheduler1 to LeaderScheduler
2019-02-26 22:16:18 -07:00
Michael Vines a669241cb1 Add/use get_tmp_ledger_path!() and tmp_copy_blocktree!() 2019-02-26 17:50:43 -08:00
Michael Vines bc2d4c7681 Clean up test_boot_validator_from_file() 2019-02-26 11:12:05 -08:00
Michael Vines a7f200847f Clean up test_leader_restart_validator_start_from_old_ledger 2019-02-26 11:12:05 -08:00
Michael Vines 411f154827 Reduce log spam 2019-02-26 11:12:05 -08:00
anatoly yakovenko 6dcb97af9e
Move PohService and PohRecorder out of banking_stage and into fullnode (#2852)
* Move PohService out of banking_stage and into fullnode.

* 10 second slots
2019-02-26 10:48:18 -08:00
Carl 3e893ffddc Remove max_tick_height, leader_scheduler from broadcast_service 2019-02-25 18:17:36 -08:00
Pankaj Garg 299b642803 Cleanup fullnode rotate integration test, and unignore two tests 2019-02-25 16:55:22 -08:00
Michael Vines 6088b3bfc8 Replace DEFAULT_SLOT_HEIGHT with 0 2019-02-25 13:09:13 -08:00
Carl 0b37f530ae Start replay stage from the slot-relative blob index, not the global entry height 2019-02-25 11:38:46 -08:00
Greg Fitzgerald fdf6cae6fb Use bank for leader scheduler's config
This ensures GenesisBlock is always configured with the same
ticks_per_slot as LeaderScheduler. This will make it easier
to migrate to bank-generated schedules.
2019-02-23 14:48:27 -07:00
Greg Fitzgerald d26f836212 tmp_copy_ledger -> tmp_copy_blocktree 2019-02-23 08:32:05 -07:00
Greg Fitzgerald cc10e84ab7 sample_ledger -> sample_blocktree 2019-02-23 07:08:11 -07:00
Greg Fitzgerald 778583ad08 Inline BlockConfig::ticks_per_slot 2019-02-21 20:37:21 -08:00
Michael Vines b501090443 Route BankForks into the ReplayStage 2019-02-21 19:25:17 -08:00
Carl fc48062867 Rename active_window_length to active_window_num_slots 2019-02-21 15:48:13 -08:00
Michael Vines d25fc7a649 Stop passing blob_index unnecessarily into ReplayStage 2019-02-21 15:33:01 -07:00
Carl 60a6ff80ee Change votes and associated test/helper functions to vote based on slot height 2019-02-21 15:31:53 -07:00
Michael Vines 7cb695df12
RetransmitStage now gets a BankForks 2019-02-21 12:56:56 -08:00
Michael Vines dcf1200d2a Make Fullnode do less work on rotation, ReplayStage can just pass along more details 2019-02-21 11:13:06 -08:00
Sagar Dhawan 13d018e3e1
Fix stake selection for the Data Plane (#2863)
* Update data-plane to use stakes instead of a bank directly

* Rename get_stakes to staked_nodes
2019-02-20 21:38:16 -08:00
Sagar Dhawan 3c62e2332e
Cleanup stakes for gossip (#2860) 2019-02-20 20:02:47 -08:00
Sagar Dhawan a484c87354
Make gossip selection stake based (#2848) 2019-02-20 17:08:56 -08:00
Greg Fitzgerald dde886f058 Move Bank to its own crate
Also:
* counters.rs to solana_metrics
* genesis_block.rs to solana_sdk
2019-02-19 07:17:04 -07:00
Greg Fitzgerald ad9cd23202 Notify subscribers from ReplayStage 2019-02-18 20:04:30 -07:00
Greg Fitzgerald 0317583489 Move avalanche logic to ClusterInfo
The simulator doesn't depend on RetransmitStage. It depends on
just one function, which is similar in spirit to many of the
methods in ClusterInfo.
2019-02-18 09:08:18 -08:00
Greg Fitzgerald 1c3f2bba6d Move avalanche simulator to integration tests 2019-02-18 09:08:18 -08:00
Greg Fitzgerald 7d62bf9a3d Move crds_gossip simulator to integration tests 2019-02-18 09:55:52 -07:00
Greg Fitzgerald 7c248cd2ef Move expensive test to integration tests
This test passes consistently when the test suite is run with a
single thread. It fails consistently on MacOS when run as part
of the unit-test suite.

No idea why it passes in CI.
2019-02-18 09:27:23 -07:00
Greg Fitzgerald c57084de36 Ignore test_two_fullnodes_rotate integration tests 2019-02-18 06:19:46 -08:00
Greg Fitzgerald 643384e1ec Add LeaderScheduler constructor to Bank
By passing a config and not a Arc'ed LeaderScheduler, callers
need to use `Bank::leader_scheduler` to access the scheduler.
By using the new constructor, there should be no incentive to
reach into the bank for that object.
2019-02-16 10:55:58 -07:00
Michael Vines 71ab030ea4 Fiddle with timeouts to make CI happy 2019-02-14 18:40:31 -08:00
Michael Vines c4125b80ec Reduce max_tick_height to speed up CI 2019-02-14 18:40:31 -08:00
Michael Vines 626a381ddc Collect and re-forward packets received while TpuForwarder is shutting down 2019-02-14 18:40:31 -08:00
Michael Vines 5333bda234
test_3_partitions is unstable, ignore 2019-02-14 17:30:42 -08:00
Michael Vines cceeb8e52d On leader rotation forward any unprocessed transaction packets to the new leader 2019-02-14 14:49:48 -08:00
Michael Vines 662d62f561 Always assert on the main test thread to abort quickly 2019-02-13 12:54:06 -08:00
Michael Vines cf4813a1ec Add tests to transact with a cluster rotating at 1 tick per slot 2019-02-13 12:54:06 -08:00
Michael Vines b03636dc33 Bolster test_fullnode_rotate() checks 2019-02-13 12:54:06 -08:00
Michael Vines 6187779d10 Wait for monitor threads to exit before Blocktree destruction 2019-02-13 12:54:06 -08:00
Michael Vines 863956d09c Add multinode test for two nodes rotating at 1 tick per slot 2019-02-12 21:17:06 -08:00
Michael Vines e341b33f21 Remove ticks_per_slot from Blocktree::write_entries(), it already knows 2019-02-12 15:52:27 -08:00
Michael Vines 6632c7026d Pass a BlocktreeConfig into all ledger helper functions 2019-02-12 15:52:27 -08:00
Michael Vines c474cf1eef Pass BlocktreeConfig around as a reference 2019-02-12 15:52:27 -08:00
Carl b33becabca rename flag 2019-02-12 15:06:52 -08:00
Carl 3c8a8640aa restructure test_broadcast_last_tick test to check for is_last_blob 2019-02-12 15:06:52 -08:00
Carl a1b5ea9cb1 test for is_last_blob at end of broadcast 2019-02-12 15:06:52 -08:00
Carl bc162637a6 Add is_last_blob flag to blob to signal the end of a slot 2019-02-12 15:06:52 -08:00
carllin be71f49d80
Change write_entries() and create_tmp_ledger() to take ticks_per_slot (#2736)
* Change write_entries() and create_tmp_ledger() to take ticks_per_slot

* PR nits
2019-02-12 13:14:33 -08:00
Michael Vines aa781811af Add mulitnode tests demonstrating leader rotation at 1 tick per slot 2019-02-11 19:50:33 -08:00
Michael Vines f6979a090e leader_scheduler: reduce the amount of special case handling for tick_height 0 2019-02-11 19:05:14 -08:00
Michael Vines aac1a58651 Try harder to keep LeaderSchedulerConfig and BlocktreeConfig in sync 2019-02-11 13:10:12 -08:00
Michael Vines 7dec40ff05 slot 0 now contains the same number of ticks as all subsequent slots 2019-02-10 16:34:10 -08:00
carllin 4b38ecd916
fix tpu tvu bank race (#2707)
* Fix tpu tvu bank race

* Test highlighting race between tvu and tpu banks during leader to leader transitions
2019-02-10 16:28:52 -08:00
carllin 6e7c5f205b
Rename db_ledger to blocktree (#2698) 2019-02-07 20:52:39 -08:00
carllin fd7db7a954
Support multiple forks in the ledger (#2277)
* Modify db_ledger to support per_slot metadata, add signal for updates, and add chaining to slots in db_ledger

* Modify replay stage to ask db_ledger for updates based on slots

* Add repair send/receive metrics

* Add repair service, remove old repair code

* Fix tmp_copy_ledger and setup for tests to account for multiple slots and tick limits within slots
2019-02-07 15:10:54 -08:00
Michael Vines 1f0b3f954a leader_scheduler: replace older terminology with ticks, slots and epochs 2019-02-07 10:42:57 -08:00
Michael Vines c87e035302 Remove multinode test dependency on Fullnode internals 2019-02-06 20:38:22 -08:00
Michael Vines abb9a72b27 Reduce Fullnode public API surface 2019-02-06 20:04:51 -08:00
Michael Vines d9e2b94d7a bank::new_with_leader_scheduler_config() - remove Option<> 2019-02-06 19:47:09 -08:00
Michael Vines f789038baa Consolidate fullnode ledger helpers 2019-02-06 19:47:09 -08:00
Michael Vines c986a20bcf Disable unstable test: test_multi_node_dynamic_network 2019-02-06 14:23:10 -08:00
Michael Vines c5a74ada05 leader_scheduler: remove bootstrap_height 2019-02-06 14:23:10 -08:00
Michael Vines f90d96367d Add Fullnode::run() to optionally manage node role transitions automatically 2019-02-06 14:23:10 -08:00
carllin 3feda8a315
ReplayStage asking ledger for updates (#2597)
* Modify replay stage to ask db_ledger for updates instead of reading from upstream channel

* Add signal for db_ledger to update listeners about updates

* fix flaky test
2019-02-04 15:33:43 -08:00
Sagar Dhawan 9d34ded5f3
Update and fix test_broadcast_last_tick (#2644) 2019-02-01 17:13:15 -08:00
Sagar Dhawan 2985988f0d
Re-enable test_broadcast_last_tick (#2639) 2019-02-01 14:23:20 -08:00
Michael Vines d62c9ac309 Create program/ crate avoid / crate dependency on bpfloader
The bpfloader crate was triggering cargo to perform excessive rebuilds
of in-workspace dependencies.  Unclear why exactly, but seems related to
the special dual crate-type employed by bpfloader.
2019-02-01 12:42:46 -08:00
Michael Vines 40acaee446 Remove unnecessary abstractions and helper functions 2019-02-01 12:42:46 -08:00
Greg Fitzgerald dad0bfe447 Replace transaction traits with structs
Also:
* SystemTransaction::new -> new_account
* SystemTransaction::new_create -> new_program_account
2019-02-01 11:38:25 -08:00
Greg Fitzgerald 82a2080e45 Rename VoteSignerProxy to VotingKeypair
Works just like a normal Keypair, but will only sign voting
transactions.
2019-02-01 07:11:17 -07:00
Michael Vines d87c2eb903 Fullnode::new() - provide FullnodeConfig as a ref 2019-01-31 21:12:36 -08:00
carllin 37003da854
Fix potential of checking tvu bank for truth when its behind (#2614)
* Fix race between tpu and tvu, where tvu bank is not caught up to tpu bank

* Add test

* Cleanup Fullnode tests
2019-01-31 19:21:02 -08:00
Michael Vines 9767468b7f Remove unneeded Option 2019-01-31 13:53:59 -08:00
carllin 84567d36cf
Leader scheduler groundwork for Blocktree (#2599)
* Groundwork for entry tree, align constants with definitions in the book

* Fix edge case in test, node can keep generating ticks between handle_role_transition and exit() call
2019-01-31 13:44:24 -08:00
Pankaj Garg 32162ef0f1
Connect TPU's broadcast service with TVU's blob fetch stage (#2587)
* Connect TPU's broadcast service with TVU's blob fetch stage

- This is needed since ledger is being written only in TVU now

* fix clippy warnings

* fix failing test

* fix broken tests

* fixed failing tests
2019-01-31 13:43:22 -08:00
anatoly yakovenko 2754ceec60
StatusDeque split into separate objects with their own root checkpoint strategy (#2613)
Split up StatusDeque into different modules

* LastIdQueue tracks last_ids
* StatusCache keeps track of signature statuses
* StatusCache stores success as a bit in a bloom filter
* Overhead for 1m Ok transactions is 4mb in memory
* Less concurrency between the objects, last_id and status_cache are read and written to at different points in the pipeline
* Each object has its own strategy for merging into the root checkpoint
2019-01-31 06:53:52 -08:00
Greg Fitzgerald 609e915169 Fix clippy warning
Always pass Arcs by reference. Then you'll only need to clone()
to cross thread boundaries.
2019-01-30 21:59:05 -07:00