Commit Graph

2361 Commits

Author SHA1 Message Date
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 e4119268ca Delete expensive integration test in unit-test suite 2019-02-18 09:27:09 -07:00
anatoly yakovenko fc2760e761
Remove bank dependency from poh_recorder (#2810)
* Remove bank dependency from poh_recorder

* clippy
2019-02-18 06:33:07 -08:00
Greg Fitzgerald 907aff3b43 Cleanup Poh code 2019-02-17 21:12:55 -07:00
Greg Fitzgerald d850f67979 Remove 'Compute' from name ComputeLeaderConfirmationService
struct names should be a noun
2019-02-17 19:44:09 -08:00
Carl 8080063024 nit 2019-02-17 19:30:45 -07:00
Carl f33c6eb95f delete leader rotation signal from banking stage 2019-02-17 19:30:45 -07:00
Carl 4e3d71c2c9 Batch joins on entire tpumode struct instead of individual services 2019-02-17 19:30:23 -07:00
Carl a074cb78cd Ensure leader services are closed before starting new ones 2019-02-17 19:30:23 -07:00
Michael Vines 0dbc33f781 Finish removing getConfirmationTime 2019-02-17 16:27:50 -08:00
Anatoly Yakovenko 25bbc3bc2a wrong error 2019-02-17 15:43:13 -08:00
Anatoly Yakovenko 5f55a9be84 fmt 2019-02-17 15:43:13 -08:00
Anatoly Yakovenko 300e3d151d remove the signal sender since its superfelous to a recv error 2019-02-17 15:43:13 -08:00
Greg Fitzgerald 2f7911b62a Boot BankError::MaxHeightReached 2019-02-17 16:30:01 -07:00
Anatoly Yakovenko 54dfe708c1 use ref for new_from_parent; test that transactions don't leak to parent 2019-02-17 15:02:08 -07:00
Anatoly Yakovenko 8166925f04 copy a new bank 2019-02-17 15:02:08 -07:00
Anatoly Yakovenko 64f1d93cc3 Use the accounts list from parents up to finalized bank for Account::load apis.
Borrow checker

query the previous parents accounts

cleanup!

s/tree/parents

Tests!  Last_ids need to be inherited as well otherwise nothing works.

new_from_parent
2019-02-17 15:02:08 -07:00
Greg Fitzgerald 6d67568037 Delete useless wrappers 2019-02-17 14:10:34 -07:00
Greg Fitzgerald 5003e97479 Inline private functions
Better code coverage in exchange for calling `create_session()`
2019-02-17 14:10:34 -07:00
Greg Fitzgerald e9b0e3cb9d Move RpcSignatureStatus into its own module
And fixup some imports from previous commits.
2019-02-17 12:20:05 -07:00
Greg Fitzgerald 34fceca7ff Fix compiler warnings 2019-02-17 12:20:05 -07:00
Greg Fitzgerald c646845cd3 Move RpcService into its own module 2019-02-17 12:20:05 -07:00
Greg Fitzgerald eb483bc053 Move RpcPubSubService into its own module 2019-02-17 12:20:05 -07:00
Greg Fitzgerald 50d3fa7437 Move RpcSubscriptions into its own module 2019-02-17 12:20:05 -07:00
Greg Fitzgerald 9f7fc5f054 Boot unused trait
Some ambitious unit-testing plans unimplemented?
2019-02-17 12:20:05 -07:00
anatoly yakovenko c8c794e340
Use the accounts and status cache from parents up to finalized bank for calls. (#2798)
* Use the accounts list from parents up to finalized bank for Account::load apis.

* Borrow checker

* query the previous parents accounts

* cleanup!

* s/tree/parents

* Tests!  Last_ids need to be inherited as well otherwise nothing works.
2019-02-17 08:01:31 -08:00
carllin 97a1e950ef
write entries in blocktree now sets parent slot properly (#2800) 2019-02-17 04:36:49 -08:00
Greg Fitzgerald 9fa8105ae8 Add a way to make a DAG of checkpointed Banks 2019-02-16 21:49:06 -07:00
Michael Vines 58f4709362
Reduce log severity of entry stream errors 2019-02-16 19:10:00 -08:00
anatoly yakovenko f71cd2c6f3
Status cache runs out of space in the bloom filter (#2796)
The cache is designed for 1m statuses, about 1 second worth of transactions at full capacity. Refresh the cache every 1 second worth of ticks.
2019-02-16 16:41:03 -08:00
Greg Fitzgerald e39094ac37 Hoist Slot Leader dependencies up to BankingStage 2019-02-16 15:36:31 -07:00
Greg Fitzgerald b539389741 Move all Validator dependencies from Bank to blocktree_processor 2019-02-16 15:01:26 -07:00
Greg Fitzgerald ac35fe9ed1 Flip the dependency; Create bank before scheduler 2019-02-16 14:16:48 -07:00
Greg Fitzgerald 3d70afc578 Boot leader scheduler from the bank
Functional change: the leader scheduler is no longer implicitly
updated by PohRecorder via register_tick(). That's intended to
be a "feature" (crossing fingers).
2019-02-16 14:16:48 -07:00
Greg Fitzgerald b919b3e3b2 Bank no longer updates a leader scheduler by default 2019-02-16 14:16:48 -07:00
Greg Fitzgerald 7a7349f2ff Don't update the leader scheduler in bank's default constructor 2019-02-16 14:16:48 -07:00
Greg Fitzgerald 07b57735b1 Move leader scheduler test out of bank 2019-02-16 14:16:48 -07:00
Greg Fitzgerald 3bfe2e75b5 Boot new_with_leader_scheduler_config
Only used in one place. Easy enough to use the one with the shared
leader scheduler.
2019-02-16 10:55:58 -07:00
Greg Fitzgerald 97c93629a5 Don't use the Bank's LeaderScheduler 2019-02-16 10:55:58 -07: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
Greg Fitzgerald 1809277e05 Encapsulate Bank accounts
That way we don't need to TODOs saying "don't forget to iterate
over checkpoints too". It should be assumed that when the bank
references its previous checkpoint all its methods would
acknowledge it.
2019-02-16 08:41:35 -07:00
Greg Fitzgerald 7981865fd2 Boot unused confirmation-time from Bank
This broken metric is already submitted to influx. Why make it
available via RPC too? If so, why store it in the bank and not
in the RPC service?
2019-02-16 08:11:43 -07:00
Greg Fitzgerald 4467d5eb4c Extract process_ledger from Bank
Fullnode was the only real consumer of process_ledger and it was
only there to process a Blocktree. Blocktree is a tree, and a
ledger is a sequence, so something's clearly not right here.
Drop all other dependencies on process_ledger (only one test) so
that it can be fixed up in isolation.
2019-02-16 08:07:26 -07:00
Stephen Akridge 573116e259 Remove count_last_ids API 2019-02-15 11:05:41 -08:00
Michael Vines 71ab030ea4 Fiddle with timeouts to make CI happy 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 cceeb8e52d On leader rotation forward any unprocessed transaction packets to the new leader 2019-02-14 14:49:48 -08:00
Michael Vines 3f6aba23dd Add custom BlocktreeConfig for bad tests that break with the default 2019-02-14 14:49:48 -08:00
Michael Vines cd9dac4c7e Use a reasonable max_tick_height 2019-02-14 14:49:48 -08:00
Michael Vines f478894729 Revert "Set DEFAULT_TICKS_PER_SLOT = 32 to stabilize integration tests"
This reverts commit 2d2572d2cb.
2019-02-14 14:49:48 -08:00
Michael Vines 97790480c9 Increase poll_for_signature retry timeout 2019-02-14 14:49:48 -08:00
Tyera Eulberg 9643c39bf6 Fix slot in block event 2019-02-14 14:25:54 -08:00
Carl 0a08d40237 fix repair service to support multinode tests that depend on repairs 2019-02-14 13:37:55 -08:00
Carl d029997aef add parent slot to broadcast 2019-02-14 13:37:55 -08:00
Carl ceb27b431e Add tree test to test multiple chaining children 2019-02-14 13:37:55 -08:00
Carl b25d8ce764 Comment out repair service tests, to be fixed in another PR 2019-02-14 13:37:55 -08:00
Carl 34da362ee6 fix blocktree tests 2019-02-14 13:37:55 -08:00
Carl de6109c599 replace num_blocks with parent block 2019-02-14 13:37:55 -08:00
carllin 736f08815e
Add protocol request for requesting the highest blob in a slot (#2759) 2019-02-14 12:47:21 -08:00
Sunny Gleason 106645d9bd add message terminator (newline) to socket writer output to ease client integration 2019-02-14 12:27:53 -08:00
Greg Fitzgerald 4a0009365e Use Account::owner as loader for executable accounts 2019-02-14 13:26:46 -07:00
Greg Fitzgerald 48671a1728 Let native_loader own native executable accounts 2019-02-13 20:55:36 -08:00
Greg Fitzgerald 72b6ec4aa8 Add native program account constructor 2019-02-13 20:55:36 -08:00
Michael Vines 8790a92f07 Adjust create_counter to avoid imposing an AtomicUsize import on users 2019-02-13 20:24:04 -08:00
Michael Vines 0f8ff07b51 tpu now hangs on to its cluster_info 2019-02-13 16:16:18 -08:00
Tyera Eulberg be73db13e0 Improve EntryStream trait and struct names 2019-02-13 13:07:30 -08:00
Tyera Eulberg cbaba5cbf3 Review comments 2019-02-13 13:07:30 -08:00
Tyera Eulberg c1447b2695 Add block event logic to EntryStreamStage 2019-02-13 13:07:30 -08:00
Sunny Gleason e58f08b60f Refactor EntryStream
Co-authored-by: Sunny Gleason <sunny.gleason@gmail.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2019-02-13 13:07:30 -08:00
Stephen Akridge ddc8bfed29 Fix bad window_send_test channel logic
Test could hang if the blobs are not sent in the right order.
2019-02-13 11:23:54 -08:00
Stephen Akridge f1221d724d Consolidate logic with entry helper function
Creates an entry and updates the hash.
Also cleanup blobs creation in test_replay
2019-02-13 11:23:54 -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 7118178e2c Correctly compute max_tick_height when starting up a node 2019-02-12 21:17:06 -08:00
Michael Vines 1eabe66c85 setup_leader_validator: remove unnecessary ticks_per_slot parameter 2019-02-12 21:17:06 -08:00
Michael Vines 2de0a9e453 Log on bogus blobs 2019-02-12 21:17:06 -08:00
Stephen Akridge 0bb6940c1a Faster exit for storage_stage client
Shorten the timeout and check for exit on every iteration
of fetching a last id.
2019-02-12 20:45:22 -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 6abdd6401d clippy: passing BlocktreeConfig by ref is ok 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
Sagar Dhawan e26cd2eb26
Make Genesis block handle extra tokens for the leader (#2743) 2019-02-12 15:49:23 -08:00
Carl b33becabca rename flag 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
Sagar Dhawan 8f1b7c3fff
Enable test_replay (#2741)
* Enable test_replay

* Refactor get_last_id

* Fix test ledger path
2019-02-12 15:03:11 -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
Sagar Dhawan 8b39eb5e4e
Replace Blob Ids with Forward property (#2734)
* Replace Blob Id with Blob forwarding

* Update simulation to properly propagate blobs
2019-02-12 10:56:48 -08:00
Pankaj Garg 1173cf7ed4 review comments 2019-02-12 08:41:02 -08:00
Pankaj Garg b4fd141105 fix broken test 2019-02-12 08:41:02 -08:00
Pankaj Garg 0002b5dd02 Write to ledger in BroadcastService
- Also disconnect the channel between TPU and TVU
2019-02-12 08:41:02 -08:00
Michael Vines 709598541f
Remove stale TODO comment 2019-02-11 22:13:07 -08:00
Michael Vines b595bf8f44 Set blob_index correctly when tick_height is at the last tick of a 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
Sagar Dhawan 2e1dcd84f9
Add Avalanche Simulation (#2727)
- No packet drops yet
- Optimistic retransmits without leader-id
2019-02-11 16:20:31 -08:00
Pankaj Garg 144d321193 Remove Box for RPC pubsub subscriptions 2019-02-11 15:47:29 -08:00
Tyera Eulberg d41dec9395 Make EntryStreamStage optional 2019-02-11 14:07:24 -08:00
Tyera Eulberg f977327c7b Move EntryStream into its own Tvu stage 2019-02-11 14:07:24 -08:00
Michael Vines aac1a58651 Try harder to keep LeaderSchedulerConfig and BlocktreeConfig in sync 2019-02-11 13:10:12 -08:00
Michael Vines 095afdfe47 Merge leader_to_validator/validator_to_leader 2019-02-11 08:57:44 -08:00
Michael Vines 4ae1783b97 Remove code duplication between leader_to_validator/validator_to_leader 2019-02-10 17:53:42 -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
Stephen Akridge 1e58c585d3 Add retry_get_balance function
clients don't need to know about json
2019-02-10 09:08:16 -08:00
Michael Vines 1c61415cee
Remove stale TODO. #1899 was resolved a while ago 2019-02-09 16:57:46 -08:00
Michael Vines da5b777ee7 Purge Default::default() 2019-02-09 10:12:32 -08:00
Michael Vines a6aaca814c Rename enum Config to enum PohServiceConfig 2019-02-09 10:12:32 -08:00
Stephen Akridge 95b28d4d8c Move now to after super majority time is calculated
'now' could end up being earlier than the supermajority calculated time.
Leading to underflow errors and thread panic.
2019-02-08 15:53:23 -08:00
carllin 1278396bd5
Cleanup consecutive entries code from window_service (#2697)
* Remove returning entries from db_ledger on insert

* Fix tests to check for correctness

* Delete generate_repairs and max_repair_entry_height
2019-02-08 14:19:28 -08:00
Rob Walker 0e29868e34
add ticks_left_in_block (#2694)
* add ticks_left_in_block

* de-combine tests
2019-02-08 10:30:14 -08:00
Michael Vines 0115a1f834 Remove unused SocketAddr 2019-02-08 10:23:39 -08:00
Michael Vines cf103add54 Remove old Tpu leader rotation shutdown mechanism 2019-02-08 09:07:35 -08:00
Michael Vines 766af58cd8 Prune unnecessary test imports 2019-02-08 08:43:11 -08:00
Michael Vines 5200435bab Strip unused return type 2019-02-08 08:43:11 -08:00
Michael Vines 56734dca3b Align Tpu::new() and Tpu::switch_to_leader() arguments 2019-02-07 21:33:49 -08:00
Michael Vines dbaf8e66ab Remove code duplication 2019-02-07 21:33:49 -08:00
carllin 6e7c5f205b
Rename db_ledger to blocktree (#2698) 2019-02-07 20:52:39 -08:00
Michael Vines e7df3cfe22 thin_client grooming: remove dead code, improve var names and error reporting 2019-02-07 19:41:58 -08:00
Michael Vines 0e8540417f Add get_next_last_id 2019-02-07 19:41:58 -08:00
Michael Vines c3ad0eebec Clean up get_last_id() 2019-02-07 19:41:58 -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
Tyera Eulberg 952ab2bde5 Runtime fix 2019-02-07 11:30:05 -08:00
Tyera Eulberg 3c6af52a71
Fix pay-to-self Accounts bug (#2682)
* Add failing tests

* Fix tests

* Plumb AccountLoadedTwice error

* Fixup budget cancel actions to not depend on duplicate accounts

* Use has_duplicates

* Update budget-based golden
2019-02-07 12:14:10 -07:00
Michael Vines 1f0b3f954a leader_scheduler: replace older terminology with ticks, slots and epochs 2019-02-07 10:42:57 -08:00
Greg Fitzgerald 5128d7d6c3 Move runtime.rs into its own crate 2019-02-07 09:46:06 -08:00
Michael Vines cedee73548 Temporarily bump DEFAULT_TICKS_PER_SLOT to 64
See solana-labs/solana#2675
2019-02-07 09:16:43 -08:00
Greg Fitzgerald d1945c29d7 Don't depend on solana_native_loader for IDs in the SDK 2019-02-07 08:23:44 -08:00
Greg Fitzgerald 83b40e4f30 Inline assertions from overreaching helper
The assert_counters() helper creates unreadable tests and makes
us have to update every test any time a counter is added. Instead,
we can just assert the values of any particular counters the test
may have affected.
2019-02-07 08:43:52 -07:00
Michael Vines 95ac6305bc Remove unnecessary dependencies on fullnode mod 2019-02-06 21:31:48 -08:00
Michael Vines ab4828aae7 Replace role_notifiers tuple with two explicit fields 2019-02-06 21:31:48 -08:00
Michael Vines c506423e70 Remove superfluous imports 2019-02-06 21:31:48 -08:00
Michael Vines f0843fc5f1 NodeServices: de-pub, remove dead code 2019-02-06 21:31:48 -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
Sagar Dhawan acc6bf1564 Don't over complicate the solution 2019-02-06 19:55:12 -08:00
Sagar Dhawan db688207a5 Add abort signals to tvu/tpu receivers 2019-02-06 19:55:12 -08:00
Sagar Dhawan 9681c4d468 Fix resource hogging when waiting for role transition 2019-02-06 19:55:12 -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 2e23b03f94 Remove dead code 2019-02-06 19:47:09 -08:00
Michael Vines 5181a2a9b1 Guard against invalid tick heights 2019-02-06 14:23:10 -08:00
Michael Vines 2d2572d2cb Set DEFAULT_TICKS_PER_SLOT = 32 to stabilize integration tests 2019-02-06 14:23:10 -08:00
Michael Vines fa553029d5 Temporarily disable test_validator_to_leader_transition 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
Tyera Eulberg 0025d36880 Move solana proper back to paritytech/jsonrpc 2019-02-04 22:17:23 -07: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
Tyera Eulberg 03e6a56b3c Add datetime to EntryStream message 2019-02-04 11:03:54 -08:00
Sagar Dhawan 9d34ded5f3
Update and fix test_broadcast_last_tick (#2644) 2019-02-01 17:13:15 -08:00
Greg Fitzgerald 511d8275d6 Document current vote program semantics
And add a new 'staker_id' VoteState member variable to offer a path to
work our way out.  Update leader scheduler to use staker_id, but
continue setting it to 'from_id' for the moment.

No functional changes here.
2019-02-01 16:03:46 -08:00
Greg Fitzgerald 9c07a8c26a VoteProgram -> VoteState 2019-02-01 16:03:46 -08:00
Sagar Dhawan 7a6d730db3
Skip retransmit when node is leader (#2625)
* Skip retransmit when node is leader

* Fix window test
2019-02-01 14:30:26 -08:00
Pankaj Garg d9a22705ce Broadcast Service should handle SendError
- After TVU shuts down, the brroadcast service will get a SendError
  when it tries to send blobs to it
2019-02-01 12:28:00 -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
Michael Vines 43cce3a8fc speling 2019-02-01 07:11:17 -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
Greg Fitzgerald 9a4abe96c7 Reduce VoteSignerProxy to KeypairUtil 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
Carl b6b179af97 Fix bad merge 2019-01-31 20:15:04 -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
Sagar Dhawan ed478675ba
Push and query the ClusterInfo for votes. (#2622) 2019-02-01 05:21:29 +05:30
Michael Vines 9767468b7f Remove unneeded Option 2019-01-31 13:53:59 -08:00
Rob Walker 8ba1d5f426
treat genesis special (#2615)
* treat genesis special

* fix poh_recorder to understand new world order
2019-01-31 13:53:08 -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
Pankaj Garg 2dd20c38b2 fix the test 2019-01-31 12:55:17 -08:00
Pankaj Garg aa1bd603e6 Fix recvmmsg test for timeout 2019-01-31 12:55:17 -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 11f1c00ca7 Only send pubkey to ReplayStage 2019-01-30 21:59:05 -07:00
Greg Fitzgerald a74b24fdf0 Only store the fullnode's pubkey
Only vote_signer is used for signing
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
Pankaj Garg a746969995
Don't set socket as blocking in recvmmsg for non Linux targets (#2611)
* Don't set socket as blocking in recvmmsg for non Linux targets

- The user of the function is controling this flag

* added a test
2019-01-30 19:47:53 -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
Greg Fitzgerald 883fc39c80 Rename EntryTree to Blocktree 2019-01-30 13:29:34 -07:00
Anatoly Yakovenko 1c0758e3bd Accounts refactoring for forking.
* Move last_id and signature dup handling out of Accounts.
* Accounts that handle overlays.
2019-01-30 11:36:49 -08:00
Greg Fitzgerald 668d353add Inline VoteSigner::new_vote_account
So that we can stop using the validator keypair to fund the
the voting account.
2019-01-30 10:42:42 -07:00
Greg Fitzgerald 06a1681fdc Remove redundant annotations 2019-01-30 10:42:42 -07:00
Michael Vines 16e705dc75 Boil away unneeded Fullnode::new_* functions 2019-01-29 20:10:10 -08:00
Michael Vines b52228feb9 Remove assumption that the mint starts with 10_000 tokens 2019-01-29 20:10:10 -08:00
Michael Vines 25f25d0f82 new_fullnode: don't return the genesis_block, nobody uses it 2019-01-29 17:51:07 -08:00
Greg Fitzgerald 85e7046caf Use signer for signing transactions, not constructing them 2019-01-29 18:35:05 -07:00
Greg Fitzgerald c741a960b9 Generalize Transaction::new to accept anything that implements KeypairUtil 2019-01-29 18:35:05 -07:00
Greg Fitzgerald 34c8b2cc2f Remove redundant Arc 2019-01-29 18:35:05 -07:00
Greg Fitzgerald 278effad49 Implement KeypairUtil for VoteSignerProxy 2019-01-29 18:35:05 -07:00
Rob Walker a0bed5375d
remove println!, add check to keep it out (#2585)
* remove debugging prints

* remove println!, add check to keep it out
2019-01-29 16:02:03 -08:00
Michael Vines a2c3369713
storage_state field doesn't actually exist 2019-01-29 12:34:59 -08:00
Rob Walker 1f9ab7f58f copy bank for TPU 2019-01-29 12:11:48 -08:00
Anatoly Yakovenko 3e1a926aa6 wip 2019-01-29 12:11:48 -08:00
Michael Vines df136578d4 Remove unnecessary FullnodeConfig::rpc_port option 2019-01-29 10:22:39 -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 bfaf5634a1 .unwrap() in tests instead of assert!()ing .is_ok() for a better failure message 2019-01-28 16:10:32 -08:00
Stephen Akridge 53afa64634 Remove storage_state from the bank
Construct in TVU and pass to RPC and StorageStage instead.
2019-01-28 15:41:41 -08:00
Rob Walker c9bf9ce094
eliminate re-use of a TX here, we're testing for empty account balance (#2576) 2019-01-28 15:21:08 -08:00