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