Commit Graph

133 Commits

Author SHA1 Message Date
Rob Walker 57e928d1d0 Revert "plug in new ledger"
This reverts commit 46d9ba5ca0.
2018-08-03 10:24:51 -07:00
Rob Walker 46d9ba5ca0 plug in new ledger 2018-08-02 21:50:47 -07:00
sakridge 2ea6f86199 Submit leader's vote after observing 2/3 validator votes (#780)
* fixup!

* fixups!

* send the vote and count it

* actually vote

* test

* Spelling fixes

* Process the voting transaction in the leader's bank

* Send tokens to the leader

* Give leader tokens in more cases

* Test for write_stage::leader_vote

* Request airdrop inside fullnode and not the script

* Change readme to indicate that drone should be up before leader

And start drone before leader in snap scripts

* Rename _kp => _keypair for keypairs and other review fixups

* Remove empty else
* tweak test_leader_vote numbers to be closer to testing 2/3 boundary
* combine creating blob and transaction for leader/validator
2018-07-31 22:07:53 -07:00
pgarg66 7c5172a65e
Converted sigverify disable flag to runtime check instead of "cfg" (#799) 2018-07-31 16:54:24 -07:00
Greg Fitzgerald 28af9a39b4 Don't clone before borrowing
Clippy told us to change function parameters to references, but
wasn't able to then tell us that the clone() before borrowing
was superfluous. This patch removes those by hand.

No expectation of a performance improvement here, since we were
just cloning reference counts. Just removes a bunch of noise.
2018-07-18 08:04:31 -04:00
Greg Fitzgerald 30f0c25b65 Fix all remaining clippy warnings
Fixes #586
2018-07-12 09:40:40 -06:00
Greg Fitzgerald 73ae3c3301 Apply most of clippy's feedback 2018-07-12 09:40:40 -06:00
Anatoly Yakovenko be2bf69c93 initial vote stage
wip

voting

wip

move voting into the replicate stage

update

fixup!

fixup!

fixup!

fixup!

fixup!

fixup!

fixup!

fixup!

fixup!

fixup!

update

fixup!

fixup!

fixup!

tpu processing votes in entries before write stage

fixup!

fixup!

txs

make sure validators have an account

fixup!

fixup!

fixup!

exit fullnode correctly

exit on exit not err

try 50

add delay for voting

300

300

startup logs

par start

100

no rayon

retry longer

log leader drop

fix distance

50 nodes

100

handle deserialize error

update

fix broadcast

new table every time

tweaks

table

update

try shuffle table

skip kill

skip add

purge test

fixed tests

rebase 2

fixed tests

fixed rebase

cleanup

ok for blobs to be longer then window

fix init window

60 nodes
2018-07-10 13:32:31 -06:00
Greg Fitzgerald c65c0d9b23 Expose fewer exit variables 2018-07-10 11:11:36 -06:00
Greg Fitzgerald 81477246be Remove exit variable from VerifyStage 2018-07-05 17:32:41 -06:00
Greg Fitzgerald cbd664ba4b Remove exit variable from BankingStage 2018-07-05 17:32:41 -06:00
Greg Fitzgerald 4bb7cefa15 Remove exit variable from WriteStage 2018-07-05 17:32:41 -06:00
Greg Fitzgerald 77bf17064a Add Service trait
Added a consistent interface to all the microservices.
2018-07-04 16:40:34 -06:00
Greg Fitzgerald 5d17c2b58f Return output receivers from each stage
Reaching into the stages' structs for their receivers is, in hindsight,
more awkward than returning multiple values from constructors. By
returning the receiver, the caller can name the receiver whatever it
wants (as you would with any return value), and doesn't need to
reach into the struct for the field (which is super awkward in
combination with move semantics).
2018-07-02 16:18:32 -06:00
Greg Fitzgerald 56e37ad2f4 Limit sticky mutex to WriteStage 2018-07-01 17:29:24 -06:00
anatoly yakovenko c24b0a1a3f
TVU rework (#352)
Refactored TVU, into stages
* blob fetch stage for blobs
* window stage for maintaining the blob window
* pulled out NCP out of the TVU so they can be separate units
TVU is now just the fetch -> window -> request and bank processing
2018-06-13 21:52:23 -07:00
Greg Fitzgerald 928e6165bc Add TPU & RPU diagrams 2018-06-07 15:24:44 -06:00
Greg Fitzgerald 60609a44ba Initialize recorder from bank's last_id 2018-05-31 12:13:18 -06:00
Greg Fitzgerald 7aab7d2f82 Sleep between events if PoH is disabled 2018-05-30 15:55:10 -06:00
Anatoly Yakovenko cef1c208a5 Crdt pipeline, coalesce window repair requests in the listener by examining all of them at once, and ublock those threads from doing io. 2018-05-30 14:04:48 -06:00
Greg Fitzgerald f2ccc133a2 Finally made fetch happen 2018-05-29 14:04:27 -06:00
Greg Fitzgerald 5e824b39dd Move multinode communication outside TPU 2018-05-29 14:04:27 -06:00
Greg Fitzgerald 46c19a5783 Rename sigverify modules 2018-05-25 17:31:07 -06:00
Greg Fitzgerald 9f5a3d6064 events -> transactions 2018-05-25 16:47:21 -06:00
Greg Fitzgerald 5a45eef1dc
Exit cleanup (#252)
* Ignore record_stage exit reason. We only really care about panic exit versus graceful exit.
* Ignore coverage build in CI
2018-05-24 10:03:17 -06:00
Greg Fitzgerald b826f837f8 First attempt to pull TPU into the server 2018-05-15 11:25:55 -06:00
Greg Fitzgerald 5855e18a4e Let server own the bank, not TPU/RPU 2018-05-15 11:21:48 -06:00
Greg Fitzgerald e9ee020b5f Rename constructors 2018-05-15 10:45:36 -06:00
Greg Fitzgerald 1bcf3891b4 New TPU/RPU constructors 2018-05-15 10:44:47 -06:00
Greg Fitzgerald 5456de63e9 Less state 2018-05-15 10:38:17 -06:00
Greg Fitzgerald 9026c70952 Inline Rpu::new 2018-05-15 10:33:16 -06:00
Greg Fitzgerald 99dc4ea4a9 Spin up threads from Rpu/Tpu constructors 2018-05-15 10:30:52 -06:00
Greg Fitzgerald 0aaa500f7c Rpu/Tpu serve() functions now only spin up threads 2018-05-15 10:10:45 -06:00
Greg Fitzgerald 7e44005a0f Don't do error-prone things in functions that spawn threads 2018-05-15 09:53:51 -06:00
Greg Fitzgerald 2a268aa528 Reorder to reflect dependencies 2018-05-15 09:17:48 -06:00
Greg Fitzgerald ef6bd7e3b8 Add TPU 2018-05-14 17:36:19 -06:00
Greg Fitzgerald 421d9aa501 Free up the name 'tpu' 2018-05-12 10:53:25 -06:00
Greg Fitzgerald 898f4971a2 Free up name 'thin_client_service' 2018-05-12 10:50:22 -06:00
Greg Fitzgerald 7ab3331f01 Move validation processor to its own module 2018-05-12 00:31:32 -06:00
Greg Fitzgerald b4ca414492 More object-oriented 2018-05-12 00:19:12 -06:00
Greg Fitzgerald 73abea088a No need for TPU dependency 2018-05-11 23:51:35 -06:00
Greg Fitzgerald 2376dfc139 Let thin client own the receiver channel 2018-05-11 23:46:04 -06:00
Greg Fitzgerald d2f95d5319 Move thin client service thread into thin_client_service.rs 2018-05-11 23:37:44 -06:00
Greg Fitzgerald cd96843699 Free up name ThinClientService 2018-05-11 23:37:14 -06:00
Greg Fitzgerald ca80bc33c6 Move the writer stage's utilities to its own module 2018-05-11 22:36:16 -06:00
Greg Fitzgerald 19607886f7 Move sig verification stage into its own module 2018-05-11 21:51:37 -06:00
Greg Fitzgerald 3c11a91f77 Cleanup verifier error handling 2018-05-11 21:01:07 -06:00
Greg Fitzgerald b781fdbd04 Reorganize 2018-05-11 20:50:50 -06:00
Greg Fitzgerald 765d901530 Better names 2018-05-11 20:18:04 -06:00
Greg Fitzgerald 3cedbc493e Reorder to reflect the pipeline order 2018-05-11 20:11:25 -06:00
Greg Fitzgerald 0488d0a82f Extract sig verify functions 2018-05-11 19:59:40 -06:00
Greg Fitzgerald f0be595e4c Create function for thin client thread 2018-05-11 17:58:27 -06:00
Greg Fitzgerald 55100854d6 Better names 2018-05-11 16:41:35 -06:00
Greg Fitzgerald bcdb058492 cargo fmt 2018-05-11 13:06:05 -06:00
Jackson Sandland 250830ade9 cargo fmt run 2018-05-11 11:38:52 -07:00
Code Cobain 458c27c6e9
Merge branch 'master' into 153-panic-cleanup 2018-05-11 11:18:45 -07:00
Jackson Sandland c95c6a75f8 tpu.rs - panic cleanup 2018-05-10 20:49:58 -07:00
Jackson Sandland bb654f286c tpu.rs - panic cleanup 2018-05-10 18:21:10 -07:00
Greg Fitzgerald cf186c5762 Better names 2018-05-10 16:58:37 -06:00
Greg Fitzgerald f384a2ce85 Move streamer-specific utility into streamer module 2018-05-10 16:58:37 -06:00
Greg Fitzgerald 803b76e997 More idiomatic Rust 2018-05-10 16:58:37 -06:00
Greg Fitzgerald 230d7c3dd6 Move all Request processing into thin_client_service 2018-05-10 16:58:37 -06:00
Greg Fitzgerald 4f629dd982 Add events socket instead of modifying the existing socket 2018-05-10 16:54:43 -06:00
Greg Fitzgerald 4fdd891b54 More precise function names 2018-05-10 16:54:43 -06:00
Stephen Akridge a80991f2b3 Fixes for serializing entries over blobs and reorg into ledger 2018-05-10 15:30:30 -07:00
Stephen Akridge 900b4f2644 Serialize entries over multiple blobs 2018-05-09 16:03:47 -07:00
Greg Fitzgerald 7ce11b5d1c Cleanup: use full words for field names
and optionally for variable names
2018-05-09 16:19:42 -06:00
Greg Fitzgerald f2d4799491 Cleanup: field names should be nouns 2018-05-09 16:14:40 -06:00
Greg Fitzgerald ebc458cd32 Remove redundant Arcs 2018-05-09 15:45:10 -06:00
Greg Fitzgerald 43cd631579 Add thin_client_service 2018-05-09 14:56:34 -06:00
Greg Fitzgerald bc824c1a6c Reference count the accountant
So that the thin client can reference the AccountingStage's accountant
from separate threads.
2018-05-09 14:33:20 -06:00
Greg Fitzgerald f107c6c2ca Don't wrap thread-safe objects with mutexes 2018-05-09 14:21:42 -06:00
Greg Fitzgerald 7daf14caa7 Don't depend on client from server 2018-05-09 13:33:33 -06:00
Greg Fitzgerald ded28c705f Tuck away the Historian
The Historian is now just a utility of the accounting stage.
2018-05-09 12:25:19 -06:00
Greg Fitzgerald 778bec0777 Intercept historian output from accounting stage
We were accessing the accountant from multiple stages just to
register the ID the historian adds to Events.

This change should cause a whole lot of Arcs and Mutexes to go away.
2018-05-09 12:00:37 -06:00
Greg Fitzgerald 6967cf7f86 Boot sync_channel()
This is less useful now that we send Vec<Event> instead of Event.
2018-05-09 11:43:16 -06:00
Greg Fitzgerald e4c47e8417 Use AccountingStage in Tpu 2018-05-09 10:31:23 -06:00
Greg Fitzgerald 98ae80f4ed Hoist historian 2018-05-09 09:26:58 -06:00
Greg Fitzgerald d44a6f7541 Move Accounting stage functionality into its own object 2018-05-09 09:03:00 -06:00
Greg Fitzgerald 9040c04d27 Remove redundant Tick 2018-05-09 08:18:52 -06:00
Greg Fitzgerald 77a76f0783 Record a batch of events 2018-05-09 08:11:19 -06:00
Greg Fitzgerald 1dca17fdb4 cargo +nightly fmt 2018-05-08 18:59:01 -06:00
Greg Fitzgerald 785e971698 AccountantSkel -> Tpu
The terms Stub and Skel come from OMG IDL and only made sense while
the Stub was acting as an RPC client for the the Accountant object.
Nowadays, the Stub interface looks nothing like the Accountant and
meanwhile we've recognized the multithreaded implementation is more
reminiscent of a pipelined CPU. Thus, we finally bite the bullet and
rename our modules.

AccountantSkel -> Tpu
AccountantStub -> ThinClient

Up next will be moving much of the TPU code into separate modules,
each representing a stage of the pipeline. The interface of each
will follow the precedent set by the Historian object.
2018-05-08 17:40:02 -06:00