2195d980a2
patches local pending push messages processing ( #16833 ) ( #17007 )
...
process_push_messages writes local pending push messages to the crds
table, but it discards the return value:
https://github.com/solana-labs/solana/blob/cf779c63c/core/src/crds_gossip.rs#L96-L102
In order to exclude outdated values from the next pull-request, we need
to record the hash of values purged/overridden by the local push
messages, otherwise pull-responses will return outdated values back to
the node:
https://github.com/solana-labs/solana/blob/c1829dd00/core/src/crds_gossip_pull.rs#L447-L452
Additionally, gossip packets arrive and are processed out of order. So,
local pending push messages should be flushed *before* generating bloom
filters for pull-requests, preventing pull-responses returning the same
values back to the node itself. This requires flipping order of
generating pull and push messages:
https://github.com/solana-labs/solana/blob/cf779c63c/core/src/cluster_info.rs#L1757-L1762
Both above bugs cause redundant traffic and bandwidth waste in gossip
pull-responses.
(cherry picked from commit a698e34744
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-05-03 17:27:38 +00:00
3e43b042eb
reclaims unref accounts from index ( #16838 ) ( #17005 )
...
(cherry picked from commit 6381ee38eb
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-05-03 17:10:09 +00:00
851742e5d9
Update sysvars.md ( #16998 ) ( #16999 )
...
a typo
(cherry picked from commit 43ccaf14b0
)
Co-authored-by: Max Block <40041609+max-block@users.noreply.github.com >
2021-05-03 09:58:20 +00:00
c6c7feb0c2
Retry latest vote if expired ( #16735 ) ( #16927 )
...
(cherry picked from commit b5d30846d6
)
Co-authored-by: carllin <carl@solana.com >
2021-05-03 05:13:29 +00:00
1fde69ef48
Docs cleanup ( #16997 )
2021-05-03 02:59:03 +00:00
894bedcae7
Remove errant backslash ( #16994 ) ( #16995 )
...
(cherry picked from commit d7166c5778
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-05-02 20:20:30 +00:00
47f15eaa03
Corrected typo in calling between programs document (backport #16991 ) ( #16993 )
...
* Corrected typo in calling between programs document (#16991 )
* Corrected typo in calling between programs document
* corrected another typo
Co-authored-by: Srinivas Valekar <srinivasvalekar@Srinivass-MacBook-Pro.local >
(cherry picked from commit c003f8e93c
)
# Conflicts:
# docs/src/developing/programming-model/calling-between-programs.md
* Fix conflict
Co-authored-by: srinivas valekar <srinivas.valekar@gmail.com >
Co-authored-by: Tyera Eulberg <tyera@solana.com >
2021-05-02 18:40:41 +00:00
b0c0739db9
Allow SetUpgradeAuthority instruction in CPI calls (backport #16676 ) ( #16954 )
...
* Allow SetUpgradeAuthority instruction in CPI calls (#16676 )
* feat: allow SetAuthority in CLI calls
* chore: clippy match_like_matches_macro
* chore: clippy match_like_matches_macro
* chore: rename CLI to CPI
* chore: move check for cpi authorised instruction to syscalls
* chore: add set_upgrade_authority cpi test
* chore: assert upgrade authority was changed
* feat: gate set_upgrade_authority via cpi with a feature
* chore: move feature to the end of the list
* chore: remove white spaces
* chore: remove white spaces
* chore: update comment to rerun build
(cherry picked from commit 1a658c7f31
)
# Conflicts:
# programs/bpf/Cargo.toml
# programs/bpf_loader/src/syscalls.rs
# sdk/src/feature_set.rs
* chore: fixe merge conflicts
Co-authored-by: Sebastian Bor <Sebastian_Bor@hotmail.com >
2021-04-30 20:47:38 +00:00
c3dc23e84a
docs: fix copy-pasta breaking typo in getRecentBlockhash
example ( #16962 )
...
(cherry picked from commit 3d98321b38
)
Co-authored-by: Trent Nelson <trent@solana.com >
2021-04-30 04:24:40 +00:00
cc7fc447a4
Distinguish max replayed and max observed vote ( #16936 ) ( #16956 )
...
(cherry picked from commit 5981399612
)
Co-authored-by: carllin <carl@solana.com >
2021-04-30 00:48:56 +00:00
a401b2b4cf
Refactor SignerSource to expose DerivationPath to other kinds of signers (backport #16933 ) ( #16941 )
...
* Refactor SignerSource to expose DerivationPath to other kinds of signers (#16933 )
* One use statement
* Add stdin uri scheme
* Convert parse_signer_source to return Result
* A-Z deps
* Convert Usb data to Locator
* Pull DerivationPath out of Locator
* Wrap SignerSource to share derivation_path
* Review comments
* Check Filepath existence, readability in parse_signer_source
(cherry picked from commit d6f30b7537
)
# Conflicts:
# sdk/Cargo.toml
* Fix conflicts
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
Co-authored-by: Tyera Eulberg <tyera@solana.com >
2021-04-29 09:11:56 +00:00
d8c66c8981
Add skip rate to solana validators
( #16939 )
...
(cherry picked from commit d640ac143b
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-04-29 07:14:26 +00:00
49a415414f
Add getBlockProduction RPC method
2021-04-28 21:38:53 -07:00
6c540d2ada
Fixup rpc-endpoints ( #16924 ) ( #16930 )
...
(cherry picked from commit 783bd79e9d
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-28 14:44:16 -06:00
da62ebac1a
Update rpc-endpoints.md ( #16926 )
2021-04-29 00:12:42 +05:30
25aee12502
retains peer's contact-info when making pull requests ( #16715 ) ( #16907 )
...
ClusterInfo::new_pull_requests has to lookup contact-infos:
https://github.com/solana-labs/solana/blob/a1ef2bd74/core/src/cluster_info.rs#L1663-L1673
when it was already available when making pull requests:
https://github.com/solana-labs/solana/blob/a1ef2bd74/core/src/crds_gossip_pull.rs#L232
(cherry picked from commit 25054bfd35
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-28 14:54:54 +00:00
d8e8528797
removes delayed crds inserts when upserting gossip table ( #16806 ) ( #16905 )
...
It is crucial that VersionedCrdsValue::insert_timestamp does not go
backward in time:
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/crds.rs#L67-L79
Otherwise methods such as get_votes and get_epoch_slots_since will
break, which will break their downstream flow, including vote-listener
and optimistic confirmation:
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/cluster_info.rs#L1197-L1215
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/cluster_info.rs#L1274-L1298
For that, Crds::new_versioned is intended to be called "atomically" with
Crds::insert_verioned (as the comment already says so):
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/crds.rs#L126-L129
However, currently this is violated in the code. For example,
filter_pull_responses creates VersionedCrdsValues (with the current
timestamp), then acquires an exclusive lock on gossip, then
process_pull_responses writes those values to the crds table:
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/cluster_info.rs#L2375-L2392
Depending on the workload and lock contention, the insert_timestamps may
well be in the past when these values finally are inserted into gossip.
To avoid such scenarios, this commit:
* removes Crds::new_versioned and Crd::insert_versioned.
* makes VersionedCrdsValue constructor private, only invoked in
Crds::insert, so that insert_timestamp is populated right before
insert.
This will improve insert_timestamp monotonicity as long as Crds::insert
is not called with a stalled timestamp. Following commits may further
improve this by calling timestamp() inside Crds::insert, and/or
switching to std::time::Instant which guarantees monotonicity.
(cherry picked from commit 1ac2a8cfa5
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-28 13:36:21 +00:00
ed8c796877
moves cluster-info metrics to a separate module ( #16883 ) ( #16898 )
...
(cherry picked from commit b17d5eeaee
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-28 04:18:46 +00:00
ec750cf3eb
Add allowed-ip list to faucet ( #16891 ) ( #16897 )
...
(cherry picked from commit 36574c30ef
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-28 03:32:37 +00:00
4a35053fba
uses current timestamp when flushing local pending push queue ( #16808 ) ( #16896 )
...
local_message_pending_push_queue is recording timestamps at the time the
value is created, and uses that when the pending values are flushed:
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/cluster_info.rs#L321
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/crds_gossip.rs#L96-L102
which is then used as the insert_timestamp when inserting values in the
crds table:
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/crds_gossip_push.rs#L183
The flushing may happen 100ms after the values are created (or even
later if there is a lock contention). This will cause non-monotone
insert_timestamps in the crds table (where time goes backward),
hindering the usability of insert_timestamps for other computations.
For example both ClusterInfo::get_votes and get_epoch_slots_since rely
on monotone insert_timestamps when values are inserted into the table:
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/cluster_info.rs#L1197-L1215
https://github.com/solana-labs/solana/blob/ec37a843a/core/src/cluster_info.rs#L1274-L1298
This commit removes timestamps from local_message_pending_push_queue and
uses current timestamp when flushing the queue.
(cherry picked from commit b468ead1b1
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-28 01:59:29 +00:00
9797178ad1
Refactor remote-wallet path parsing (backport #16798 ) ( #16894 )
...
* SDK: More conversions for `Pubkey`
(cherry picked from commit 9b7120bf73
)
* SDK: More conversion for `DerivationPath`
(cherry picked from commit 722de942ca
)
* remote-wallet: Add helpers for locating remote wallets
(cherry picked from commit 64fcb792c2
)
* remote-wallet: Plumb `Locator` into `RemoteWalletInfo`
(cherry picked from commit 3d12be29ec
)
* remote-wallet: `derivation-path` crate doesn't like empty trailing child indexes
(cherry picked from commit 4ce4f04c58
)
* remote-wallet: Move `Locator` to its own module
(cherry picked from commit cac666d035
)
Co-authored-by: Trent Nelson <trent@solana.com >
2021-04-28 01:20:41 +00:00
dbc58455df
Retain alloc'd and updated data in cpi (backport #16850 ) ( #16890 )
...
* Retain alloc'd and updated data in cpi (#16850 )
(cherry picked from commit 9b3a59f030
)
# Conflicts:
# programs/bpf_loader/src/syscalls.rs
# sdk/src/feature_set.rs
* resolve conflicts
Co-authored-by: Jack May <jack@solana.com >
2021-04-27 23:01:43 +00:00
4a3f851e49
Enable multiple payers in accounts-cluster-bench ( #16889 ) ( #16892 )
...
* Enable multiple payer keypairs
* Suppress tx creation if batch size == 0
* Suppress logs when waiting to create txs
* Double airdrop threshold to prevent stall when closing accounts
(cherry picked from commit 283f587afe
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-27 22:43:06 +00:00
5a3bf5c90e
limits to data_header.size when combining shreds' payloads (backport #16708 ) ( #16870 )
...
* limits to data_header.size when combining shreds' payloads (#16708 )
Shredder::deshred is ignoring data_header.size when combining shreds' payloads:
https://github.com/solana-labs/solana/blob/37b8587d4/ledger/src/shred.rs#L940-L961
Also adding more sanity checks on the alignment of data shreds indices.
(cherry picked from commit 0f3ac51cf1
)
# Conflicts:
# ledger/src/shred.rs
* removes backport merge conflicts
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-27 14:44:58 +00:00
de6ec11efc
records hash of values purged by expired pull-responses ( #16800 ) ( #16871 )
...
process_pull_responses should record hash of values purged by expired
responses (as well as unexpired ones):
https://github.com/solana-labs/solana/blob/c1829dd00/core/src/crds_gossip_pull.rs#L385-L387
otherwise, these values are not excluded from following pull-requests
(from likely different nodes):
https://github.com/solana-labs/solana/blob/c1829dd00/core/src/crds_gossip_pull.rs#L447-L452
and would waste bandwidth should they be included in subsequent
pull-responses.
(cherry picked from commit 3b8d6b59fb
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-27 13:26:11 +00:00
7aec87c086
Add getVoteAccounts RPC method parameter to restrict results to a single vote account ( #16859 )
...
(cherry picked from commit 59fc33635a
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-04-27 05:43:44 +00:00
eabc21c23a
block-production subcommand now uses SlotHistory sysvar when possible ( #16858 )
...
(cherry picked from commit b66a68975b
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-04-27 05:32:59 +00:00
713f346211
Fix limit-ledger-size syntax ( #16856 ) ( #16857 )
...
(cherry picked from commit 3af8cb0150
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-27 04:41:35 +00:00
a81bc0ecf8
solana leader-schedule -um
works again
...
(cherry picked from commit c2becbc0a8
)
2021-04-26 17:32:05 -07:00
a3f1580b8b
Update bpf loader info on native-programs docs ( #16840 ) ( #16845 )
...
* Update bpf loader info on native-programs docs
* Link to program deployment docs
(cherry picked from commit 5eb5d9b2f5
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-26 20:41:36 +00:00
4f20798654
removes old runtime feature gates in gossip and turbine ( #16633 ) ( #16828 )
...
(cherry picked from commit 9706512115
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-26 18:40:42 +00:00
0ecd1755a6
docs: getInflationReward rpc output fields should be in lower camel case ( #16802 ) ( #16805 )
...
(cherry picked from commit ec37a843a4
)
Co-authored-by: Josh <josh.hundley@gmail.com >
2021-04-24 19:37:55 +00:00
57dd8a555a
Disable flaky test_poh_service ( #16772 ) ( #16797 )
...
(cherry picked from commit 63436cc2bf
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-04-24 04:38:27 +00:00
f64cd4a75a
Show last vote/root behind distance in solana validators
output
...
(cherry picked from commit c1829dd00b
)
2021-04-23 20:12:15 -07:00
2ce6c86c2a
runtime: checked math for Bank::withdraw ( #16788 )
...
(cherry picked from commit be29568318
)
# Conflicts:
# runtime/src/bank.rs
Co-authored-by: Trent Nelson <trent@solana.com >
2021-04-24 00:25:41 +00:00
ff9573714b
get_packed_len() now correctly handles u32/i32 types
...
(cherry picked from commit 1500011fc6
)
2021-04-23 13:52:10 -07:00
826111cf79
Restore text wrapping ( #16776 ) ( #16780 )
...
(cherry picked from commit da58f20a99
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-23 17:34:47 +00:00
f31f1d0f52
fix reference to Rust Restrictions section ( #16763 ) ( #16775 )
...
(cherry picked from commit e9a616cfc2
)
Co-authored-by: strykerin <dacosta.pereirafabio@gmail.com >
2021-04-23 17:02:27 +00:00
e220f7067b
docs: fix formatting issue ( #16761 ) ( #16774 )
...
(cherry picked from commit c217ee3a00
)
Co-authored-by: strykerin <dacosta.pereirafabio@gmail.com >
2021-04-23 17:02:18 +00:00
d9726e61bc
retains crds values if the origin is still active ( #16576 ) ( #16771 )
...
Local timestamps are updated for records associated with a pubkey if the
origin is still active:
https://github.com/solana-labs/solana/blob/c8ed14c64/core/src/crds.rs#L301-L311
However this is done inconsistently on some gossip paths (pull requests
and pull responses) but not all (e.g. push messages). Additionally
update_record_timestamp is inefficient since there can be ~800 values
associated with each pubkey.
This commit updates records timestamps only on contact-infos; and,
instead utilizes origin's timestamp when purging old values.
(cherry picked from commit 2c82f2154d
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-23 16:42:54 +00:00
786fa4f22e
removes first_coding_index from erasure recovery code ( #16646 ) ( #16770 )
...
first_coding_index is the same as the set_index and is so redundant:
https://github.com/solana-labs/solana/blob/37b8587d4/ledger/src/blockstore_meta.rs#L49-L60
(cherry picked from commit 03194145c0
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-04-23 13:21:27 +00:00
5b74678e37
Ingest votes from gossip into fork choice ( #16560 ) ( #16724 )
...
(cherry picked from commit 4c94f8933f
)
Co-authored-by: carllin <carl@solana.com >
2021-04-23 07:20:10 +00:00
d203bd1998
Add TPU client for sending txs to the current leader tpu port ( #16736 ) ( #16762 )
...
* Add TPU client for sending txs to the current leader tpu port
* Update tpu_client.rs
(cherry picked from commit 75b8434b76
)
Co-authored-by: Justin Starry <justin@solana.com >
2021-04-23 02:50:30 +00:00
5f5fa38d85
program-test: Add large bootstrap stake for realistic warmups (backport #16739 ) ( #16741 )
...
* program-test: Add large bootstrap stake for realistic warmups (#16739 )
(cherry picked from commit f4214637a9
)
# Conflicts:
# program-test/Cargo.toml
* Fix merge conflict
Co-authored-by: Jon Cinque <jon.cinque@gmail.com >
2021-04-22 23:07:52 +00:00
fadf1efa41
Update getLeaderSchedule options ( #16749 ) ( #16752 )
...
(cherry picked from commit 636b5987af
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-04-22 21:02:46 +00:00
0269fffa5a
Remove unactivated ristretto syscall (backport #16727 ) ( #16745 )
...
* Remove unactivated ristretto syscall (#16727 )
(cherry picked from commit be4df39a4c
)
# Conflicts:
# programs/bpf/Cargo.lock
# programs/bpf/rust/ristretto/Cargo.toml
# programs/bpf/tests/programs.rs
# programs/bpf_loader/src/syscalls.rs
* resolve conflicts
Co-authored-by: Jack May <jack@solana.com >
2021-04-22 18:33:27 +00:00
50e441a9ed
Update secp instruction link in docs ( #16729 ) ( #16733 )
...
(cherry picked from commit b22c13dcd7
)
Co-authored-by: Jack May <jack@solana.com >
2021-04-22 04:53:38 +00:00
9413051053
Clean up "APR" language around inflation rewards ( #16732 )
...
(cherry picked from commit b8b54567b1
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-04-22 03:29:52 +00:00
13e176a633
getLeaderSchedule now supports filtered results based on validator identity ( #16731 )
...
(cherry picked from commit 6004c0abf5
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-04-22 02:29:01 +00:00
9268239c75
Make metrics tests independent of RUST_LOG env var ( #16710 ) ( #16730 )
...
Previously, running the tests with RUST_LOG=none would fail, because the
env logger would set its filter level to reject all log messages, and
incrementing a counter only happens if the global logger has at least
the specified log level. Having the tests behave differently when
RUST_LOG is set is surprising, they should be self-contained.
Nix' buildRustPackage sets RUST_LOG="" to make the build logs less
verbose. I have trouble packaging Solana for Nix because of this, and I
believe making the tests independent of the environment is a good
solution for this.
(cherry picked from commit 3f92abedd5
)
Co-authored-by: Ruud van Asseldonk <dev@veniogames.com >
2021-04-22 01:41:07 +00:00