fe5fed1182
Refactor bank_forks_utils::load() and some snapshot logic ( #17492 ) ( #17979 )
...
Refactor a few functions that are on the load-from-snapshot path, to facilitate
adding in incremental snapshots more easily.
Additionally, add some tests and doc comments.
(cherry picked from commit 1953543274
)
Co-authored-by: Brooks Prumo <brooks@solana.com >
2021-06-15 22:03:49 +00:00
0c90307677
v1.7: Stake refactor (Manual backport of #17906 ) ( #17978 )
...
* Refactor stake program into solana_program (#17906 )
* Move stake state / instructions into solana_program
* Update account-decoder
* Update cli and runtime
* Update all other parts
* Commit Cargo.lock changes in programs/bpf
* Update cli stake instruction import
* Allow integer arithmetic
* Update ABI digest
* Bump rust mem instruction count
* Remove useless structs
* Move stake::id() -> stake::program::id()
* Re-export from solana_sdk and mark deprecated
* Address feedback
* Run cargo fmt
* Run cargo fmt post cherry-pick
2021-06-15 23:43:22 +02:00
cdd2a51f1f
remove unused parameters from CalculateHashIntermediate ( #17949 ) ( #17976 )
...
(cherry picked from commit 4d8ffdcc11
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-15 19:15:07 +00:00
0dbe3434f0
refactor so hash verify can be done by more callers ( #17941 ) ( #17947 )
...
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-15 16:49:32 +00:00
ef205593c5
removes port-based forwarding logic from turbine retransmit ( #17716 ) ( #17973 )
...
Turbine retransmit logic is based on which socket it received the packet
from (i.e `packet.meta.forward`):
https://github.com/solana-labs/solana/blob/708bbcb00/core/src/retransmit_stage.rs#L467-L470
This can leave the cluster vulnerable to spoofing and selective
propagation of packets; see
https://github.com/solana-labs/solana/issues/6672
https://github.com/solana-labs/solana/pull/7774
This commit identifies if the node is on the "critical path" based on
its index in the shuffled cluster. If so, it forwards the packet to both
neighbors and children; otherwise, the packet is only forwarded to the
children.
The metrics added in
https://github.com/solana-labs/solana/pull/17351
shows that the number of times the index does not match the port is very
rare, and therefore this change should be safe.
(cherry picked from commit 161838655c
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-15 15:16:20 +00:00
8b5ba771ad
name arguments to help with confusion ( #17942 ) ( #17948 )
...
(cherry picked from commit 7fde9b6ff0
)
# Conflicts:
# runtime/src/accounts_db.rs
Co-authored-by: Jeff Washington (jwash) <wash678@gmail.com >
2021-06-15 14:46:07 +00:00
991f99b239
Bump spl-token to v3.1.1 (backport #17951 ) ( #17958 )
...
* Bump spl-token to v3.1.1 (#17951 )
(cherry picked from commit b7de369992
)
# Conflicts:
# Cargo.lock
# account-decoder/Cargo.toml
# accounts-cluster-bench/Cargo.toml
# programs/bpf/Cargo.lock
# rpc/Cargo.toml
# tokens/Cargo.toml
* Fix conflicts
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
Co-authored-by: Tyera Eulberg <tyera@solana.com >
2021-06-15 08:29:54 +00:00
d6f17517cb
calculate_capitalization uses hash calculation ( #17443 ) ( #17932 )
...
* calculate_capitalization uses hash calculation
* feedback
* remove debugging code, clean up slot math
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-15 05:03:06 +00:00
15b2f280e3
use trait to simplify and consolidate cumulative code ( #17852 ) ( #17931 )
...
(cherry picked from commit 2dc6969858
)
# Conflicts:
# runtime/src/accounts_hash.rs
Co-authored-by: Jeff Washington (jwash) <wash678@gmail.com >
2021-06-15 04:29:13 +00:00
60b43a1ddf
Pass iterator for SortedStorages::new_with_slots ( #17811 ) ( #17847 )
...
Co-authored-by: Carl Lin <carl@solana.com >
(cherry picked from commit 2a9b127029
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-15 00:01:53 +00:00
d6b83e3b0a
add metrics to handle_snapshot_requests ( #17937 ) ( #17945 )
...
(cherry picked from commit e6bbd4b3f0
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-14 22:56:14 +00:00
0446f89d22
binary search in slices for hashing ( #17755 ) ( #17804 )
...
(cherry picked from commit 817d48be21
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-14 17:32:05 -05:00
54bc3e606e
Fix typo in docs ( #17920 ) ( #17938 )
...
(cherry picked from commit 3657469826
)
Co-authored-by: Sarat Limawongpranee <innneang@users.noreply.github.com >
2021-06-14 12:04:02 -06:00
fed90cfbe8
Fix accounts index panic in purge_exact ( #17757 ) ( #17935 )
...
(cherry picked from commit c2191d885d
)
Co-authored-by: sakridge <sakridge@gmail.com >
2021-06-14 17:41:59 +00:00
e2e41a29eb
Don't use pinned memory when unnecessary ( #17832 ) ( #17934 )
...
Reports of excessive GPU memory usage and errors
from cudaHostRegister. There are some cases where pinning is
not required.
(cherry picked from commit eeee75c5be
)
Co-authored-by: sakridge <sakridge@gmail.com >
2021-06-14 16:30:51 +00:00
3b813db42f
minor fixes to punctuation and typos ( #17881 ) ( #17923 )
...
* fix minor typos and punctuation
* fix minor typos and punctuation
* rewording for clarity and typo corrections
* rewording for clarity and typo corrections
* rewording for clarity and typo corrections
Co-authored-by: Gregg Dourgarian <greggd@aidacreative.com >
(cherry picked from commit 54155f875a
)
Co-authored-by: Haik Dulgarian <greggd@tempworks.com >
2021-06-14 06:56:39 +00:00
16b1a4d003
short cuts expiration check if origin's contact-info is still valid ( #17918 ) ( #17921 )
...
Crds::find_old_labels can skip checking values timestamps if the
origin's contact info hasn't expired yet:
https://github.com/solana-labs/solana/blob/985280ec0/gossip/src/crds.rs#L394-L408
(cherry picked from commit cca46308bc
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-13 21:12:24 +00:00
b51ea3ca0c
excludes epoch-slots from nodes with unknown or different shred version ( #17899 ) ( #17916 )
...
Inspecting TDS gossip table shows that crds values of nodes with
different shred-versions are creeping in. Their epoch-slots are
accumulated in ClusterSlots causing bogus slots very far from current
root which are not purged and so cause ClusterSlots keep consuming more
memory:
https://github.com/solana-labs/solana/issues/17789
https://github.com/solana-labs/solana/issues/14366#issuecomment-769896036
https://github.com/solana-labs/solana/issues/14366#issuecomment-832754654
This commit updates ClusterInfo::get_epoch_slots, and discards entries
from nodes with unknown or different shred-version.
Follow up commits will patch gossip not to waste bandwidth and memory
over crds values of nodes with different shred-version.
(cherry picked from commit 985280ec0b
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-13 15:56:05 +00:00
dc76675644
Don't require non-existent param for keygen new ( #17896 ) ( #17897 )
...
(cherry picked from commit 22c356d24c
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-06-11 22:08:46 +00:00
274a238a00
Port unconfirmed duplicate tracking logic from ProgressMap to ForkChoice ( #17779 ) ( #17889 )
...
(cherry picked from commit c8535be0e1
)
Co-authored-by: carllin <carl@solana.com >
2021-06-11 11:41:59 +00:00
10507f0ade
Account for duplicate before a bank is frozen or replayed ( #17866 ) ( #17883 )
...
(cherry picked from commit afafa624a3
)
Co-authored-by: carllin <carl@solana.com >
2021-06-11 07:06:42 +00:00
af2a6106da
Check for undefined symbols in .so and warn about run-time errors ( #17850 ) ( #17880 )
...
(cherry picked from commit c684e2bdc0
)
Co-authored-by: Dmitri Makarov <dmakarov@users.noreply.github.com >
2021-06-11 00:03:17 +00:00
120a7e433f
Warn about InstructionError meta ( #17864 ) ( #17878 )
...
(cherry picked from commit fa6bdd2d12
)
Co-authored-by: Jack May <jack@solana.com >
2021-06-10 23:49:03 +00:00
98e34f07df
programs/config: Disallow duplicate signers
2021-06-10 06:54:18 +00:00
738df79394
Add local cluster tests that broadcast duplicate slots ( #13995 ) ( #17863 )
...
* Add duplicate node local cluster test
* fix clippy
* remove dupe test
(cherry picked from commit 050bb5446d
)
Co-authored-by: Justin Starry <justin@solana.com >
2021-06-10 03:17:44 +00:00
98e9b6e70b
refactor: create type ( #17818 ) ( #17848 )
...
(cherry picked from commit 576e3d95f7
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-09 08:38:04 +00:00
c9318f8dc2
Wrap long lines ( #17842 )
...
(cherry picked from commit e5e7390d44
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-06-09 08:10:34 +00:00
78f3606e30
test: simple CalculateHashIntermediate refactoring ( #17813 ) ( #17846 )
...
(cherry picked from commit 01ef2a5c4a
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-08 21:47:40 +00:00
97f4d098e1
Add more info about how to safely change the identity of a staked validator ( #17843 )
...
(cherry picked from commit 193813d49a
)
Co-authored-by: Michael Vines <mvines@gmail.com >
2021-06-08 19:25:41 +00:00
144a13b096
Update a dangling devnet endpoint doc ( #17836 ) ( #17839 )
...
(cherry picked from commit 2dfb5b7579
)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
2021-06-08 16:20:43 +00:00
af0869c66c
add min to roots_tracker ( #17806 ) ( #17835 )
...
(cherry picked from commit 58fe1d0764
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-08 16:14:59 +00:00
48e565038a
Bump version to v1.7.2 ( #17831 )
2021-06-08 10:29:39 +00:00
cd6e1d921c
update dependence version for gag to latest support windows ( #17801 ) ( #17825 )
...
* update dependence version for gag to leatest support windows
* fix compile on windows
* add Cargo.lock
(cherry picked from commit e0ab5ee4f8
)
Co-authored-by: Govlzkoy <gotope@users.noreply.github.com >
v1.7.1
2021-06-08 07:48:39 +00:00
fb767f4612
Remove budget program (backport #17816 ) ( #17822 )
...
* Remove budget program (#17816 )
(cherry picked from commit a66566e75b
)
# Conflicts:
# Cargo.lock
# genesis/Cargo.toml
# ledger/Cargo.toml
# perf/Cargo.toml
# programs/budget/Cargo.toml
* Fix conflicts
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
Co-authored-by: Tyera Eulberg <tyera@solana.com >
2021-06-08 03:07:26 +00:00
9f35db28e5
Switch EpochSlots to be frozen slots, not completed slots ( #17168 ) ( #17776 )
...
(cherry picked from commit 96ba2edfeb
)
Co-authored-by: carllin <carl@solana.com >
2021-06-07 22:51:30 +00:00
ab19543dff
break out hash time in metric ( #17721 ) ( #17753 )
...
(cherry picked from commit 00ee84af37
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-07 22:19:52 +00:00
3d5f333a3b
parallelizes gossip packets receiver with processing of requests ( #17647 ) ( #17807 )
...
Gossip packet processing is composed of two stages:
* The first is consuming packets from the socket, deserializing,
sanitizing and verifying them:
https://github.com/solana-labs/solana/blob/7f0349b29/gossip/src/cluster_info.rs#L2510-L2521
* The second is actually processing the requests/messages:
https://github.com/solana-labs/solana/blob/7f0349b29/gossip/src/cluster_info.rs#L2585-L2605
The former does not acquire any locks and so can be parallelized with
the later, allowing better pipelineing properties and smaller latency in
responding to gossip requests or propagating messages.
(cherry picked from commit cab30e2356
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-07 20:30:31 +00:00
d06ca605cf
Bump jsonrpc crates (backport #17797 ) ( #17805 )
...
* Bump jsonrpc crates (#17797 )
* Bump jsonrpc crates
* Update error text
* gitignore for rpc
(cherry picked from commit 2e998ed11d
)
# Conflicts:
# Cargo.lock
# validator/Cargo.toml
* Fix conflicts
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
Co-authored-by: Tyera Eulberg <tyera@solana.com >
2021-06-07 20:15:23 +00:00
334e11e4b9
rework hash calculation to not keep slot and write version ( #17685 ) ( #17794 )
...
* rework hash calculation to not keep slot and write version
* refactor functions and add tests
* always use multiple slot code path
(cherry picked from commit b5bb91b50f
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-07 15:31:18 +00:00
fd68b4e7a8
Support out of band dumping of unrooted slots in AccountsDb ( #17269 ) ( #17777 )
...
* Accounts dumping logic
* Add test for interaction between cache flush and remove_unrooted_slot()
* Update comments
* Rename
* renaming
* Add more comments
* Renaming
* Fixup test and bad check
(cherry picked from commit bbcdf073ba
)
Co-authored-by: carllin <carl@solana.com >
2021-06-07 09:37:55 +00:00
e5ea16fad8
system-program: Remove zero lamport check on transfers ( #17726 ) ( #17764 )
...
* system-program: Move lamports == 0 check on transfers
* Address feedback
* Update stake split to explicitly allocate + assign
* Update stake tests referring to split instruction
* Revert whitespace
* Update split instruction index in test
* Remove unnecessary `assign_with_seed` from `split_with_seed`
* Fix stake instruction parser
* Update test to allow splitting into account with lamports
(cherry picked from commit 8f5e773caf
)
Co-authored-by: Jon Cinque <jon.cinque@gmail.com >
2021-06-06 18:27:29 +00:00
6d5a4b5cce
Document ProgramTest::new and fix ProgramTest::add_program ( #17754 ) ( #17768 )
...
* document ProgramTest::new
* simplify ProgramTest::new doc-string
* make ProgramTest::add_program noisier
`add_program` (and `new`, implicitly) now prints a warning when the user
supplies a bogus program name to a ProgramTest and invokes `test-bpf`.
Additionally, it is now impossible to ask for a regular `test` and for
the generated ProgramTest to load BPF code instead of native code.
Previously, this was caused by a precedence issue: BPF code would always
be preferred over native if the program name was valid, regardless of
user choice.
(cherry picked from commit 2aaf55795f
)
Co-authored-by: xuoe <alex@psi.io >
2021-06-06 07:03:13 +00:00
ffb6b5a23b
add data point for cap mismatch ( #17746 ) ( #17751 )
...
(cherry picked from commit f6fb8906c7
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-04 20:39:46 +00:00
e247625025
Create solana-poh and move remaining rpc modules to solana-rpc (backport #17698 ) ( #17745 )
...
* Create solana-poh and move remaining rpc modules to solana-rpc (#17698 )
* Create solana-poh crate
* Move BigTableUploadService to solana-ledger
* Add solana-rpc to workspace
* Move dependencies to solana-rpc
* Move remaining rpc modules to solana-rpc
* Single use statement solana-poh
* Single use statement solana-rpc
(cherry picked from commit 544b3c0d17
)
# Conflicts:
# Cargo.lock
# banking-bench/Cargo.toml
# core/Cargo.toml
# core/benches/banking_stage.rs
# local-cluster/Cargo.toml
# rpc/Cargo.toml
# stake-monitor/Cargo.toml
# validator/Cargo.toml
* Fix conflicts & versions
Co-authored-by: Tyera Eulberg <teulberg@gmail.com >
Co-authored-by: Tyera Eulberg <tyera@solana.com >
2021-06-04 18:19:08 +00:00
67c07aa5d3
increase bin count for hash scan ( #17562 ) ( #17747 )
...
(cherry picked from commit 5197454fea
)
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-04 18:12:48 +00:00
0de1ce0c2c
adds fallback logic if retransmit multicast fails ( #17714 ) ( #17742 )
...
In retransmit-stage, based on the packet.meta.seed and resulting
children/neighbors, each packet is sent to a different set of peers:
https://github.com/solana-labs/solana/blob/708bbcb00/core/src/retransmit_stage.rs#L421-L457
However, current code errors out as soon as a multicast call fails,
which will skip all the remaining packets:
https://github.com/solana-labs/solana/blob/708bbcb00/core/src/retransmit_stage.rs#L467-L470
This can exacerbate packets loss in turbine.
This commit:
* keeps iterating over retransmit packets for loop even if some
intermediate sends fail.
* adds a fallback to UdpSocket::send_to if multicast fails.
Recent discord chat:
https://discord.com/channels/428295358100013066/689412830075551748/849530845052403733
(cherry picked from commit be957f25c9
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-04 16:20:44 +00:00
59f4fba05c
simplify test construction ( #17686 ) ( #17693 )
...
(cherry picked from commit 83ceedc091
)
# Conflicts:
# runtime/src/accounts_db.rs
Co-authored-by: Jeff Washington (jwash) <75863576+jeffwashington@users.noreply.github.com >
2021-06-04 15:57:11 +00:00
c0c764377c
excludes caller's crds values from pull responses ( #17542 ) ( #17744 )
...
If the crds entry belongs to the caller itself, then the caller will
always have the more recent version of it, regardless of it being
filtered out by the bloom filter or not.
The exception is node-instance types which are meant to detect duplicate
running instances, and those are exempted.
(cherry picked from commit 7cf6e66ddd
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-04 15:54:00 +00:00
c9bc059637
writes epoch-slots to crds table synchronously ( #17719 ) ( #17743 )
...
epoch-slots may be overwritten before they are written to crds table:
https://github.com/solana-labs/solana/issues/17711
This commit writes new epoch-slots to crds table synchronously with
push_epoch_slots. The functions is still not thread-safe as commented in
the code, however currently only one threads is invoking this code.
(cherry picked from commit 60b0a13444
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com >
2021-06-04 15:34:39 +00:00
78147d48e4
use slots returned from get_snapshot_storages to sort ( #17638 ) ( #17695 )
...
* use slots returned from get_snapshot_storages to sort
* add tests
(cherry picked from commit 9388aaca15
)
# Conflicts:
# runtime/src/accounts_db.rs
# runtime/src/sorted_storages.rs
Co-authored-by: Jeff Washington (jwash) <wash678@gmail.com >
2021-06-04 10:14:37 -05:00