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
Greg Fitzgerald
73b10c196e
Disable integration test that fails in CI
2019-01-22 19:24:44 -08:00
Mark
f37eb533f1
Replicator timeout ( #2480 )
...
* Add timeout to Replicator::new; used when polling for leader
* Add timeout functionality to replicator ledger download
Shares the same timeout as polling for leader
Defaults to 30 seconds
* Add docs for Replicator::new
2019-01-21 15:37:41 -06:00
Tyera Eulberg
cb23070dfe
Remove sleeps on fullnode spin-up in integration tests
2019-01-21 13:27:31 -07:00
Greg Fitzgerald
5d9d83d312
Less clones
2019-01-21 12:56:27 -07:00
Greg Fitzgerald
823252dd41
Cleanup terminology
2019-01-21 12:56:27 -07:00
Tyera Eulberg
35764225ed
Remove socket from rpc test and move integration test
2019-01-21 12:29:04 -07:00
Stephen Akridge
1fd7bd7ede
Storage fixes
...
* replicators generate their sample values
* fixes to replicator block height logic
2019-01-18 13:05:35 -08:00
Michael Vines
6933f2bad1
Remove stale TODO
2019-01-17 23:22:07 -08:00
Michael Vines
b03d1d8894
Enable integration test logging for better debug on CI failure
2019-01-17 23:14:18 -08:00
Michael Vines
8e4a86e329
Recovery multinode tests
2019-01-17 23:14:18 -08:00
Tyera Eulberg
8af61f561b
Improve Wallet coverage ( #2385 )
...
* Add trait for RpcRequestHandler trait for RpcClient and add MockRpcClient for unit tests
* Add request_airdrop integration test
* Add timestamp_tx, witness_tx, and cancel_tx to wallet integration tests; add wallet integration tests to test-stable
* Add test cases
* Ignore plentiful sleeps in unit tests
2019-01-14 00:10:03 -07:00
Jak May
e9a0b3a8f3
Add BPF-to-BPF and PC relative call tests ( #2395 )
2019-01-11 19:33:08 -08:00
Jak May
23c43ed21b
Multi-file BPF C builds ( #2393 )
2019-01-11 15:33:21 -08:00
Pankaj Garg
d7594b19fc
Implemented a trait for vote signer service ( #2386 )
...
* Implemented a trait for vote signer service
* removes need for RPC in unit tests for vote signing
* fix build errors
* address some review comments
2019-01-11 12:58:31 -08:00
Pankaj Garg
2dbe8fc1a9
Refactor vote signer code ( #2368 )
...
* Refactor vote signer code
* fixed test compilation errors
* address clippy errors
* fix missing macro_use
* move macro use
* review comments
2019-01-10 09:21:38 -08:00
Stephen Akridge
491bca5e4b
Remove ledger.rs
...
Split into entry.rs for entry-constructing functions and EntrySlice
trait and db_ledger.rs for ledger helper test functions.
2019-01-09 15:15:47 -08:00
Stephen Akridge
73eca72f14
Switch test to send a repair request to try and download from replicator
...
Removes need for read_ledger in the test and also tests replicator
download path.
2019-01-09 13:24:12 -08:00
Michael Vines
2c52e82352
Use retry_make_rpc_request to avoid occasional CI test failures
2019-01-07 21:25:25 -08:00
Pankaj Garg
91bd38504e
Use vote signer service in fullnode ( #2009 )
...
* Use vote signer service in fullnode
* Use native types for signature and pubkey, and address other review comments
* Start local vote signer if a remote service address is not provided
* Rebased to master
* Fixes after rebase
2019-01-05 12:57:52 -08:00
Michael Vines
1f6346d880
De-dup ledgers - db_ledger is now the only ledger written to disk
2019-01-04 16:37:00 -08:00
jackcmay
a461c5682d
First stab at Rust BPF ( #2269 )
...
First stab at Rust BPF
2019-01-02 15:12:42 -08:00
Michael Vines
58f2598d5d
Revert "Validators make a transaction to advertise their storage last_id"
...
This reverts commit a1759aed19
.
2018-12-23 14:02:09 -08:00
carllin
58a4905916
Make reconstruct_entries_from_blobs() support Blobs and borrowed SharedBlobs, make distinction between to_blobs and to_shared_blobs ( #2270 )
2018-12-22 19:30:30 -08:00
Michael Vines
2c9607d5da
Rename getConfirmation -> getConfirmationTime
2018-12-22 12:47:02 -08:00
Stephen Akridge
a1759aed19
Validators make a transaction to advertise their storage last_id
...
* Also implement more storage contract logic
* Add transactions for proof validation,
* Move storage state members into system storage account userdata
2018-12-21 15:45:30 -08:00