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
Greg Fitzgerald
e25992a011
Always give Fullnode a vote signer
...
This will allow us to use the the signer's pubkey as the node id.
Disable voting with a configuration option.
2019-01-30 21:59:05 -07:00
Rob Walker
1b50fbbc90
remove Result<> from Blob accessors, add parent ( #2608 )
...
* remove Result<> from Blob accessors, add parent
* update chacha's golden
* fixup benches
2019-01-30 20:18:28 -08:00
Michael Vines
c01290438f
Move virtual genesis tick into the ledger proper as entry 0
2019-01-30 14:02:07 -08:00
Michael Vines
9e9c82869a
create_tmp_sample_ledger() need not return the genesis block
2019-01-30 14:02:07 -08:00
Michael Vines
494b143453
Delete create_tmp_genesis
2019-01-30 14:02:07 -08:00
Michael Vines
8cc1cde0fe
create_tmp_sample_ledger() now returns entry_height and last_id
2019-01-30 14:02:07 -08:00
Anatoly Yakovenko
a16e41002e
reduce gossip nodes in concurrent tests for CI
2019-01-30 10:26:28 -07:00
Michael Vines
25f25d0f82
new_fullnode: don't return the genesis_block, nobody uses it
2019-01-29 17:51:07 -08:00
Michael Vines
ae7f169027
Add FullnodeConfig struct to Fullnode::new* functions
...
This avoids having to touch *every* Fullnode::new* call site when
a new fullnode option is added
2019-01-29 09:42:48 -08:00
Tyera Eulberg
6da7a784f2
Stream entries ( #2582 )
...
* Add entry streaming option
* Fix tests
* Remove obsolete comment
* Move entry stream functionality to struct w/ trait in order to test without i/o
2019-01-29 00:21:27 -08:00
Michael Vines
12cddf725e
Harmonize Fullnode::new* function arguments
2019-01-28 22:37:56 -08:00
Michael Vines
d8861c2a5f
Wait until the leader shows up on gossip
2019-01-28 22:37:56 -08:00
Michael Vines
29ef9370a6
Remove LeaderSchedulerConfig options
2019-01-28 13:51:01 -08:00
Stephen Akridge
2262f279d5
Reduce boilerplate code with helper function to create
...
fullnode/bank/genesis
2019-01-28 13:48:58 -08:00
Greg Fitzgerald
1bae87d4b3
Add unit-test-friendly VoteSignerProxy constructor
2019-01-26 14:56:49 -07:00
Sagar Dhawan
d65e7b9fcc
Speedup rotation ( #2468 )
...
Speedup leader to validator transitions
2019-01-26 13:58:08 +05:30
Michael Vines
4bb6549895
Genesis block is now a json file
2019-01-25 09:05:15 -08:00
Stephen Akridge
9845aec007
Rename data_replicator tests module
...
replicator name is associated with storage replicators, so
data_replicator sounds like that but it is actually a bunch of gossip
tests.
2019-01-24 15:49:55 -08:00
Tyera Eulberg
b7be5b9a7a
Add no-signer argument
2019-01-24 10:47:37 -08:00