Commit Graph

1565 Commits

Author SHA1 Message Date
Rob Walker 835f29a178 off by 2 2018-08-13 15:12:12 -07:00
Pankaj Garg bf15cad36b
Add get_finality request and use it from multinode test (#941) 2018-08-13 08:55:13 -07:00
anatoly yakovenko 288ed7a8ea
Vote should be valid (#945)
* test that fails

* fix for test

* rename
2018-08-12 18:19:54 -07:00
anatoly yakovenko f07c038266
Fix bank coalescing (#949)
* fix bank coalescing

* comments

* fix bench

* fix bench

* backout banking stage coalescing

* 120 nodes

* 100
2018-08-12 10:04:21 -07:00
Rob Walker 5dbcb43abd more enhancements 2018-08-10 19:53:58 -07:00
Rob Walker dd1eefaf62 change verify-internal to precheck
update to new ledger API
2018-08-10 19:53:58 -07:00
Rob Walker 35de159d00 better error messages 2018-08-10 19:53:58 -07:00
Rob Walker 546a1e90d5 clippy fixups 2018-08-10 19:53:58 -07:00
Rob Walker b033e1d904 enhance ledger-tool
* add json, which does the thing with json, move print to Rust's {:?}
  * add --head NUM, to limit how much work gets done for print, json, verify
  * add verify-internal, which very carefully checks ledger format without
      trying first to "recover" it
  * exit with errors on mis-usage
2018-08-10 19:53:58 -07:00
Rob Walker 96d6985895 rework read_ledger, LedgerWriter, and LedgerWindow for recover()
fixes #910
2018-08-10 18:07:23 -07:00
Stephen Akridge a206f2570d Add hostname to metrics on panic 2018-08-10 17:08:40 -07:00
anatoly yakovenko 2318ffc704
Use a different counter for validator account not found errors. (#931)
* Use a different counter for validator account not found errors.  This is a usefull signal of something going wrong with the ledger
2018-08-10 15:18:44 -07:00
Rob Walker bbf9ea89c5 add some flushing to ledger 2018-08-10 11:41:31 -07:00
Greg Fitzgerald bca2294655 cargo fmt 2018-08-09 13:41:37 -06:00
Greg Fitzgerald 4a980568ac Rename sig variables to signature
We'll avoid introducing three-letter terms to free up the namespace
for three-letter acronyms.

But recognize the term "sigverify", a verb, to verify a digital
signature.
2018-08-09 13:41:37 -06:00
Greg Fitzgerald 9d436fc5f8 Rename pk variables to pubkey 2018-08-09 13:41:37 -06:00
Greg Fitzgerald ad331e6d56 Rename PublicKey type to Pubkey
Recognize pubkey as a noun meaning the public key of a keypair.
2018-08-09 13:41:37 -06:00
Greg Fitzgerald d7e4e57548 Rename public_key variables to pubkey 2018-08-09 13:41:37 -06:00
Greg Fitzgerald b2067d2721 Rename kp variables to keypair 2018-08-09 13:41:37 -06:00
Greg Fitzgerald c2bbe4344e Rename KeyPair to Keypair 2018-08-09 13:41:37 -06:00
Greg Fitzgerald ca7d4c42dd Rename cur_hashes to num_hashes 2018-08-09 10:15:10 -06:00
Rob Walker ce8a4fa831 allow received to outpace window, we're already constraining repair
correctly identify sender in ledger_window repair responses, enabling re-transmission
2018-08-08 15:10:44 -07:00
Stephen Akridge 8331aab26a Enable Crdt debug messages to debug validators 2018-08-08 14:22:20 -07:00
Rob Walker 9783d47fd1 write a "unit" test for WindowLedger (it was working ;)
clear flags on fresh blobs, lest they sometimes impersonate coding blobs...

fix bug: advance *received whether the blob_index is in the window or not,
  failure to do so results in a stalled repair request pipeline
2018-08-08 04:28:09 -07:00
Stephen Akridge 38be61bd22 Check for log level before doing perf counter work
Perf counters, especially when running the dynamic test can cause
functions like crdt::apply_updates to be really slow (>500ms).
2018-08-08 00:16:53 -07:00
Rob Walker c64e2acf8b set destination address when for ledger window repair responses 2018-08-07 23:31:01 -07:00
Stephen Akridge a200cedb4b Lower UDP data size to 64k - 128 bytes
rust API gives errors for packets larger than ~65500 and
wikipedia says 65507 is the max size, lowering this avoids the errors.
2018-08-07 18:39:36 -07:00
Rob Walker 999534248b fixups 2018-08-07 17:27:53 -07:00
Rob Walker fbc754ea25 plug in LedgerWindow
fixes #872
2018-08-07 17:27:53 -07:00
pgarg66 1b6d472cb2
Fixed counters for coalescing and broadcast index (#900) 2018-08-07 16:46:48 -07:00
Rob Walker 2a0025bb57 get buffered IO back for ledger 2018-08-07 15:34:15 -07:00
pgarg66 64d6d3015a
Counters for broadcasted blob idx and coalesced packets (#897) 2018-08-07 14:54:26 -07:00
Stephen Akridge 90550c5b58 Switch to slice arguments and remove clippy exceptions 2018-08-07 14:43:44 -07:00
Stephen Akridge 1ac5d300a4 Rearrange start hash for process_ledger and add a unit test 2018-08-07 14:10:36 -07:00
pgarg66 16772d3d51
Coalesce multiple blobs if received close together (#869)
- This helps reduce unnecessary growth of window if small blobs
  are received in small space of time
2018-08-07 10:29:57 -07:00
Pankaj Garg ceb5a76609 Refactor validator windowing
- a unit test for windowing functions
- issue #857
2018-08-07 08:17:32 -07:00
Stephen Akridge db2392a691 Use last_id from the entries stream instead of last_id from bank
bank will only register ids when has_more is not set because those are
the only ids it has advertised, so it will not register all ids,
however the entry stream will contain unbroken last_id chain, so we
need to track that to get the correct start hash.
2018-08-07 08:14:06 -07:00
Michael Vines 575179be8e
y 2018-08-06 23:55:00 -07:00
Michael Vines 5b6ffaecc0
s/r$/f/ 2018-08-06 23:36:09 -07:00
Kazuyoshi Kato efc72b9572 Support -V/--version on all CLI apps
All CLI apps that use clap (in other words, except for bench-streamer)
can use crate_version! to take the version from Cargo.toml.

This change addresses #700.
2018-08-06 22:03:58 -07:00
Michael Vines 5dc7177540 Remove manually created help text, use clap's text instead. 2018-08-06 19:15:52 -07:00
Michael Vines 78a4b1287d Initialize logger 2018-08-06 19:04:04 -07:00
Michael Vines c5001869f1 Add verify subcommand 2018-08-06 19:04:04 -07:00
Stephen Akridge 7c31f217d5 Add voting metric even when there are not enough validators 2018-08-06 15:58:10 -07:00
Rob Walker 3beb38ac8a /tmp/farf no good on multi-user machine 2018-08-06 14:53:40 -07:00
Michael Vines 8cbaa19d2e Report the address that failed to bind 2018-08-06 11:21:25 -07:00
Rob Walker 63d2b2eb42 adjust bank notion of entry_count to aid debugging 2018-08-06 11:20:52 -07:00
Michael Vines e02da9a15a Clean up tx_count usage 2018-08-06 11:00:25 -07:00
Michael Vines ae111a131c Condense stdout 2018-08-06 11:00:25 -07:00
Michael Vines 4402e1128f Cleanup 2018-08-06 11:00:25 -07:00
Michael Vines f55bb6d95c Send/confirm a loopback payment after each batch of transactions 2018-08-06 11:00:25 -07:00
Rob Walker 0514f5e573 sync() apparently imposes a serious performance penalty 2018-08-06 08:51:41 -07:00
Rob Walker 637d403415 move bank.process_entries() to firsties 2018-08-06 08:51:41 -07:00
Rob Walker 9fabd34156 remove trace! calls, re-arrange replicate_requests to have the bank earlier 2018-08-06 08:51:41 -07:00
Rob Walker 039ed01abf on 2nd thought: do not copy_ledger() for this test 2018-08-06 08:51:41 -07:00
Rob Walker ead0eb2754 move copy_ledger() back into ledger.rs
Don't recover() for copy(), as copy() is already tolerant of things
    recover() guards against.  Note: recover() is problematic if the ledger is
    "live", i.e. is currently being written to.
2018-08-06 08:51:41 -07:00
Rob Walker c3db2df7eb tweak random access ledger
* add recover_ledger() to deal with expected common ledger corruptions
  * add verify_ledger() for future use cases (ledger-tool)
  * increase ledger testing
  * allow replicate stage to run without a ledger
  * ledger-tool to output valid json
2018-08-06 08:51:41 -07:00
Rob Walker ee6c15d2db start on ledger recovery with a description of what that might mean 2018-08-06 08:51:41 -07:00
Rob Walker 715a3d50fe Revert "Revert "clippy fixup""
This reverts commit d173e6ef87.
2018-08-06 08:51:41 -07:00
Rob Walker 692b125391 Revert "Revert "fixups""
This reverts commit e2c68d8775.
2018-08-06 08:51:41 -07:00
Rob Walker 5193819d8e Revert "Revert "plug in new ledger""
This reverts commit 57e928d1d0.
2018-08-06 08:51:41 -07:00
Stephen Akridge 210b9d346f Add voting metrics and -h/--help to get usage for client.sh script 2018-08-05 14:21:49 -07:00
Rob Walker 4c4b0f551e clippy fixups 2018-08-05 13:30:45 -07:00
Rob Walker 6800ff1882 solana-ledger-tool initial commit
does nothing but convert from random-access ledger to json
2018-08-05 13:30:45 -07:00
Michael Vines 399a3852b1 Add sigverify_stage-total_verify_time datapoint 2018-08-04 21:45:58 -07:00
Rob Walker 906d18a709 move VOTE to trace, info too verbose 2018-08-03 23:04:54 -07:00
pgarg66 7fd7310b96
Prevent a node from overrunning it's receive window (#846)
- The node drops blobs that will cause it to overrun window
- The node does not ask to repair a blob that overruns the window
2018-08-03 20:15:14 -07:00
Michael Vines 1a9e6ffdd7 Try multiple times to confirm a non-zero balance 2018-08-03 19:57:38 -07:00
Rob Walker 4aab413154 recycle the skipped, outside-window blob, fixes #843 2018-08-03 15:02:55 -07:00
Rob Walker f2b1a04bca cargo fmt fixups 2018-08-03 11:59:25 -07:00
Rob Walker 57e928d1d0 Revert "plug in new ledger"
This reverts commit 46d9ba5ca0.
2018-08-03 10:24:51 -07:00
Rob Walker e2c68d8775 Revert "fixups"
This reverts commit b72e91f681.
2018-08-03 10:24:51 -07:00
Rob Walker d173e6ef87 Revert "clippy fixup"
This reverts commit 384b486b29.
2018-08-03 10:24:51 -07:00
Rob Walker 384b486b29 clippy fixup 2018-08-02 21:50:47 -07:00
Rob Walker b72e91f681 fixups 2018-08-02 21:50:47 -07:00
Rob Walker 46d9ba5ca0 plug in new ledger 2018-08-02 21:50:47 -07:00
pgarg66 f570ef1c66
Defer repair request for blobs that may still be in avalanche transit (#814) 2018-08-02 19:12:57 -07:00
Stephen Akridge ee0195d588 Try to measure finality from time seen to when 2/3 of validator..
..set has voted. Add a timestamp to last_ids and use that to
see how long from when 2/3s validator set has voted on them.
2018-08-02 13:21:29 -07:00
Tyera Eulberg 448b8b1c17 Add Hash wrapper and supporting traits 2018-08-01 17:00:51 -07:00
Tyera Eulberg 4d77fa900b Add Signature wrapper and supporting traits 2018-08-01 17:00:51 -07:00
Stephen Akridge 7ccd771ccc Only send sigverify to GPU if batch size is >64
Seems to be a decent crossover point for Xeon E5-2620 v4 8c,16t vs. nvidia 1080ti
2018-08-01 16:38:15 -07:00
Greg Fitzgerald aa9bc57b4d Implement GenKeys without SecureRandom 2018-08-01 16:24:47 -07:00
Greg Fitzgerald 11df477b20 Make GenKey functions mut
We hide the mutability to implement SecureRandom, but that's going
away.
2018-08-01 16:24:47 -07:00
Greg Fitzgerald 7141750668 new_key -> gen_keypair 2018-08-01 16:24:47 -07:00
Greg Fitzgerald 68675bd1ab Less pub 2018-08-01 16:24:47 -07:00
Greg Fitzgerald 19b3cacd60 Generate a fixed-size array instead of a vector 2018-08-01 16:24:47 -07:00
Tyera Eulberg bcfaf5d994 Rebase ledger change 2018-08-01 16:15:14 -07:00
Tyera Eulberg e9499ac5b8 Update PublicKey AsRef to slice 2018-08-01 16:15:14 -07:00
Tyera Eulberg 7ff721e563 Replace pub field with AsRef impl 2018-08-01 16:15:14 -07:00
Tyera Eulberg cf70e5ff2f Handle wrapped PublicKey struct 2018-08-01 16:15:14 -07:00
Tyera Eulberg a86618faf3 Add PublicKey wrapper
Add custom formatting for PublicKey display and debug
2018-08-01 16:15:14 -07:00
Stephen Akridge 6693386bc5 Lower errors to warnings so they don't print during tests
Negative tests should trigger the warnings, but errors look like
something is wrong.
2018-08-01 16:56:12 -06:00
Michael Vines 4a8a0d03a3 Correct localhost address 2018-08-01 15:49:48 -07:00
Michael Vines 5cda0ed964 Airdrop from the leader 2018-08-01 15:21:20 -07:00
Rob Walker 0aba74935b fixups 2018-08-01 14:42:58 -07:00
Rob Walker 4eb666d4f9 provide ledger::copy() 2018-08-01 14:42:58 -07:00
Rob Walker d5e0cf81ff fixups 2018-08-01 14:42:58 -07:00
Rob Walker 3ea784aff7 clippy fixups 2018-08-01 14:42:58 -07:00
Rob Walker fef93958c8 fixups, tests 2018-08-01 14:42:58 -07:00
Rob Walker cae88c90b1 add a persistent ledger of index and data files 2018-08-01 14:42:58 -07:00
Rob Walker 1a8da769b6 ... 2018-08-01 14:42:58 -07:00
Rob Walker ff254fbe5f re-instate traces 2018-08-01 09:08:38 -07:00
Rob Walker 05153e4884 de-trace this function, new blob is not a dup 2018-08-01 09:08:38 -07:00
Rob Walker 2ece27ee3a fix leak 2018-08-01 09:08:38 -07:00
Greg Fitzgerald a58df52205 Fix build
Last two PRs crossed in flight. A keypair is now required for all
types of FullNode, not just validators.
2018-08-01 08:53:21 -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
Michael Vines 821e3bc3ca Avoid race between test_lograte and test_lograte_env 2018-07-31 16:08:01 -07:00
Rob Walker 5dd2f737a3 clear out old blobs in find_next_missing 2018-07-31 15:54:32 -07:00
anatoly yakovenko 308b6c3371
Follow Shared prefix convention for Window alias (#798)
Follow Shared prefix convention for Window alias.
2018-07-30 16:56:01 -07:00
Rob Walker ea7fa11b3e use size_of() instead of serialized_size() and magic number 8 2018-07-30 16:48:58 -07:00
Michael Vines 95b98b3845 Fix --addr option 2018-07-30 16:36:26 -07:00
Michael Vines f27613754a Report number of nodes found on failure too 2018-07-30 16:36:26 -07:00
Michael Vines 79ece53e3c Don't panic the tokio worker thread when deserialize() fails 2018-07-30 14:56:53 -07:00
Rob Walker f341b2ec10 fixups 2018-07-30 14:26:44 -07:00
Rob Walker 167b079e29 fixups 2018-07-30 14:26:44 -07:00
Rob Walker 7ded5a70be fixups 2018-07-30 14:26:44 -07:00
Rob Walker fc476ff979 implement iterator for parsing length + data ledger 2018-07-30 14:26:44 -07:00
Rob Walker c3279c8a00 chugga 2018-07-30 14:26:44 -07:00
Rob Walker e471ea41da fixups 2018-07-30 14:26:44 -07:00
Rob Walker 552d4adff5 use a binary ledger: newline-separated, newline-escaped entries instead of json 2018-07-30 14:26:44 -07:00
pgarg66 0c33c9e0d7
Dynamic network test changes (#795)
- No sigverify if feature sigverify_cpu_disable is used
- Purge validators in the test if lag count increases beyond
  SOLANA_DYNAMIC_NODES_PURGE_LAG environment variable
- Other useful log messages in the test
2018-07-30 13:57:10 -07:00
Michael Vines fae9fff24c Unify logging initialization 2018-07-29 19:08:27 -07:00
Michael Vines 79924e407c Include nanoseconds in log timestamp 2018-07-29 19:08:27 -07:00
Michael Vines af1a2e83bc Don't panic again when waiting for a panicked validator thread 2018-07-28 16:35:35 -07:00
Michael Vines 029e2db2cf Improve assert message 2018-07-28 10:40:50 -07:00
sakridge 0b47404ba6 Check for default leader and use cmp::max for a bit nicer code (#779) 2018-07-27 15:53:31 -07:00
Rob Walker 50e1e0ae47 use rust's rotate (in place, yay!) 2018-07-27 11:44:02 -07:00
Michael Vines 538c3b63e1 Log the last_id being voted on 2018-07-27 11:27:51 -07:00
Michael Vines 678b2870ff
i 2018-07-27 11:11:37 -07:00
Michael Vines 308d8c254d poll_get_balance no longer fails intermittently for zero balance accounts
While polling for a non-zero balance, it's not uncommon for one of the
get_balance requests to fail with EWOULDBLOCK.  Previously when a get_balance
request failure occurred on the last iteration of the polling loop,
poll_get_balance returned an error even though the N-1 iterations may have
successfully retrieved a balance of 0.
2018-07-26 21:41:07 -07:00
Michael Vines f11aa4a57b Ensure non-zero exit code if 'balance' command fails 2018-07-26 21:41:07 -07:00
Michael Vines 7672506b45 Validators now vote once a second regardless 2018-07-26 17:07:42 -07:00
Rob Walker dd819cec3d fix off by one in packet.rs 2018-07-26 09:24:44 -07:00
Rob Walker cbb8dee360 rework broadcast to understand a separate transmit index for coding blobs 2018-07-25 20:45:16 -07:00
Rob Walker e0cdcb0973 employ the simple choice for broadcast table of coding blobs: round-robin 2018-07-25 20:45:16 -07:00
Rob Walker a6a2a745ae fix broadcast of erasure coding blobs
erasure coding blobs were being counted as window slots, skewing transmit_index

erasure coding blobs were being skipped over for broadcast, because they're
  only generated when the last data blob in an erasure block is added to the
  window.... rewind the index to pick up and broadcast those coding blobs
2018-07-25 20:45:16 -07:00
Michael Vines f372840354 Collect some datapoints while bench-tps is running 2018-07-25 20:15:43 -07:00
Stephen Akridge 212874e155 Use BlobError for get_size return 2018-07-25 15:54:04 -07:00
Rob Walker 75212f40e7 fix off by one for send_to() of blob 2018-07-25 15:16:56 -07:00
Rob Walker 6fde65577e fixes #756 2018-07-25 11:07:03 -07:00
Stephen Akridge edf2ffaf4e Reduce complexity of main for clippy
...and readability
2018-07-25 10:16:46 -07:00
Stephen Akridge 6c275ea5ef More knobs. Arg for tx count per batch and also sustained mode
sustained mode overlaps tx generation with transfer. This mode seems
to have lower peak performance but higher average performance
2018-07-25 10:16:46 -07:00
Stephen Akridge 23ed65b339 Transfer and sign at the same time in bench-tps 2018-07-25 10:16:46 -07:00
Rob Walker 9c7913ac9e trying to raise an error 2018-07-25 08:12:20 -07:00
Rob Walker 8b01e6ac0b implement Blob::get_size(), the counterpart of Blob::set_size() 2018-07-25 08:12:20 -07:00
Rob Walker ff5854396a deserialize using get_data_size(), which refers to blob.data()'s length,
instead of using msg.meta.size, which refers to the entire blob's length

fixes #752
2018-07-25 08:12:20 -07:00
Michael Vines f0725b4900 Avoid panicking if poll_get_balance() fails while in the transaction loop 2018-07-24 23:31:28 -07:00
Michael Vines 327ba5301d Log token balance throughout the transfer loop 2018-07-24 22:40:12 -07:00
Michael Vines aa2104a21b Reclaim tokens before exiting to avoid leaking tokens 2018-07-24 21:40:02 -07:00
Michael Vines 0206020104 Make airdrops more robust 2018-07-24 21:40:02 -07:00
Rob Walker 33bd1229d9 make next_entries() smarter about fitting Transactions into a Blob 2018-07-24 21:38:06 -07:00
Michael Vines 195098ca2b Failure test case 2018-07-24 21:38:06 -07:00
Stephen Akridge 6bd18e18ea Add error messages to ledger verify 2018-07-24 17:35:41 -07:00
Rob Walker 2b528e2225 fixups 2018-07-24 13:04:34 -07:00
Rob Walker 75505bbd72 fixups 2018-07-24 13:04:34 -07:00
Rob Walker e1fc7444f9 fixups 2018-07-24 13:04:34 -07:00
Rob Walker fcdb0403ba eliminate unused parameter received, this branch fixes #636 2018-07-24 13:04:34 -07:00
Rob Walker caeb55d066 placate clippy and reduce replicode 2018-07-24 13:04:34 -07:00
Rob Walker f11e60b801 fix major bug: re-used blobs need to have their flags cleared
plus: lots of additional debug-ability
2018-07-24 13:04:34 -07:00
Rob Walker 54f2146429 fixups 2018-07-24 13:04:34 -07:00
Rob Walker f60ee87a52 zero the tails of data blobs during generate() and recover() to enable blob reuse 2018-07-24 13:04:34 -07:00
Rob Walker 9c06fe25df enhance unit test to fail when erasure encodes stray bytes of data blobs 2018-07-24 13:04:34 -07:00
Rob Walker 1eec8bf57f fixups 2018-07-24 13:04:34 -07:00
Rob Walker ddb24ebb61 fixups 2018-07-24 13:04:34 -07:00
Rob Walker a58c83d999 prevent infinite loop on window wraparound 2018-07-24 13:04:34 -07:00
Rob Walker 6656ec816c protect generate and recover from u64->usize casting issues 2018-07-24 13:04:34 -07:00
Rob Walker 8d2bd43100 fixups 2018-07-24 13:04:34 -07:00
Rob Walker 429ea98ace mutable-coding-blocks 2018-07-24 13:04:34 -07:00
Rob Walker 3d80926508 fixups 2018-07-24 13:04:34 -07:00
Rob Walker d713e3c2cf send coding in broadcast(), fixups 2018-07-24 13:04:34 -07:00
Rob Walker 5d20d1ddbf get test_window_recover_basic() passing 2018-07-24 13:04:34 -07:00
Rob Walker 257acdcda1 building now 2018-07-24 13:04:34 -07:00
Rob Walker dab98dcd81 coded => coding 2018-07-24 13:04:34 -07:00
Rob Walker 99653a4d04 rework erasure to have data and coding blobs side-by-side in window 2018-07-24 13:04:34 -07:00
Rob Walker dda563a169 document process_blob() 2018-07-24 13:04:34 -07:00
Michael Vines 813e438d18 Improve panic message 2018-07-24 11:20:13 -07:00
Michael Vines 48b5344586 Check for 0 TPS explicitly 2018-07-23 16:51:39 -07:00
Michael Vines 686b7d3737 Report panics if metrics are setup 2018-07-23 16:51:39 -07:00
Michael Vines 7c65e2fbfc Rename variable to improve readability 2018-07-23 16:51:39 -07:00
Stephen Akridge b3f823d544 Alternate between token reclaim and distribution 2018-07-23 13:17:52 -07:00
Stephen Akridge ea21c7a43e Limit bench-tps last_id poll to prevent infinite loop 2018-07-23 13:17:52 -07:00
Stephen Akridge 437fb1a8d7 Add -a argument to client in case you want to override the address
advertised by the client
2018-07-23 13:17:52 -07:00
Michael Vines c707b3d2e7 Display the total number of transactions for each node once complete 2018-07-22 23:19:33 -07:00
Michael Vines 4ecd0a0e45 Improve bench-tps logging 2018-07-22 16:26:49 -07:00
Michael Vines cdcf59ede0 Display a list of all discovered nodes 2018-07-22 11:32:44 -07:00
Greg Fitzgerald 69688a18c7 Fix clippy warnings
Seems clippy is not linting any of the benches.
2018-07-21 11:36:20 -04:00
Greg Fitzgerald 7193bf28b6 Move streamer bench into standalone executable
It doesn't make use of criterion (or libtest)
2018-07-21 11:36:20 -04:00
Greg Fitzgerald 637f890b91 Rename client-demo to bench-tps 2018-07-21 11:36:20 -04:00
Greg Fitzgerald 23428b0381 Migrate drone to poll_for_signature 2018-07-20 20:33:55 -04:00
Greg Fitzgerald 0e305bd7dd Add poll_for_signature 2018-07-20 20:33:55 -04:00
Greg Fitzgerald c068ca4cb7 Return Signature from transfer_signed and send_airdrop 2018-07-20 20:33:55 -04:00
Greg Fitzgerald 6a8379109d Sleep between retries
Don't congest a congested network.
2018-07-20 20:33:55 -04:00
Stephen Akridge cba3b35ac9 Change not_enough_peers to the default log rate 2018-07-20 11:37:12 -07:00
Stephen Akridge 313fed375c Add counter for tx count and limit error messages 2018-07-20 11:37:12 -07:00
Greg Fitzgerald 1e63702c36 cargo fmt 2018-07-20 13:09:01 -04:00
Martius Lim 478ee9a1c4 move tests for 'is_valid_address()' into its own test 2018-07-20 13:09:01 -04:00
Martius Lim eb1e5dcce4 add test for 'is_valid_address()' 2018-07-20 13:09:01 -04:00
Martius Lim 84225beeef replace 'daddr' checks with 'is_valid_address()' 2018-07-20 13:09:01 -04:00
Greg Fitzgerald bcc247f25f Clarify code comment 2018-07-20 12:31:23 -04:00
pgarg66 686e61d50c
Display max TPS from all nodes at end of client demo (#716)
- Also lists node with 0 TPS and overall average TPS
2018-07-19 20:09:57 -07:00
Michael Vines a67f58e9a5 Add -c option to easily interrogate the number of nodes 2018-07-19 09:41:09 -07:00
Rob Walker 0696f9f497 flush writer, makes partial deserialization a bit less likely 2018-07-18 22:53:33 -07:00
Michael Vines 3f659a69fd Prevent nodes from gossiping with themselves with different ids 2018-07-18 19:38:38 -07:00
anatoly yakovenko 2c62be951f
boot invalid height (#688) 2018-07-18 18:10:53 -07:00
Stephen Akridge 2348733d6c remove drone port magic number 2018-07-19 02:01:23 +02:00
anatoly yakovenko 7f810a29ff Purge leader (#687)
* purge leader

* fixup!

* fixup!
2018-07-18 14:39:43 -07:00
Michael Vines 5deb34e5bd Little more trace! logging 2018-07-18 12:54:50 -07:00
Michael Vines 39df087902 Permit more than the requested amount of nodes 2018-07-18 12:07:50 -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
anatoly yakovenko 8cf5620b87
crdt_insert_new_entry_counter (#680) 2018-07-17 22:55:53 -07:00
Anatoly Yakovenko 05c5603879 error counter 2018-07-17 17:28:23 -07:00
Anatoly Yakovenko c2c48a5c3c write stage broadcast counters 2018-07-17 17:28:23 -07:00
pgarg66 4af556f70e
Added tests for bad gossip address (#672) 2018-07-17 16:27:46 -07:00
anatoly yakovenko 8bad411962
env variable for default metrics rate that gets set for counters (#670)
* env variable for default metrics rate that gets set for counters

* ignore if env rate is set to 0

* use a slow rate by default

* fixed test
2018-07-17 15:26:10 -07:00
Anatoly Yakovenko 3d45b04da8 review comments 2018-07-17 15:51:32 -04:00
Anatoly Yakovenko 9e2f26a5d2 review comments 2018-07-17 15:51:32 -04:00
Anatoly Yakovenko a016f6e82e bulds 2018-07-17 15:51:32 -04:00
Anatoly Yakovenko 72282dc493 fast exit dynamic test 2018-07-17 15:51:32 -04:00
Michael Vines 47a22c66b4 Include program name in panic metric 2018-07-17 12:13:22 -07:00
Michael Vines fb11d8a909 Install panic hook 2018-07-17 12:13:22 -07:00
Michael Vines 7d872f52f4 Add set_panic_hook 2018-07-17 12:13:22 -07:00
Michael Vines d882bfe65c Ignore/log RequestWindowIndex from self 2018-07-17 12:12:54 -07:00
pgarg66 103584ef27
Use public IP for client gossip, if UPnP fails (#665) 2018-07-17 11:23:32 -07:00
anatoly yakovenko 1fb537deb9
Do not generate gossip requests to unspecified addresses (#657)
* Do not generate gossip requests to unspecified addresses

* review comments
2018-07-17 09:44:48 -07:00
anatoly yakovenko dd0c1ac5b2
Error counters for streamer (#658)
* error counters for streamer

* more counters
2018-07-17 08:20:35 -07:00
anatoly yakovenko d8c9655128
Dynamic test assert (#643)
* log responder error to warn

* log responder error to warn

* fixup!

* fixed assert

* fixed bad ports issue

* comments

* test for dummy address in Crdt::new instaad of NodeInfo::new

* return error if ContactInfo supplied to Crdt::new cannot be used to connect to network

* comments
2018-07-16 19:31:52 -07:00
anatoly yakovenko 09f2d273c5
less intrusive counters (#655)
* less intrusive counters

* fixed arg

* tests

* comments
2018-07-16 18:33:50 -07:00
pgarg66 0d85b43901
Fix input parameter processing for client num nodes (#653) 2018-07-16 17:23:35 -07:00
anatoly yakovenko 015b7a1ddb
dash for namespaces (#649) 2018-07-16 15:55:54 -07:00
Anatoly Yakovenko ab3e460e64 insert votes as they are observed 2018-07-16 13:39:20 -07:00
Anatoly Yakovenko 4631af5011 counters for vote not found 2018-07-15 20:31:23 -06:00
Michael Vines 5d28729b2a Use ed25519_init() for faster failures 2018-07-15 20:30:32 -06:00
Michael Vines 94d015b089 Demote log level 2018-07-14 20:42:00 -07:00
Michael Vines 2b77f62233 Poll longer while waiting for an airdrop 2018-07-14 17:10:44 -07:00
Michael Vines 30e50d0f70 Log airdrop amount and client public key 2018-07-13 22:41:52 -07:00
Michael Vines 1f9152dc72 Detect and report airdrop failures 2018-07-13 18:08:28 -07:00
Michael Vines 084dbd7f58 Fail gracefully when leader.json is missing 2018-07-13 17:24:25 -07:00
Michael Vines 18e6ff4167 Fail gracefully when keypair file is unreadable 2018-07-13 10:00:55 -07:00
Rob Walker 710fa822a0 fixups 2018-07-12 22:51:55 -07:00
Rob Walker 34ea483736 step two: supply a ledger file argument to fullnode in the demo
(also whack unused "myip.sh", even though it was pretty)
2018-07-12 22:51:55 -07:00
Rob Walker a3ff40476e Banish stdin/stdout for ledger
step one: accept a "ledger file" argument instead of "outfile"
2018-07-12 22:51:55 -07:00
Greg Fitzgerald 3d9acdd970 Fix nightly 2018-07-12 21:50:28 -06:00
Greg Fitzgerald f06a8dceda Fix keygen docs
Thanks @rob-solana
2018-07-12 21:50:28 -06:00
Greg Fitzgerald 545f4f1c87 Pass the owner's keypair to fullnode-config 2018-07-12 21:50:28 -06:00
Greg Fitzgerald 77543d83ff Fix default keypair paths 2018-07-12 21:50:28 -06:00
Greg Fitzgerald eb6a30cb7c In Wallet, make --tokens required and --to optional 2018-07-12 21:50:28 -06:00
Greg Fitzgerald 97372b8e63 Add --outfile option to solana-keygen 2018-07-12 21:50:28 -06:00
Greg Fitzgerald cea29ed772 More keygen 2018-07-12 21:50:28 -06:00
Greg Fitzgerald b5006b8f2b Migrate to solana-keygen
Most of #593
2018-07-12 21:50:28 -06:00
Greg Fitzgerald 81c44c605b Add solana-keygen
Same as solana-mint, but without a tokens field.
2018-07-12 14:06:43 -06: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
Greg Fitzgerald f98e9aba48 Apply clippy feedback to CLI apps 2018-07-12 09:40:40 -06:00
Tyera Eulberg 350cf62b90 Sequence client outgoing and incoming txs 2018-07-12 07:24:15 -06:00
Tyera Eulberg aa4f30c491 Repay transactions from test accounts to client 2018-07-12 07:24:15 -06:00
Tyera Eulberg 3de979aa7c Check client balance and only airdrop if less than TPS quota 2018-07-12 07:24:15 -06:00
Greg Fitzgerald 87156e1364 Fix flaky test
The test would fail any time the original value was coincidently
the same as the new bogus value.
2018-07-11 14:16:21 -07:00
Greg Fitzgerald 2710ff271e cargo fmt 2018-07-11 11:38:41 -06:00
OEM Configuration (temporary user) 468ac9facd Refactor the "ReplicatedData" struct
Rename the "ReplicatedData" struct to the "NodeInfo" struct.
Also refactors and renames the members in this struct.
2018-07-11 11:38:41 -06:00
Rob Walker 705720f086 fixups 2018-07-11 10:37:47 -07:00
Rob Walker a219e78f00 fixups 2018-07-11 10:37:47 -07:00
Rob Walker 7a41868173 fixups 2018-07-11 10:37:47 -07:00
Rob Walker e16acec901 fixups 2018-07-11 10:37:47 -07:00
Rob Walker de44d7475e fixups 2018-07-11 10:37:47 -07:00
Rob Walker c2dd009e0b fixups 2018-07-11 10:37:47 -07:00
Rob Walker 5a8da75d06 optimize process_ledger() 2018-07-11 10:37:47 -07:00
Greg Fitzgerald 3144a70b18 Move all benchmarks to benches/ 2018-07-11 11:18:18 -06:00
Stephen Akridge bed5438831 Improved streamer debug messages
distinguish between threads
2018-07-11 18:26:16 +02:00
Anatoly Yakovenko 6f991b3c11 Send keypair args for validators instead of leaders 2018-07-11 07:54:38 -06:00
Anatoly Yakovenko 03a8a5ed55 only submit to influx when we log
test accumilated value logging

lots of counters

higher influx rate

fix counter name

replicate-transactions
2018-07-11 07:53:39 -06:00
Greg Fitzgerald dfa05a8742 Move bank benchmark outside src
This will make it available to third party benchmarking tools.
2018-07-10 19:38:29 -06:00
anatoly yakovenko 0d4e4b18c2
Quiet counter (#574)
* only submit to influx when we log

* test accumulated value logging
2018-07-10 15:14:59 -07:00
Anatoly Yakovenko d531b9645d review comments 2018-07-10 13:32:31 -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
Michael Vines 0ee86ff313 Map counters to metrics 2018-07-10 11:11:21 -06:00
Rob Walker 1dd467ed7d fix issue #568 2018-07-09 22:27:11 -06:00
Anatoly Yakovenko 922dffb122 fix erasure 2018-07-09 20:40:14 -06:00
Anatoly Yakovenko 63985d4595 renamed to contact_info 2018-07-09 20:40:14 -06:00
Anatoly Yakovenko 97dd1834d7 fix tests, more logs 2018-07-09 20:40:14 -06:00
Anatoly Yakovenko 2ea030be48 stick all the addrs into one struct 2018-07-09 20:40:14 -06:00
Tyera Eulberg 606cfbfe1e Migrate fullnode and fullnode-config to clap for CLI arguments 2018-07-09 20:38:32 -06:00
Rob Walker ed0a590549 support an initial window filled with last up-to-WINDOW_SIZE blobs 2018-07-09 14:50:14 -07:00
Greg Fitzgerald 71f05cb23e Vet timestamp source from contract, not leader
Per @aeyakovenko, contracts shouldn't trust the network for
timestamps. Instead, pass the verified public key to the
contract and let it decide if that's a public key it wants
to trust the timestamp from.

Fixes #405
2018-07-09 08:40:07 -06:00
Greg Fitzgerald 5f99657523 Remove last_time from bank
We had a test for this, but without `Bank::time_sources` (removed in the last
commit), there's no last_time that can be trusted.
2018-07-09 08:40:07 -06:00
Greg Fitzgerald 587ae1bf3c Remove time_sources from bank
I wrote this, but per
https://github.com/solana-labs/solana#code-coverage, if it doesn't
break a test, it's fair game to delete.
2018-07-09 08:40:07 -06:00
Michael Vines 22c0e3cd54 Metrics v0.1 2018-07-07 19:40:09 -07:00
Greg Fitzgerald 3ed9567f96 Remove exit variable from RequestStage 2018-07-05 17:32:41 -06:00
Greg Fitzgerald c4fa841aa9 Remove exit variable from respond [stage]
And drop the sender that feeds input to the responder.
2018-07-05 17:32:41 -06:00
Greg Fitzgerald f284af1c3d Remove exit variable from WindowStage and retransmit [stage] 2018-07-05 17:32:41 -06:00
Greg Fitzgerald 46602ba9c3 Remove exit variable from ReplicateStage 2018-07-05 17:32:41 -06:00
Greg Fitzgerald 81477246be Remove exit variable from VerifyStage 2018-07-05 17:32:41 -06:00
Greg Fitzgerald 9bd63867aa No longer need to ignore downstream send errors
By removing the exit variables, the downstream stages wait for
upstream stages to drop their senders before exiting.
2018-07-05 17:32:41 -06:00
Greg Fitzgerald d1c317fd5f Remove exit variable from broadcast [stage] 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 82c86daa78 Exit write_stage on channel errors 2018-07-05 17:32:41 -06:00
Greg Fitzgerald b95db62be3 Handle errors consistently
Error handling is still clumsy. We should switch to something like
`error-chain` or `Result<T, Box<Error>>`, but until then, we can
at least be consistent across modules.
2018-07-05 17:32:41 -06:00
Greg Fitzgerald 0f7fdd71cc Remove executable bit from nat.rs 2018-07-05 17:32:41 -06:00
Greg Fitzgerald af1a7da0d5 Fix code comments 2018-07-05 17:32:41 -06:00
Tyera Eulberg d698b3da3a Revert tps_demo marker 2018-07-05 15:15:23 -06:00
Tyera Eulberg 6d275d571c Clean up commented code 2018-07-05 15:15:23 -06:00
Tyera Eulberg 63acb82c87 Update drone airdrop test for tps_demo functionality 2018-07-05 15:15:23 -06:00
Tyera Eulberg 4d05b74314 Port solana-client-demo to clap crate for CLI arguments 2018-07-05 15:15:23 -06:00
Tyera Eulberg 96c321da76 Update drone to allow TPS-sized airdrops 2018-07-05 15:15:23 -06:00
Tyera Eulberg 4701540cc9 Migrate solana-client-demo to use drone 2018-07-05 15:15:23 -06:00
Pankaj Garg f54615b4e3 UDP port for client demo in range
* This change will allow clients to run behind a firewall
  with only certain port range opened for access
2018-07-05 10:17:35 -06:00
Greg Fitzgerald 77bf17064a Add Service trait
Added a consistent interface to all the microservices.
2018-07-04 16:40:34 -06:00
Tyera Eulberg 44150b2e85 Remove unused crate from wallet CLI 2018-07-04 16:39:26 -06:00
Tyera Eulberg 8ec2fe15f3 Port solana-drone to clap crate for CLI arguments 2018-07-04 16:39:26 -06:00
Greg Fitzgerald 4b07772e22 Add helper functions for reading entries
```rust
let entries = entry_writer::read_entries_from_str(entries_str).unwrap();
let entries_len = entries.len();
assert_eq!(entries_len, 7);
let bank = Bank::default();
bank.process_ledger(entries).unwrap();
assert_eq!(bank.transaction_count(), entries_len - 2);
```
2018-07-03 19:32:01 -06:00
Anatoly Yakovenko e771d36278 Better logs 2018-07-03 18:10:16 -06:00
Rob Walker 800c2dd370 make the leader append to the ledger file 2018-07-03 17:17:52 -06:00
Greg Fitzgerald f38842822f Cleanup code duplication 2018-07-03 16:33:36 -06:00
Greg Fitzgerald 88a6fb86bf Clean up read_entries() and its usage 2018-07-03 16:33:36 -06:00
Greg Fitzgerald f6fe998ed4 Revert 1dd8c5ed362693fa46e4a281e1caaae427a88edc
Per @sakridge, this might cause a performance degradation. Need
to benchmark it.
2018-07-03 14:00:53 -06:00
Anatoly Yakovenko 16337d7c1e unstable test 2018-07-03 14:00:39 -06:00
Anatoly Yakovenko fa70b3bf70 split out files, fixed a bug @garious! 2018-07-03 14:00:39 -06:00
Anatoly Yakovenko 3a90f138b2 dynamit network test
* cleaned up fullnode api
* added debug_id to ReplicatedData and crdt for debugging
2018-07-03 14:00:39 -06:00
Michael Vines 033f6dcbcb Demote 'sorted leader' log 2018-07-03 08:24:28 -07:00
Greg Fitzgerald 5d8b2f899a Fix wallet doc 2018-07-02 19:21:03 -07:00
Greg Fitzgerald 0dabdfd48e Use zero to represent a nonexistent account
This also fixes a bug in the thin client where a nonexistent account
would have triggered a panic because we were using `balances[k]` instead
of `balances.get(key)`.

Fixes #534
2018-07-02 18:48:40 -06:00
Greg Fitzgerald d2bb4dc14a Purge empty accounts 2018-07-02 18:48:40 -06:00
Michael Vines 2cbfe41422 Abort nicer on drone connection failure 2018-07-02 15:57:30 -07:00
Michael Vines c72dced8fa Report error when an invalid confirmation signature or public key is provided 2018-07-02 15:57:30 -07:00
Anatoly Yakovenko 6feed5fd56 rebased 2018-07-02 16:34:49 -06:00
Anatoly Yakovenko b8fe5ae076 rename server to fullnode 2018-07-02 16:34:49 -06:00
Anatoly Yakovenko 7e657d65f3 merged f2ab08c65e 2018-07-02 16:34:49 -06:00
Anatoly Yakovenko a166bb816e wtfr 2018-07-02 16:34:49 -06:00
Anatoly Yakovenko 2952027d04 wtfr 2018-07-02 16:34:49 -06:00
Anatoly Yakovenko 430d9d9314 fixup! 2018-07-02 16:34:49 -06:00
Anatoly Yakovenko fa247196c0 fullnode lib 2018-07-02 16:34:49 -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
Michael Vines 3e0e09555a Undo UPnP UDP port binding 2018-07-02 14:38:01 -07:00
Michael Vines 67e0100866 Bind to 0.0.0.0 2018-07-02 14:38:01 -07:00
Michael Vines f2ab08c65e Reuse request UDP port for responses 2018-07-02 14:38:01 -07:00
Greg Fitzgerald 04a93050e7 No need to share a write lock across single-threaded methods 2018-07-02 15:25:16 -06:00
Michael Vines 03401041db Correct signature argument name 2018-07-02 11:24:13 -07:00
Michael Vines ae29e2085f Init env_logger 2018-07-02 10:59:09 -07:00
Michael Vines ea5663c0da Demote log 2018-07-02 10:28:43 -07:00
Greg Fitzgerald 4e3526394e Use IntoInterator to simplify write_entries() usage 2018-07-02 09:51:39 -06:00
Greg Fitzgerald 6806a14a3f Use Cursor instead of tempfile.
Faster and one less dependency.
2018-07-02 09:51:39 -06:00
Greg Fitzgerald ec7e50b37d Consolidate ledger serialization code
The new read_entries() works, but is overly-contrained. Not
using that function yet, but adding it here in the hopes some
Rust guru will tell us how to get that lifetime constraint out
of there.

Fixes #517
2018-07-02 09:51:39 -06:00
Greg Fitzgerald e7b7dfebf5 Add tests for process_ledger() 2018-07-02 09:51:39 -06:00
Greg Fitzgerald 669164bada Boot EntryWriter's Mutex
Finally!
2018-07-01 17:29:24 -06:00
Greg Fitzgerald 4f3a291391 Move the writer into EntryWriter 2018-07-01 17:29:24 -06:00
Greg Fitzgerald 56e37ad2f4 Limit sticky mutex to WriteStage 2018-07-01 17:29:24 -06:00
Greg Fitzgerald 17de79a83a Remove dead code 2018-07-01 17:29:24 -06:00
Greg Fitzgerald 09e9139855 Move channel code to write stage 2018-07-01 17:29:24 -06:00
Greg Fitzgerald 76fc5822c9 Send Vec<Entry> between stages instead of Entry
Might see a performance boost here.
2018-07-01 17:29:24 -06:00
Greg Fitzgerald c767a854ed Remove useless Arc 2018-07-01 11:35:32 -07:00
Greg Fitzgerald b60802ddff Refactor such that genesis can use entry_writer 2018-07-01 11:35:32 -07:00
Greg Fitzgerald 1c35d59f26 Receive entries first, then write 2018-07-01 11:35:32 -07:00
Greg Fitzgerald adcaf715c6 Cleanup write_entries 2018-07-01 11:35:32 -07:00
Greg Fitzgerald 1f9494221b Make space for a write_entry() that only writes entries 2018-07-01 11:35:32 -07:00
Greg Fitzgerald 466d6f76b9 Don't hide error in write_entry() 2018-07-01 11:35:32 -07:00
Greg Fitzgerald b05e6ce3db Cleanup solana-genesis 2018-07-01 11:35:32 -07:00
Michael Vines 450f271cf7 Move public IP address detection out of bash 2018-06-29 21:12:05 -07:00
Tyera Eulberg ba6a6f5227 Use clap crate for wallet CLI subcommands and arguments 2018-06-29 21:30:20 -06:00
Michael Vines 903ec27754 Add BROKEN_NAT env variable to select Udp sender port workaround 2018-06-29 20:02:28 -07:00
Michael Vines 0b56d603c2 Client NAT traversal 0.1
UPnP is now used to request a port on the NAT be forwarded to the local machine.
This obviously only works for NATs that support UPnP, and thus is not a panacea
for all NAT-related connectivity issues.

Notable hacks in this patch include a transmit/receive UDP socket pair to work
around current protocol limitations whereby the full node assumes its peer can
receive on the same UDP port it transmitted from.
2018-06-29 17:36:26 -07:00
Greg Fitzgerald 816246ebee Add doc 2018-06-29 17:28:12 -06:00
Greg Fitzgerald a9881aee05 Add base58-encoded addresses 2018-06-29 17:28:12 -06:00
Greg Fitzgerald 7b5b989cfe Print usage is a command is not provided 2018-06-29 17:28:12 -06:00
Greg Fitzgerald c4b62e19f2 Do Proof of History verification before appending entries to the bank
Note: replicate_stage is still using `process_entries()` because
changing it to `process_blocks()` causes the `test_replicate` test to
fail.
2018-06-29 15:35:39 -06:00
Greg Fitzgerald 9a4733bde7 Remove interactive behavior from wallet 2018-06-29 13:22:20 -06:00
Greg Fitzgerald 517d08c637 Cleanup 2018-06-29 09:51:13 -07:00
Greg Fitzgerald 90dd794ae5 cargo fmt
rustfmt 0.6.1-stable (49279d71 2018-05-08)
2018-06-29 09:51:13 -07:00
Tyera Eulberg e0dbbba8a3 fmt 2018-06-29 09:51:13 -07:00
Tyera Eulberg d354e85a9a Return bool on signature check 2018-06-29 09:51:13 -07:00
Tyera Eulberg e4e1f8ec1e Missing -m parameter handling 2018-06-29 09:51:13 -07:00
Tyera Eulberg 0112a24179 Add confirm command to wallet, and update RPU to check bank for a signature 2018-06-29 09:51:13 -07:00
Stephen Akridge a094507bb8 Lower default benchmarking numbers to make CI timeout 2018-06-29 07:14:47 -06:00
Stephen Akridge 8effa4e3e0 Clear old blobs before putting in the new one
Otherwise we will just warn about overrun and not insert new blob
Also, break if the index we find is less than consumed otherwise
we can infinite loop
2018-06-29 07:14:47 -06:00
Stephen Akridge 1c9e7dbc45 Don't recycle in the replicate stage
Windowing stage owns all the blobs now
2018-06-29 07:14:47 -06:00
Stephen Akridge 799b249f02 Don't null blob window until we have to 2018-06-29 07:14:47 -06:00
Michael Vines 47917d00d1 Always bind to 0.0.0.0 regardless of what's being advertised to other nodes 2018-06-28 19:13:36 -07:00
Michael Vines 1c1d7d1e0e Log get_last_id errors 2018-06-28 19:13:36 -07:00
Stephen Akridge d28536d76e Fix spelling of signature 2018-06-28 16:31:33 -07:00
Greg Fitzgerald 63cfbb9497 Only register last entry after a split 2018-06-28 16:54:06 -06:00
Greg Fitzgerald 231040b93e Add tests 2018-06-28 12:28:43 -07:00
Greg Fitzgerald 7c74afc35a Relax recycler
Instead of asserting ref count is 1 before recycling, allow users
to recycle items early. If it turns out that was too early, and
allocate() wants to return it, then boot it and take a memory
allocation performance hit instead.
2018-06-28 12:28:43 -07:00
Greg Fitzgerald 7878a011eb Use a Mint to configure the wallet
* Send transactions from the mint's private key
* By default, send full balance to oneself
* By default, request the mint's number of tokens for airdrops
2018-06-27 17:35:50 -06:00
Greg Fitzgerald c05416e27d Turn simple-client-demo into a simpler wallet 2018-06-27 17:35:50 -06:00
Rob Walker 2f42658cd4 ... 2018-06-27 14:51:18 -07:00
Rob Walker d95e8030fc ... 2018-06-27 14:51:18 -07:00
Greg Fitzgerald 4aedd3f1b6 Cleanup type aliases and imports 2018-06-27 15:06:18 -06:00
Greg Fitzgerald bb89d6f54d Get back to 500k transactions 2018-06-27 13:50:27 -07:00
Greg Fitzgerald ed10841e3d No longer spin up accounts for client-demo
Now that the Bank is single-threaded again, we can spin up new
accounts on the fly without concern of thread contention. Likewise,
we can send all transactions from a single account, which was also
problematic in the multi-threaded bank. Sending from one account will
also make client-demo straightforward to port to solana-drone.
2018-06-27 13:50:27 -07:00
Tyera Eulberg a167d0d331 CI cleanup 2018-06-27 13:01:29 -06:00
Tyera Eulberg eed37820b5 Comments 2018-06-27 13:01:29 -06:00
Tyera Eulberg ac40434cdf Initial simple client demo commit 2018-06-27 13:01:29 -06:00
Greg Fitzgerald 56b09bf0ac cargo fmt 2018-06-26 16:51:07 -06:00
Stephen Akridge f4c4b9df9c Only free in replicate if we did not hold the reference in window stage
And then free when we are consuming blobs
2018-06-26 16:51:07 -06:00
Greg Fitzgerald 6e568c69a7 Preemptive strike
Should that blob have been passed to a recycler, it would have
had too high a reference count.
2018-06-26 16:51:07 -06:00
Greg Fitzgerald 14d624ee40 Fix benchmarks too
This change will make these benchmarks way slower, because its now
cloning the transaction vector each iteration instead of the ref
counts. We need to rethink these.
2018-06-26 16:51:07 -06:00
Greg Fitzgerald d5c0557891 Fix test_replicate too 2018-06-26 16:51:07 -06:00
Greg Fitzgerald 1691060a22 Assert recycler is given last reference to data
This patch likely fixes the sporadic failures in the following tests:

```
test server::tests::validator_exit ... FAILED
test streamer::test::streamer_send_test ... FAILED
test thin_client::tests::test_bad_sig ... FAILED
test drone::tests::test_send_airdrop ... FAILED
test thin_client::tests::test_thin_client ... FAILED
```
2018-06-26 16:51:07 -06:00
Greg Fitzgerald 05edfad13a Fix compiler warnings 2018-06-26 15:03:15 -07:00