Commit Graph

4336 Commits

Author SHA1 Message Date
Alexander Meißner 8e9b064ab3
Cleanup - `add_compute_budget_program` and `versioned_tx_message_enabled` (#31560)
* Moves compute_budget_program and address_lookup_table_program into genesis_builtins().

* Removes feature gate of versioned_tx_message_enabled.
2023-05-10 01:14:08 +02:00
Pankaj Garg 2210af60ee
Replace executor cache usage with LoadedPrograms cache (#31462)
* Replace executor cache usage with LoadedPrograms cache

* clippy fixes

* update cache with updated programs

* fixes

* more cleanup

* update tx batch cache with the tx results

* address review comments

* handle program closing backward compatibility

* handle unloaded programs during extraction
2023-05-09 15:44:38 -07:00
Brooks 3bb2e3b546
Purges incomplete snapshot dirs at startup (#31555) 2023-05-09 14:08:12 -04:00
Jeff Washington (jwash) c7867cfa5f
clean stats for ancient aren't based off last hash calc slot (#31546) 2023-05-09 10:08:08 -07:00
Pankaj Garg 3845423e17
Generalize matching criteria for tombstone at boot up (#31547)
Generalize matching criteria for tombstone at bootup
2023-05-09 08:26:42 -07:00
behzad nouri 8e638b785a
removes feature gate code sending votes to tpu-vote-port (#31529) 2023-05-08 18:12:35 +00:00
Jeff Washington (jwash) 8d98589c85
remove unused historical_roots (#31539) 2023-05-08 10:50:27 -07:00
Yueh-Hsuan Chiang 8120d31396
Implementation of the footer for tiered account storage (#31161)
#### Summary of Changes
This PR includes the implementation of the footer for the tiered account storage.

Tiered account storage proposal: #30551
The prototype implementation of the tiered account storage: #30626.
2023-05-07 13:18:10 -07:00
Brooks 775639c058
Revert "SnapshotPackagerService purges old bank snapshots (#31511)" (#31524)
This reverts commit a6c39ded8e.
2023-05-06 09:18:03 -04:00
steviez e62e4fbabd
Replace inc_new_counter_* with datapoint_* in Bank (#31495)
Counters can only report a single field; this adds an extra step to
debugging efforts to figure out the context for where/why the counted
event occurred. Use datapoints instead to subtmit some extra context.
2023-05-05 16:33:35 -05:00
Brooks a6c39ded8e
SnapshotPackagerService purges old bank snapshots (#31511) 2023-05-05 17:22:48 -04:00
Brooks 39a092c3dc
Adds snapshot_utils::purge_bank_snapshot() (#31500)
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
2023-05-05 14:01:08 -04:00
Brooks c7d922f229
Uses SNAPSHOT_VERSION_FILENAME constant (#31508) 2023-05-05 14:00:08 -04:00
Jeff Washington (jwash) d8664397b6
clarify AccountsIndexScanResult::OnlyKeepInMemoryIfDirty (#31513) 2023-05-05 10:39:32 -07:00
Brooks 1d861ad558
Removes solana_logger from snapshot_utils unit tests (#31510) 2023-05-05 12:52:36 -04:00
Brooks 10b8b32a31
Uses SNAPSHOT_ARCHIVE_DOWNLOAD_DIR constant (#31507) 2023-05-05 12:36:32 -04:00
Brooks ab6094a94f
Uses SNAPSHOT_ACCOUNTS_HARDLINKS constant (#31499) 2023-05-05 12:36:21 -04:00
Brooks 4196dbcbf4
Replaces snapshot_utils::remove_bank_snapshot() (#31498) 2023-05-05 07:43:28 -04:00
Brooks 0e0c91faac
Adds snapshot_utils::purge_bank_snapshot() (#31497) 2023-05-04 19:19:26 -04:00
HaoranYi 0f4293914c
remove unnecessary-struct-initialization (#31486)
* remove unnecessary-struct-initialization

* more  remove unnecessary-struct-initialization

---------

Co-authored-by: haoran <haoran.yi@solana.com>
2023-05-04 17:48:33 -05:00
Pankaj Garg 555520b640
Update SBF programs tests to use bank from the correct slot (#31491) 2023-05-04 13:25:02 -07:00
Alexander Meißner 67939c061e
Feature Gate Update - Requires the owner accounts of programs to be built-ins. (#31488)
Requires the owner accounts of programs to be built-ins.
(owned by the native_loader and have the executable flag set)
2023-05-04 21:03:09 +02:00
Andrew Fitzgerald 18cd4311af
remove counters in hotpath (#31398) 2023-05-04 09:36:28 -07:00
Pankaj Garg 96e170bd37
Do not evict unloaded programs (#31465)
* Do not evict unloaded programs

* cleanup
2023-05-04 07:49:54 -07:00
Brooks 22d4c6abf2
Adds test for SortedStorages::new_with_slots() (#31471) 2023-05-04 06:13:08 -04:00
Jeff Washington (jwash) ddd1f2fce0
remove unnecessary casts (#31461) 2023-05-03 08:54:25 -07:00
Brooks a9515e9269
Inlines AccountsDb::remove_bank_hash_infos() (#31454) 2023-05-03 10:42:16 -04:00
Pankaj Garg ba6f7e80e8
Remove obsolete code for lazily loading programs (#31395) 2023-05-02 14:39:27 -07:00
Alexander Meißner ae75c7cb3f
Refactoring - Remove redundant definition of `BuiltinProgram` (#31429)
* Replaces BuiltinProgram in the program-runtime with the one from solana_rbpf.

* Adjusts the runtimes built-ins to use Arc<LoadedProgram>.

* Adjusts the tests and benchmarks.
2023-05-02 23:01:28 +02:00
Brooks fdf7bdae1a
Fixes name of snapshot_utils::get_bank_snapshot_dir() (#31432) 2023-05-01 19:28:35 +00:00
Xiang Zhu 0a2e897f16
Clean up the outdated SnapshotPackage snapshot_links field (#31360)
* Remove snapshot_links

* Change the function name from snapshot_dir to bank_snapshot_dir

* Format fix

* Fix test_concurrent_snapshot_packaging

* Fix clippy error

* Fix nits

* Fix nits 2nd try

* Use get_bank_snapshots_dir

* Use slot_dir

* Revert "Use get_bank_snapshots_dir" because get_bank_snapshots_dir is private to crate

This reverts commit 1ed9b3b2c8e84689a918beee7159f63c56500a96.
2023-05-01 11:24:59 -07:00
Jeff Washington (jwash) 58ce19446f
replace tuple with `VoteReward` struct (#31408) 2023-05-01 10:42:05 -07:00
Pankaj Garg 8eebf64464
Add a second level cache to contain tx batch specific programs (#31413)
* Add a second level cache to contain tx batch specific programs

* fix clippy

* address review comments
2023-05-01 09:09:43 -07:00
steviez 1a995ade3f
Combine multiple snapshot_utils metrics (#31406)
Within the contents of snapshot_utils::add_bank_snapshot(), metrics were
being reported in several datapoints and counters. This adds extra
overhead, and makes it harder to correlate fields that correspond to the
same snapshot.

So, combine the counters and multiple datapoints into a single
datapoint.
2023-04-30 16:36:08 -04:00
Dmitri Makarov 74bd5f87af
Add minor extensions to Bank API (#31396)
* Make load_program method of Bank public for use in ledger-tool

* Add an accessor method to get a reference to builtin_programs of Bank

* Add a parameter to Bank::load_program to control debugging_features
2023-04-28 19:02:49 -04:00
Xiang Zhu bb95d44328
Check incomplete file flag first (#31409)
* Check incomplete file flag first

* Use the simple is_file call, no need for metadata
2023-04-28 15:44:59 -07:00
Alessandro Decina 117a194b73
Account data direct mapping (#28053)
* AccountSharedData: make data_mut() private

This ensures that the inner Vec is never handed out. This is in
preparation of enforcing that the capacity of the inner vec never
shrinks, which is required for direct mapping.

* Adds the feature bpf_account_data_direct_mapping.

* Remaps EbpfError::AccessViolation into InstructionError::ReadonlyDataModified.

* WIP: Memory regions for each instruction account in create_vm().

* Fix serialization benches, run both copy and !copy variants

* rbpf-cli: fix build

* BorrowedAccount: ensure that account capacity is never reduced

Accounts can be directly mapped in address space. Their capacity can't
be reduced mid transaction as that would create holes in vm address
space that point to invalid host memory.

* bpf_load: run serialization tests for both copy and !copy account data

* bpf_loader: add Serializer::write_account

* fix lints

* BorrowedAccount: make_data_mut is host only

* Fix unused import warning

* Fix lints

* cpi: add explicit direct_mapping arg to update_(callee|caller)_account

* cpi: rename account_data_or_only_realloc_padding to serialized_data

* cpi: add CallerAccount::original_data_len comment

* cpi: add update_callee_account direct_mapping test

* cpi: add test_update_caller_account_data_direct_mapping and fix bug

We used to have a bug in zeroing data when shrinking account, where we zeroed
the spare account capacity but not the realloc padding.

* cpi: add tests for mutated readonly accounts

* cpi: update_caller_account doesn't need to change .serialized_data when direct_mapping is on

* cpi: update_caller_account: ensure that account capacity is always enough

Introduce a better way to ensure that account capacity never goes below what
might be mapped in memory regions.

* cpi: zero account capacity using the newly introduced BorrowedAccount::spare_data_capacity_mut()

Before we were using BorrowedAccount::get_data_mut() to get the base pointer to
the account data, then we were slicing the spare capacity from it. Calling
get_data_mut() doesn't work if an account has been closed tho, since the
current program doesn't own the account anymore and therefore get_data_mut()
errors out.

* bpf_loader: fix same lint for the umpteenth time

* bpf_loader: map AccessViolation to ReadonlyDataModified only for account region violations

* programs/sbf: realloc: add test for large write after realloc

Add a test that after a realloc does a large write that spans the
original account length and the realloc area. This ensures that memory
mapping works correctly across the boundary.

* programs/sbf: run test_program_sbf_realloc with both direct_mapping on and off

By default test banks test with all features on. This ensures we keep
testing the existing code until the new feature is enabled.

* bpf_loader: tweak memcmp syscall

Split the actual memcmp code in a separate function. Remove check
indexing the slices since the slices are guaranteed to have the correct
length by construction.

* bpf_loader: tweak the memset syscall

Use slice::fill, which is effectively memset.

* bpf_loader: syscalls: update mem syscalls to work with non contiguous memory

With direct mapping enabled, accounts can now span multiple memory
regions.

* fix lint, rebase mem_ops

* Implement CoW for writable accounts

* Fix CI

* Move CoW to the MemoryMapping level

* Update after rbpf API change

* Fix merge screwup

* Add create_vm macro. Fix benches.

* cpi: simplify update_caller_account

Simplify the logic to update a caller's memory region when a callee
causes an account data pointer to change (eg during CoW)

* benches/bpf_loader: move serialization out of  create_vm bench

* benches/bpf_loader: don't copy accounts when direct mapping is on

* Fix review nits

* bpf_loader: mem_ops: handle u64 overflow in MemoryChunkIterator::new

When starting at u64::MAX, the chunk iterator would always return the
empty sequence (None on the first next()) call, instead of returning a
memory access violation.

Use checked instead of saturating arithmetic to detect the condition and
error out.

This commit also adds more tests around boundary conditions.

* Fix loader-v3 tests: data_mut => data_as_mut_slice

* Fix CI

* bpf_loader: fix tuner bench: account must be writable

With direct mapping on, invalid writes are caught early meaning the
tuner would fail on the first store and not consume the whole budget
like the benchmark expects.

---------

Co-authored-by: Alexander Meißner <AlexanderMeissner@gmx.net>
2023-04-29 06:54:39 +10:00
Brooks 53dfb9fa41
Gives lifetimes more descriptive names in append_vec.rs (#31403) 2023-04-28 15:32:29 -04:00
Brooks f86dc35471
Fixes lifetimes on AppendVec::get_type() (#31401) 2023-04-28 15:27:22 -04:00
Brooks d621b48026
Cleanup usage of AsRef<Path> in snapshot_utils (#31393) 2023-04-28 14:46:57 +00:00
Pankaj Garg 94dc8fed55
Check program modification slots during cold start (#31331) 2023-04-28 06:22:14 -07:00
Brooks 6393c7d98d
Removes erroneous Copy on AsRef<Path> params in snapshot_utils (#31382) 2023-04-27 22:45:59 -04:00
Xiang Zhu a52f44c342
Use async delete to save time and gracefully handle missing dir (#31380) 2023-04-27 18:13:34 -07:00
Jeff Washington (jwash) 45558f6efe
remove unused metrics (#31377) 2023-04-27 13:26:46 -07:00
Tyera 9af7009bb4
Add new CreateVoteAccount instruction-set builders (#31330)
* Add failing test

* Add config struct for vote-account creation

* Add create-vote-account ix builders that use CreateVoteAccountConfig

* Test now passes; add case to demonstrate failure after activation

* Deprecate existing ix builders

* Use new builders in solana-cli

* Query feature status to use correct VoteState size in solana-cli

* Fix tests and clippy warnings

* Improve ugly conditional block
2023-04-27 11:14:39 -06:00
Alexander Meißner 54f1595dfa
Fix - Filter condition in `filter_executable_program_accounts()` (#31371)
* Removes `!tx.message().is_writable(i)` from the filter condition in `filter_executable_program_accounts()`.

* cargo fmt
2023-04-27 18:38:00 +02:00
Ryo Onodera a30830d7a9
ci: treewide: deny used_underscore_binding (#31319)
* Enforce used_underscore_binding

* Fix all

* Work around for cfg()-ed code...

* ci....

* Make clipply fixes more pleasant

* Clone exit signal while intentionally shadowing

* Use more verbose code to avoid any #[allow(...)]s
2023-04-27 10:10:16 +09:00
Brennan 685ebcb3b0
Rework bank to allow RentCollectionCycleParams private (#31361) 2023-04-26 14:48:51 -07:00
Brennan a540690778
Move partition logic out of bank (#31343)
* Move partition logic out of bank
2023-04-26 12:37:02 -07:00
Xiang Zhu f3e94ca73c
AHV processes the snapshot dirs in place (#30978)
* AHV processes the snapshot dirs in place

Let account pacakge use the snapshot dir, so AHV computes the accounts hash and turns the pre snapshot dir into a post snapshot dir

* fix status cache path to maintain the archive layout for the in-place snapshot dir archiving

* fix test_package_snapshots

* Fix test_concurrent_snapshot_packaging

* Remove debug change.

* Fix snapshot_links path

* change to borrow for bank_snapshots_dir

* Reverted changes in create_and_verify_snapshot

* Fix param errors

* Fix rebase errors

* Remove NOTE 1

* Remove unwrap

* Remove the variables to make it apparent taht snapshot_links is the bank_snapshots_dir

* Use soft link instead of hard link for snapshot and status cache

* After switching to soft symlinking, the src path should be absolute
2023-04-26 11:48:48 -07:00
Jeff Washington (jwash) 6f7429556b
avoid incorrect internal assert in purge_slot_cache_pubkeys (#31344) 2023-04-26 09:09:38 -07:00
Brooks 18aa54a4b6
Removes bank_snapshots_dir param from bank_fields_from_snapshot_archives() (#31349) 2023-04-26 11:45:00 -04:00
Alexander Meißner c05d1d5c51
Refactor - Moves bpf_loader registration into the runtime (#31345)
* Moves the registration of bpf_loader built-ins from the ledger into the runtime.

* Removes bpf_loader built-ins registration in tests and benchmarks.

* Removes declare_builtin!() of bpf_loader built-ins.

* Removes built-ins from the SDK.

* Adjusts tests.
2023-04-26 14:44:19 +02:00
Alexander Meißner 7002c568fb
Cleanup - Removes the CLI option "no-bpf-jit" (#31329)
* Enables JIT everywhere by default.

* Removes the CLI argument "no-bpf-jit" and its plumbering through out the validator code base.

* Removes with_jit bpf_loader variants.

* Removes the to_builtin!() macro.
2023-04-25 19:04:11 +02:00
Xiang Zhu 16f3dcd5d2
Update fn create_and_verify_snapshot (#31245)
* only 1 snapshot per archive in create_and_verify_snapshot

* Update create_and_verify_snapshot with the newer funtion calls

* Fix test_package_snapshots

* Remove account path access change

* Rename slot to num_snapshots

* Remove unncessary purge_old_bank_snapshots in test

* Update non-deterministic format comment

* Cleanup unnecessary hash calls

* Use get_accounts_hash

* Remove extra declaration

* Remove rehash

* Remove clean_accounts

* Revert "Cleanup unnecessary hash calls"

This reverts commit 06b1457462cf6d7acf62e0e5531633caf5d9fc58.

Removing unncessary hash calls should be done for create_and_verify_snapshot,
not bank_to_full_snapshot_archive

* Fix typo appenedvecs

* Remove bank_snapshots_dir after rebasing
2023-04-24 18:52:50 -07:00
Alexander Meißner 4b0e16d06f
Refactor - `BuiltinPrograms` (#31324)
* Moves BuiltinProgram of the program runtime into its own file.

* Unifies the runtimes Builtin and program runtimes BuiltinProgram definitions.

* Moves BuiltinPrograms from bank.rs into the program runtime.
2023-04-24 19:01:40 +02:00
Jeff Washington (jwash) 05391b5244
packed ancient: report random stat (#31274) 2023-04-24 07:40:45 -07:00
Jeff Washington (jwash) 8b30aa187b
ancient packing: leave same append vecs alone (#31295) 2023-04-24 07:40:05 -07:00
Alexander Meißner e5490b8d09
Refactor - Use builtin function interface from rbpf (#31221)
* Removes test_program_entry_debug().

* Uses declare_process_instruction!() in all tests and benchmarks.

* Replaces with ProcessInstructionWithContext with solana_rbpf::BuiltInFunction.
2023-04-21 18:08:32 +02:00
Tao Zhu b4331ae955
use checked arithmetic (#31259)
* use checked arithmetic
* add feature gate; updated tests
* allow collapsible-else-if

Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com>
Co-authored-by: mvines <mvines@gmail.com>
2023-04-20 22:56:08 -05:00
Jeff Washington (jwash) 318f981274
add `is_recyclable` to `AccountsFile` (#31257) 2023-04-19 11:36:44 -07:00
Jeff Washington (jwash) 9124d1f35d
rework assert_no_shrink_in_progress to get assert stack easily (#31251) 2023-04-19 11:36:24 -07:00
Jeff Washington (jwash) 812d899c7f
add lifetimes to refs in ReadableAccount (#31258) 2023-04-19 11:35:59 -07:00
Xiang Zhu a5275f8839
Remove bank_snapshots_dir param (#31249)
* Remove bank_snapshots_dir param

* Remove outdated comment

* Revert "Remove outdated comment"

This reverts commit e4441432bec57edb0dc22c4bacf4d48ce26ed818.

* Handle parent() error

* Fix format error
2023-04-19 09:37:46 -07:00
Brooks ca1bde3591
Use Arc instead of &Arc in AccountsBackgroundService::new (#31268) 2023-04-19 11:10:41 -04:00
Alexander Meißner 8162358b8b
Refactor - Moves the system program into its own crate (#31244)
* Moves the system program into its own crate in "programs/system".

* Moves bank tests back into the runtime to resolve cyclic dependency.
2023-04-19 12:58:08 +02:00
bji a45710838d
Add new vote state version that replaces Lockout with LandedVote to a… (#30831)
Add new vote state version that replaces Lockout with LandedVote to allow vote latency to be tracked in a future change.

Includes a feature to be enabled which will when enabled cause the vote state to be written in the new form.
2023-04-18 20:27:38 -07:00
Trent Nelson f34a6bcfce
runtime: transpose `VoteAccount::vote_state()` return to improve ergonomics (#31256) 2023-04-18 14:48:52 -06:00
Jeff Washington (jwash) ad30a60059
update stats for packed ancient (#31255) 2023-04-18 13:33:02 -07:00
Jeff Washington (jwash) fb4b5c4fb8
add comment (#31252) 2023-04-18 13:13:57 -07:00
Jeff Washington (jwash) 30b62c0e1e
remove unused metrics (#31250)
pack ancient: add test for addref_accounts_failed_to_shrink_ancient
2023-04-18 12:29:37 -07:00
Brennan 2164a50d00
Move BankIncrementalSnapshotPersistence (#31236)
* Move BankIncrementalSnapshotPersistence

* Update bank serialize ABI digest
2023-04-18 11:18:17 -07:00
Brennan f5fe2607b6
Make VerifyAccountsHashConfig private (#31235) 2023-04-18 07:31:23 -07:00
Jeff Washington (jwash) 3cf4ffc88d
pack ancient: add test for addref_accounts_failed_to_shrink_ancient (#31228) 2023-04-17 20:05:59 -07:00
Xiang Zhu e74bc4e2e7
Add a filter_by_type param for purge_old_bank_snapshots (#31191)
* Add a type_select param for purge_old_bank_snapshots

* Use flags to make the function calls more readable

* Remove the extra purge calls

* replace select_type with filter_by_type

* Add test

* Use matches

* Fix CI test on reference

* use match and call do_purge once

* Let bank_snapshots_dir be TempDir

* remove account_paths in the test

* replace bank with _bank

* Remove create_snapshot_dirs_for_tests, will take the lastest from master

* Fix merge errors
2023-04-17 16:16:41 -07:00
Xiang Zhu 667fad6da7
Refactor the common test snapshot dirs creation code (#31223)
* Create fn create_snapshot_dirs_for_tests to refactor the common test snapshot dirs creation code

* Fix trailing space

* Fix missed set_accounts_delta_hash
2023-04-17 14:14:01 -07:00
Jeff Washington (jwash) 3d6d34ebd0
packed ancient: add revisit_accounts_with_many_refs (#31209) 2023-04-17 13:52:26 -07:00
Xiang Zhu f066ea9f71
Define bank_snapshots_dir as tmpdir (#31216)
* Let bank_snapshots_dir be TempDir

* Same change in test_bank_from_latest_snapshot_dir

* Use borrow to avoid releasing the tmp dir

* One more to change to reference
2023-04-17 08:07:24 -07:00
Jeff Washington (jwash) 8fccbadbc3
ancient append vecs: better application of offset (#31208)
* ancient append vecs: better application of offset

* fix subtle bug in get_oldest_slot_within_one_epoch_prior

* add tests
2023-04-17 06:50:32 -07:00
Jeff Washington (jwash) a8134b8e73
packed ancient: addref when pack operation fails (#31211) 2023-04-16 12:24:25 -07:00
Jeff Washington (jwash) 09bcf59003
packed ancient: shrink_collect accounts in parallel (#31212) 2023-04-16 12:23:11 -07:00
Xiang Zhu 5747290d51
Move reference-holding last_snapshot_storages from ABS to AHV (#31175)
* Let AHV hold and update last_snapshot_storages

* Clean up comment

* Move cloning after enqueued_time

* Minor positon change

* Remove  type last_snapshot_storages annotation
2023-04-14 14:38:44 -07:00
Jeff Washington (jwash) c008a557c5
packed ancient: parallel write to append vecs (#31144) 2023-04-14 13:57:46 -07:00
Brennan 93d0d25d77
Move rent debit out of bank (#31204)
* Move rent debit out of bank

* Clean up imports and visibility

* Fix imports

* rename public mod rent_debits
2023-04-14 19:41:10 +00:00
Andrew Fitzgerald 8fe28c3798
RootBankCache: only cache weak reference to avoid keeping a bank alive (#31189) 2023-04-14 11:33:18 -07:00
Alexander Meißner 8eb31f6cfd
Refactor - Syscalls in RBPF CLI (#31109)
* Makes members of SyscallContext public.
Removes check_aligned and check_size from SyscallContext.

* Replaces InvokeContext::set_syscall_context() in tests with mock_create_vm!().

* Passes SyscallContext directly to InvokeContext::set_syscall_context().

* Merges TraceLogStackFrame into SyscallContext.

* Removes the create_vm!() macro.

* Moves BpfAllocator from bpf_loader into program_runtime.

* Frees BpfAllocator from Rc<RefCell<>>.

* Removes unused code from BpfAllocator.

* Consume CUs for heap before doing the allocation.

* Exposes syscalls in rbpf-cli.

* Adds debugging_features parameter to load_program_from_bytes() and load_program_from_account().

* Removes test_bpf_loader_non_terminating_program() as that is already tested in RBPF.

* Moves stack and heap allocation back onto the program runtime stack.
2023-04-14 15:20:08 +02:00
Brooks d43e19bb03
Refactors the Full/Incremental SnapshotHash types (#31186) 2023-04-13 18:01:27 -04:00
Xiang Zhu 9f53c42339
bank_from_latest_snapshot_dir (#31115)
* bank_from_latest_snapshot_dir

* Clear the account paths before constructing a bank from a snapshot dir

* Clear the account paths before constructing a bank from a snapshot dir (#31170)

* use the highest POST snapshot dir to construct a bank

* Use POST to fix test_bank_from_latest_snapshot_dir

* Revert "Clear the account paths before constructing a bank from a snapshot dir"

This reverts commit 272bb9fee14a09d7fde3cddb3d439f2cdadb5493.

* Remove the set_accounts_hash_for_tests call

* Revert "Revert "Clear the account paths before constructing a bank from a snapshot dir""

This reverts commit 2e345d8b98b8fb3b07f00ce050132c678acf88d4.
2023-04-13 12:44:56 -07:00
Brooks 1f67591e21
Removes `base` from `IncrementalSnapshotHash` (#31185) 2023-04-13 17:35:35 +00:00
Xiang Zhu 78d061a3d3
Clear the account paths before constructing a bank from a snapshot dir (#31170) 2023-04-12 16:03:19 -07:00
HaoranYi 1db0683a50
Refactor reward payout code - part 4 (#31159)
extract redeem_reward fn
2023-04-12 10:20:21 -05:00
HaoranYi f2e3a0d821
Refactor reward payout code - part 3 (#31157)
extract calculate points fn
2023-04-12 09:36:23 -05:00
HaoranYi 9e14cdc19f
Refactor reward payout code - part 2 (#31156)
* extract load_vote_stake_accounts fn

* rename
2023-04-12 08:40:08 -05:00
Xiang Zhu 31784b2ecc
Add remove_incomplete_bank_snapshot_dir (#31131)
* Add remove_incomplete_bank_snapshot_dir

* Remove incomplete snapshot dir if incomplete

* Revert "Add remove_incomplete_bank_snapshot_dir"

This reverts commit aaafef74803ca4e2050b8cd83ef352c5a59509b4.

* Replace metadata's is_file with simple PathBuf's is_file

* In test verify the deletion of the incomplete snapshot dir

* Add comments to explain the snapshot dir cleanup
2023-04-11 17:56:26 -07:00
HaoranYi 20d1615ccd
Refactor reward payout code - part 1 (#31155)
type alias
2023-04-11 16:23:52 -05:00
Tao Zhu 5816d33b57
Add test for transaction has too high prioritization fee (#31097)
* Add test for transaction has too high prioritization fee than payer account balance
2023-04-11 16:22:19 -05:00
Pankaj Garg 12e3e8b467
Add provisions to unload a program from the cache (#31036) 2023-04-10 16:42:05 -07:00
HaoranYi e12c250cf5
Extract new_epoch processing out of new_bank (#31127)
* extract new epoch processing out of new_bank

* review feedbacks

* remove epoch_schedule param

* use RewardCalcTracer
2023-04-10 16:10:45 -05:00
Jeff Washington (jwash) d63359a3ff
disk index: batch insert (#31094) 2023-04-10 11:08:54 -07:00
Andrew Fitzgerald 15011eaa5a
separate check_transaction_age from check_age (#30994) 2023-04-07 09:04:03 -07:00
Alexander Meißner 0cd57addcf
Cleanup - mock_process_instruction() (#31088)
* Uses declare_process_instruction!() in all tests.

* Adds post_adjustments to mock_process_instruction().
Removes "solana_sbf_rust_external_spend" from assert_instruction_count() as it panics.
2023-04-07 12:53:19 +02:00
Jeff Washington (jwash) 6dc18fe241
fix cli arg for ancient append vecs (#31066) 2023-04-06 12:03:31 -07:00
HaoranYi 684901879d
Refactor squash timing report (#31041)
* typo

* refactor squash timing report

* address review comments
2023-04-05 08:53:49 -05:00
Alexander Meißner 24a87f33a8
Refactor - Cleanup error handling in program runtime (#30693)
* Moves stable_log::program_invoke(), stable_log::program_success() and stable_log::program_failure() calls from bpf_loader into InvokeContext::process_executable_chain().

* Turns result of ProcessInstructionWithContext from InstructionError into Box<dyn std::error::Error>.

* Bump to solana_rbpf v0.3.0

* Removes Result from return type of EbpfVm::new().

* Turns EbpfError into Box<dyn std::error::Error>.

* Removes BpfError.

* Removes SyscallError::InstructionError.

* Adds a type alias for Box<dyn std::error::Error> in syscalls.
2023-04-05 15:50:34 +02:00
Xiang Zhu fac76715e9
bank_from_snapshot_dir returns BankFromDirTimings (#31051) 2023-04-04 17:10:56 -07:00
Jeff Washington (jwash) aa3e0b9c20
disk index: add stat: disk_index_failed_resizes (#31039) 2023-04-04 09:39:06 -07:00
Jeff Washington (jwash) bc343a431c
disk index: set_anticipated_count to optimally grow disk buckets at startup (#31033)
* disk index: set_anticipated_count to optimally grow disk buckets at startup

* remove atomic
2023-04-03 20:28:50 -07:00
Alexander Meißner a0c7fde90e
Cleanup - mock InvokeContext (#31007)
* Turns with_mock_invoke_context() into a macro.

* Removes prepare_mock_invoke_context().

* Replaces InvokeContext::new_mock() with with_mock_invoke_context().

* Removes InvokeContext::new_mock().

* Removes Cow from InvokeContext::sysvar_cache.

* Removes override parameters from mock_process_instruction().

* cargo fmt
2023-04-03 17:23:24 +02:00
Jeff Washington (jwash) 07f4789257
fix assert (#31012) 2023-04-03 06:40:54 -07:00
Jeff Washington (jwash) 9600643860
reduce contention on startup index generation (#31006) 2023-03-31 12:46:42 -07:00
Pankaj Garg bc44ac73db
Return error early if program is a tombstone (#30940) 2023-03-30 11:16:01 -07:00
steviez cc8e531a5d
Enforce a minimum of 1 on full and incremental snapshot retention (#30968) 2023-03-30 10:16:36 -05:00
blackghost1987 9f9d6f8a89
Relax `Sized` bound for `Signers` in `Transaction` and `Client` (#30568)
* relax Sized bound for Signers in Transaction and Client

* also relax Sized bounds in client, runtime, thin-client and tpu-client

* add tests for using non-sized transaction signers

* fix macro for thin_client vs ?Sized

* move tests to transactions, add Sized relaxation to mut macro

* fix clippy warning

* get rid of unnecessary imports
2023-03-30 13:12:48 +00:00
Jeff Washington (jwash) d542496d10
fix typo in info log (#30964)
fix typo
2023-03-29 13:23:06 -07:00
Alexander Meißner a6ad37f3ad
Cleanup - `load_and_get_programs_from_cache()` (#30959)
* Replaces assign_program() by replenish() in load_and_get_programs_from_cache().

* Replaces LoadedProgramEntry by a boolean.

* Only lock the global cache once all missing programs have been loaded

* Factors out call of self.rc.accounts.filter_executable_program_accounts().
2023-03-29 16:11:14 +02:00
steviez 4bd7de4887
Update comments around snapshot retention policy unit tests (#30955) 2023-03-29 08:55:05 -05:00
Jeff Washington (jwash) 823d55ea9f
disk index find_entry -> find_index_entry (#30941) 2023-03-29 06:54:03 -07:00
Brooks 1f420f2b03
Moves shrink after flush and clean (#30918) 2023-03-28 16:11:56 -04:00
Pankaj Garg 035c974a8c
Remove redundant check during loading upgradeable program for writing (#30561)
* Remove redundant check during loading upgradeable program

* Apply clippy suggestion
2023-03-28 11:50:49 -07:00
Pankaj Garg aebc191c38
Stop loading program accounts if program exists in cache (#30703)
* Stop loading program accounts if program exists in cache

* load accounts for upgradeable programs

* revert loader change to conditionally use program data account

* load instruction accounts

* generate TransactionExecutorCache from loaded programs

* cleanup account_found_and_dep_index variable

* address review comments

* handle tombstones in loader

* unify tombstone constructor

* handle multiple tombstones
2023-03-28 11:49:56 -07:00
Brooks e7887cfb06
RootBankCache must use Acquire-Release semantics when accessing BankForks::root (#30936) 2023-03-28 14:35:02 -04:00
Jeff Washington (jwash) aaac046b6b
flush individual buckets every n ages (#30855)
disk index flush individual buckets every n ages
2023-03-28 09:26:34 -07:00
Brooks d7ae05c3fd
Unifies logging of start/stop for background services (#30916) 2023-03-28 08:32:18 -04:00
Xiang Zhu bf986d64f8
Add more explict error messages for hardlink operations (#30913) 2023-03-27 19:55:10 -07:00
Pankaj Garg 0df28f6d51
Increment usage count for loaded programs and call eviction (#30900) 2023-03-27 06:48:05 -07:00
Andrew Fitzgerald 2a05b25732
Standardize Thread Naming - Prioritization Fee Cache (#30890)
Thread naming in accordance with #27237
2023-03-24 13:48:55 -07:00
Andrew Fitzgerald f226a34f48
Only need bank reference for update (#30879) 2023-03-24 09:48:04 -07:00
Tao Zhu 3e500d9e92
Feature gate builtin consumes static units during processing instruction (#30702)
* add feature gate
* builtins consume statically defined units at beginning of process_instruction()
* Add new instructionError; return error if builtin did not consume units to enforce builtin to consume units;
* updated related tests
* updated ProgramTest with deactivated native_programs_consume_cu feature to continue support existing mock/test programs that do not consume units
2023-03-24 11:31:01 -05:00
Jeff Washington (jwash) 3ebfda5aef
add stat for disk buckets flushed (#30850) 2023-03-22 15:04:17 -07:00
Xiang Zhu d69f60229d
Construct bank from snapshot dir (#30171)
* Construct a bank from a snapshot directory

* Clean up.  Remove archiving releated data structures

* Fix auto checks

* remove ArchiveFormat::None

* fix merge error

* remove incremental snapshot dir

* Minor cleanup, remove unused functiond defs

* remove pub fn bank_from_latest_snapshot_dir

* rename bank_from_snapshot_dir to bank_from_snapshot

* Clean up invalid comments

* A few minor review changes

* Removed insert_slot_storage_file

* Add comment explain hardlink symlink

* Skip the whole verify_snapshot_bank call for the from_dir case

* Add bank.set_initial_accounts_hash_verification_completed()

* address review issues: appendvec to append_vec, replace unwrap with expect, etc

* AtomicAppendVecId, remove arc on bank etc

* slice, CI error on &snapshot_version_path

* measure_build_storage

* move snapshot_from

* remove measure_name from build_storage_from_snapshot_dir

* remove from_dir specific next_append_vec_id logic

* revert insert_slot_storage_file change

* init next_append_vec_id to fix the substraction underflow

* remove measure from build_storage_from_snapshot_dir

* make measure name more specific

* refactor status_cache deserialization into a function

* remove reference to pass the ci check

* track next appendvec id

* verify that the next_append_vec_id tracking is correct

* clean up usize

* in build_storage_from_snapshot_dir remove expect

* test max appendvecc id tracking with multiple banks in the test

* cleared expect and unwrap in streaming_snapshot_dir_files

* rebase cleanup

* change to measure!

* dereference arc in the right way
2023-03-22 13:49:23 -07:00
Jeff Washington (jwash) 9a1d5ea95d
at startup, keep duplicates in in-memory index since they will be cleaned shortly (#30736)
at startup, keep duplicates in in-memory index since they will be cleaned soon
2023-03-22 08:33:39 -07:00
Brooks 35437b8dad
Makes AccountsHashVerifier aware of Incremental Accounts Hash (#30820) 2023-03-22 10:20:16 -04:00
Tao Zhu 21c287a64f
include loaded accounts data size limit in transaction fee calculation (#30659)
* include loaded accounts data size limit in transaction base fee calculation
* citing compute_budget for heap cost;
* update sbf tests

Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com>
2023-03-21 18:41:41 -05:00
HaoranYi d646820a6e
Do not log detailed epoch stakes (#30825)
* do not log detailed epoch stakes

* allow dead code

* log stake details at trace level

* no need dead_code

* Update runtime/src/bank.rs

Co-authored-by: Brooks <brooks@prumo.org>

---------

Co-authored-by: Brooks <brooks@prumo.org>
2023-03-21 14:43:06 -05:00
Jeff Washington (jwash) 2216647f7e
better duplicate key stats during index generation (#30829) 2023-03-21 12:02:23 -07:00
Brooks b64d0de771
Makes snapshot_utils aware of Incremental Accounts Hash (#30804) 2023-03-21 16:34:30 +00:00
HaoranYi 6a6d5ee498
typo (#30824) 2023-03-21 11:19:16 -05:00
Brooks 836494fc5f
Cleans *up to* the last full snapshot slot in verify_snapshot_bank() (#30818)
Cleans up to the last full snapshot slot in verify_snapshot_bank()
2023-03-21 15:49:49 +00:00
Brooks e5edcb9c48
Sets IncrementalAccountsHash in serde_snapshot when reconstructing AccountsDb (#30801) 2023-03-21 10:51:04 -04:00
Jeff Washington (jwash) ce0e23fbab
accounts index does not randomly flush dirty entries (#30783) 2023-03-20 12:23:30 -07:00
Yueh-Hsuan Chiang 72c6099ea0
Move alignment related consts from append_vec.rs to accounts_file.rs (#30782)
#### Problem
As we start supporting new storage formats, alignment-related constants and macros
defined in append_vec.rs aren't only specific to AppendVec.

#### Summary of Changes
Move alignment-related constants/macros from append_vec.rs to accounts_file.rs
2023-03-20 11:34:18 -07:00
HaoranYi f42f61804f
typos (#30797) 2023-03-20 10:47:15 -05:00
Jeff Washington (jwash) df2c95119c
add buckets stats for # files and total file size (#30780)
* add buckets stats for # files and total file size

* change metrics to bytes

* get index file size correct
2023-03-20 08:22:31 -07:00
Brooks 989c80342b
Adds plumbing and tests for verify_snapshot_bank() with Incremental Accounts Hash (#30789) 2023-03-19 21:44:38 -04:00
Brooks d3273ba118
Removes unused `ancestors` param from `get_snapshot_storages` (#30773) 2023-03-18 17:17:41 -04:00
Brooks 8325b0f591
Do not use ancestors in get_snapshot_storages (#30772)
* Do not use ancestors in get_snapshot_storages

* fixup verify_accounts_hash bench
2023-03-17 22:48:47 +00:00
Xiang Zhu 8e3a30c22c
Clean orphaned account snapshot dirs (#30645)
* Clean up orphaned account snapshot hardlink dirs

* fix compilation issues

* debugged, now working.  seeing the orphaned directories deleted

* change back to eprintln + exit for account_path error

* changed eprintln to panic for now

* add test_clean_orphaned_account_snapshot_dirs for codecov check

* address a few comments and nit isseus

* directly unzip, skipped the intermediate array of tuples

* let set_up_account_run_and_snapshot_paths return Result

* 'proper' typo, and comment on return

* use map_err

* use for loop in clean_orphaned_account_snapshot_dirs, removed panic

* add test_set_up_account_run_and_snapshot_paths

* minor, replace .for_each with .all

* rename set_up_account_run_and_snapshot_paths to create_all_accounts_run_and_snapshot_dirs

* remove unnecessary closure return type

* change to for loop

* change match to unwrap_or_else

* remove create_dir_all(&account_path) in create_all

* minor comment cleanup
2023-03-17 15:22:10 -07:00
Brooks d4dd4360e7
Removes `base_slot` param from `calculate_incremental_accounts_hash()` (#30774) 2023-03-17 15:22:22 -04:00
Ryo Onodera 05ee06814e
Fix wrongly swapped parent slot and block height (#30744) 2023-03-17 20:07:52 +09:00
Tao Zhu 17ba051e1f
Revert "add default_cost as mandatory field for Builtin (#30639)" (#30749)
This reverts commit 7b95c8e698.
2023-03-16 11:21:06 -05:00
Brooks 8be99c1c7d
Verifies incremental accounts hash in verify_accounts_hash_and_lamports (#30735) 2023-03-16 09:48:06 -04:00
Yueh-Hsuan Chiang fce949009d
Add new_from_file() API to AccountsFile (#30687)
#### Problem
Accounts db currently use AppendVec::new_from_file() directly
to create a new AcountsFile instance from an existing file.
However, this method should be abstracted out to AccountsFile
so that an existing file can be opened correctly using the right format.

#### Summary of Changes
Add new_from_file() API to AccountsFile which will open an existing
file based on its accounts file format.

Currently, it only supports AppendVec.
2023-03-15 20:38:20 -07:00
Brooks cbc0d01d0d
Refactors verify_accounts_hash_and_lamports() (#30733) 2023-03-15 18:37:27 -04:00
Brooks cefb00e3fb
Includes error in panic in initial accounts hash verification (#30725) 2023-03-15 12:24:55 -04:00
Brooks 65cd55261a
Makes Bank::get_snapshot_hash() aware of incremental accounts hashes (#30719) 2023-03-14 18:03:38 -04:00
Brooks 93c43610ac
AccountsHashVerifier stores IncrementalAccountsHash in AccountsDb (#30696) 2023-03-14 12:41:44 -04:00
Jeff Washington (jwash) 89d5efa0d8
mem idx tracks duplicates better (#30701) 2023-03-14 07:26:39 -07:00
Brooks 560ec08d5e
AccountsHashVerifier writes BankIncrementalSnapshotPersistence (#30587) 2023-03-13 17:44:34 -04:00
Brooks 263342a686
Adds accounts hashes from full & incremental snapshots at startup (#30656) 2023-03-13 14:47:25 -04:00
Brooks 505e3ff5c7
AccountsHashVerifier updates AccountsDb after calculating accounts hash (#30658) 2023-03-13 16:41:24 +00:00
Madhav Goyal 9a8a0223ca
Link needs updating (#30688)
* Link needs updating

Link to monitor the solana cluster doesnt work

* Updated to solana grafna

users could fin the dashboard they are looking for
2023-03-13 17:33:22 +01:00
Brooks a43f803604
AccountsHashVerifier purges old accounts hashes (#30644) 2023-03-13 11:12:11 -04:00
Brooks 5e5b7f00a2
Stores capitalization in account hashes map (#30635) 2023-03-13 10:50:45 -04:00
Brooks 3a97986d7e
Cleans up tests for verify_accounts_hash (#30683) 2023-03-11 01:01:44 -05:00
Brooks 17b48edd7b
Renames types to be consistent with verify_accounts_hash (#30674) 2023-03-10 20:02:14 -05:00
Brooks 63623e4df2
Renames fns to verify_accounts_hash (#30672) 2023-03-10 18:11:47 -05:00
Brooks 64f583b37d
Improves logs in bank verification at startup (#30671)
* Improves logs in bank verification at startup

* pr: should_clean
2023-03-10 21:01:49 +00:00
Tao Zhu 7b95c8e698
add default_cost as mandatory field for Builtin (#30639)
* add default_cost as mandatory field for Builtin

* updated tests

* set zkp program default to VerifyTransfer CUs

---------

Co-authored-by: Jon Cinque <joncinque@pm.me>
2023-03-10 14:02:24 -06:00
Alessandro Decina 13107b4eb6
Enable JIT in Bank::new_with_config_for_tests() (#30661)
The most common validator configuration is JIT on, so test that. On
platforms that don't support JIT we'll still fallback on the
interpreter.
2023-03-10 22:52:33 +11:00
Ryo Onodera 0b9c040fcf
Add .codecov.yml with checks disabled (#30666)
* Add .codecov.yml with checks disabled

* Trigger test-coverage.sh...
2023-03-10 20:11:22 +09:00
Yueh-Hsuan Chiang 71b6370426
Abstract out StoredAccountMeta as an Enum (#30478)
#### Problem
The existing StoredAccountMeta requires the file and in-memory layout of
account metadata to match StoredMeta and AccountMeta.  This limits the
flexibility to implement different accounts storage file formats.

#### Summary of Changes
This PR abstracts out StoredAccountMeta as an Enum.
2023-03-09 15:52:51 -08:00
Tao Zhu 3b9438fd49
Replace hardcoded loaded accounts size limit with compute budget instruction (#30506)
1. replace hardcoded loaded accounts data size limit with compute budget instruction;
2. new transaction error for invalid account data size limit
3. test requested limit with combination of features and transactions
2023-03-08 19:41:45 -06:00
Brooks 70c6c7e1f7
Uses strong types for snapshot hashes in SnapshotPackagerService (#30603) 2023-03-06 16:50:45 -05:00
Illia Bobyr 82288d4457
accounts_db::get_all_accounts: Select slots with an iterator (#30581)
As `Range` is a special case of an `Iterator`, this is a generalization
that makes `get_all_accounts()` accept other kinds of ranges.  Such as
`RangeInclusive`.
2023-03-06 12:30:50 -08:00
Yueh-Hsuan Chiang a78ef393bf
Generalize the return value of append_accounts() (#30571)
#### Problem
The existing append_accounts returns a vector of offsets, which accounts-db
later uses it to infer the storage size of each account.  However, such inference
does not apply to the new hot/cold storage format.

#### Summary of Changes
This PR changes the return value of append_accounts() to `Vec<StoredAccountInfo>`,
which includes both offset and storage size information of an account.
2023-03-06 09:52:05 -08:00
Alexander Meißner 38e74325e3
Refactor - Remove `process_instruction` parameter `first_instruction_account` (#30579)
* Stops using first_instruction_account parameter in bpf_loader.

* Removes first_instruction_account parameter from process_instruction().
2023-03-06 17:37:37 +01:00
Jeff Washington (jwash) b26d470b02
support loading snapshots with > 1 append vec per slot (#30570)
* support loading snapshots with > 1 append vec per slot

* pr feedback

* drain to into_values

* unwrap() -> expect()

* loop to find non-conflicting file and add test
2023-03-06 06:08:57 -08:00
Illia Bobyr 14c600aa70
StoredAccountMeta: Relax returned refs lifetimes. (#30576)
All the references returned from a `StoredAccountMeta` instance
actually come from the underlying account.  As written, the lifetimes of
the returned references are constrained by the lifetime of the
`StoredAccountMeta` instance.

While technically correct, it is overly strict.  It is totally fine to
use the returned reference as long as the underlying account is alive.
Which could be longer than the lifetime of the `StoredAccountMeta`
wrapper.
2023-03-03 14:51:37 -08:00
Jeff Washington (jwash) b7d05dd755
consolidate held in mem stats (#30574) 2023-03-03 10:05:05 -08:00
Jeff Washington (jwash) fbcb82dcf8
add index_entries_being_shrunk to ShrinkCollect (#30518) 2023-03-01 17:09:42 -08:00
Jeff Washington (jwash) 590ee58667
wip: throttle correctly (#30547)
throttle correctly
2023-03-01 17:08:46 -08:00
Yueh-Hsuan Chiang 33e179905f
getter functions for StoredAccountMeta (#30447)
This PR makes all the StoredAccountMeta fields pub(crate)
and provides getter functions to access its member fields.

This PR is a preparation step for abstracting out StoredAccountMeta.
2023-02-27 10:03:22 -08:00
Jeff Washington (jwash) 85eaf1e7ab
improve BankCreationFreezingProgress and add tests (#30513) 2023-02-27 07:54:08 -08:00
Tao Zhu cbcd3ef27e
Not allow transactions request zero CU to update prioritization fee cache (#30507)
* filter out transaction requests zero cu from updating prioritization fee cache

* updated comment
2023-02-24 23:50:02 -06:00
Tao Zhu 9ec5e9b866
refactor to remove additional is_simple_vote check (#30521) 2023-02-24 23:49:04 -06:00
Brooks 64c7b401cd
BankIncrementalSnapshotPersistence uses strong accounts hash types (#30502) 2023-02-24 18:15:23 -05:00
Jeff Washington (jwash) 45a34f637b
move BankCreationFreezingProgress to its own file (#30510) 2023-02-24 14:05:39 -08:00
Brooks ffe2d309b2
Adds serde_snapshot::types module (#30501) 2023-02-24 15:27:12 -05:00
Jeff Washington (jwash) 31573beb2d
use slot instead of store_id in clean (#30472)
* use slot instead of store_id in clean

* update debug
2023-02-24 12:01:16 -08:00
Jeff Washington (jwash) 9080b36192
use local for store_id in write_accounts_to_storage (#30500) 2023-02-24 11:50:57 -08:00
Xiang Zhu 510be7bdb5
Add checks when constructing a BankSnapshotInfo from a directory (#30373)
* Read snapshot directories and find the highest

* format check

* Fix test_get_bank_snapshots

* fix test_bank_fields_from_snapshot

* review changes, is_file etc

* removed incremental snapshot

* SnapshotNewFromDirError

* nit and comments issues

* NewFromDir(#[from] SnapshotNewFromDirError)

* change fill to create

* replace unwrap with map_err and ok_or_else

* Remove BankForks, fix the bank loop
2023-02-24 11:50:29 -08:00
Brooks e0abad43c3
Removes checks for bank_hash_stats in test (#30480) 2023-02-24 14:35:36 -05:00
Jeff Washington (jwash) efc5cc4a48
break apart AccountInfo (#30505) 2023-02-24 11:35:27 -08:00
Jeff Washington (jwash) 7c086ca42d
add DiskIndexValue trait for disk index (#30503) 2023-02-24 11:02:06 -08:00
K-anon 3ed63de656
Revert "Revert "Add test for executor cache runtime feature upgrades.… (#30428) 2023-02-24 10:04:51 -07:00
Tao Zhu 66ea750182
add compute budget instruction to set loaded accounts data size limit (#30377)
* add compute budget instruction to set accounts data size limit

* changes names to explicitly for loaded accounts data size
2023-02-24 09:27:49 -06:00
Jeff Washington (jwash) 0a75be399b
dirty_stores key is slot and not AppendVecId (#30474) 2023-02-24 07:17:09 -08:00
Jeff Washington (jwash) 005dde70e2
minor cleanup (#30477) 2023-02-23 15:10:09 -08:00
Jeff Washington (jwash) 2441a06e78
drop default from PhantomData::default() (#30476) 2023-02-23 14:59:08 -08:00
Brooks b7d31e134c
Refactors Accounts::new_from_parent() (#30475) 2023-02-23 16:50:51 -05:00
Jeff Washington (jwash) 2c7d9f988e
use slot with store id in some clean paths (#30473) 2023-02-23 13:50:25 -08:00
Jeff Washington (jwash) 9ddb89226c
remove_dead_accounts uses slot instead of AppendVecId (#30471) 2023-02-23 13:20:33 -08:00
Jeff Washington (jwash) e39626ab14
add second type to accounts index for disk (#30446) 2023-02-23 13:05:06 -08:00
Jeff Washington (jwash) 6df160bedd
get stored_size from StoredAccountMeta (#30456) 2023-02-23 12:33:35 -08:00
Jeff Washington (jwash) a2b0b8e346
rearrange how shrink_in_progress_map is populated (#30466) 2023-02-23 11:35:38 -08:00
Xiang Zhu d6da019ccf
Clean up old account snapshot directories to avoid the file existing hardlink error (#30426)
* Fix the hardlink failure

* minor comment cleanup

* use ? and slot_str

* &slot_str

* Add InvalidAccountPath
2023-02-23 10:53:12 -08:00
Jeff Washington (jwash) 47d95a431c
remove magic numbers in test (#30465) 2023-02-23 09:23:14 -08:00
Jeff Washington (jwash) c032dc2754
add bank progress stats (#30405)
* add bank progress stats

* handle more bank creation code paths

* use wrapping sub
2023-02-23 06:29:02 -08:00
Jeff Washington (jwash) 9ecc4462f8
cleanup test type (#30453) 2023-02-23 06:26:55 -08:00
Yihau Chen df3ef111f7
chore: workspace inheritance (#29893)
* introduce workspace.package

* introduce workspace.dependencies

* read version from root cargo.toml

* pass check when version = { workspace = true }

* don't bump version when version = { workspace = true }

* including workspace Cargo.toml when bump version

* programs/sbf use workspace inheritance

* fix increasing cargo version ignore program/sbf/Cargo.toml
2023-02-23 22:01:54 +08:00
Pankaj Garg 0e13dcca00
Replenish executor cache eagerly during transaction processing (#30425) 2023-02-23 05:13:39 -08:00
Michael Vines 5136ed3448
Update homepage value for all crates (#30444) 2023-02-23 02:20:18 +00:00
Yueh-Hsuan Chiang ac7e7aa8f0
Move account-meta structs from append_vec.rs to account_meta.rs (#30443)
#### Problem
As we start supporting new storage formats, those account-meta
structs will be shared by different storage formats and thus need
a new home.

#### Summary of Changes
This PR creates meta.rs under account_storage and moves all the account-meta
structs out from append_vec.rs.
2023-02-22 16:10:34 -08:00
Yueh-Hsuan Chiang 833cb75c20
Fix the dependency of accounts_file.rs (#30423)
Replace the use of append_vec::* in accounts_file.rs
2023-02-22 11:13:58 -08:00
Jeff Washington (jwash) a78f763896
simplify remove_if_slot_list_empty_value (#30436) 2023-02-22 10:46:12 -08:00
Jeff Washington (jwash) 6a66d4631c
remove 'stored_size' from account info (#30407) 2023-02-22 07:04:21 -08:00
Jeff Washington (jwash) db8764f98d
hold items with ref count != 1 in memory (#30414)
* hold items with ref count != 1 in memory

* fix tests
2023-02-22 06:57:59 -08:00
Brooks 1689586213
Uses a channel for AHV -> SPS (#30406) 2023-02-22 03:36:29 +00:00
K-anon 2e4b8ea8bb
Revert "Add test for executor cache runtime feature upgrades. (#30382)" (#30424)
This reverts commit c5a24e11ba.

Co-authored-by: K-anon <IntokuSatori@users.noreply.github.com>
2023-02-21 15:47:39 -07:00
Pankaj Garg b1f5b0d790
Find and load missing programs in LoadedPrograms cache (#30275)
* Find and load missing programs in LoadedPrograms cache

- filter program accounts in a transaction batch
- filter the accounts that are missing in LoadedPrograms cache
- load the programs before processing the transactions
- unit tests

* address review comments

* fix clippy

* address review comments

* fix test

* fix more tests
2023-02-21 12:53:35 -08:00
Brooks 35328ca63d
Makes AccountsHash an enum (#30416) 2023-02-21 15:20:51 -05:00
K-anon c5a24e11ba
Add test for executor cache runtime feature upgrades. (#30382)
Co-authored-by: K-anon <IntokuSatori@users.noreply.github.com>
2023-02-21 12:25:29 -07:00
Jeff Washington (jwash) 568a4b1ca0
move AccountInfo bits from size to offset (#30408)
* move AccountInfo bits from size to offset

* feedback
2023-02-21 10:08:37 -08:00
HaoranYi 22f6dfd98e
typo (#30393) 2023-02-21 09:59:45 -06:00
Brooks bcc4bc80c9
Removes unnecessary derives from Accounts{Delta}Hash (#30392) 2023-02-20 16:00:53 -05:00
Jeff Washington (jwash) 46b42e1888
add hash calc scan_chunks metric (#30333) 2023-02-20 12:55:48 -08:00
Brooks ec288ded9b
Serde snapshot uses own types (#30391) 2023-02-20 12:25:15 -05:00
Brooks a8e07c41fe
Adds `is_incremental_accounts_hash_feature_enabled` to `AccountsPackage` (#30368) 2023-02-20 12:21:38 -05:00
Brooks ad6a3abd8b
Uses set_accounts_{delta,}_hash_for_tests() in serde tests (#30390) 2023-02-17 16:00:25 -05:00
Brooks f91e63dfe9
Upgrades Rust to 1.67.1 (#29947) 2023-02-17 14:08:27 -05:00
Pankaj Garg 3a4ba72daf
Remove executors trait and replace with LoadedProgram (#30348)
* Remove executors trait and replace with LoadedProgram

* fill in deployment slot

* address review comments

* fix clippy warnings

* address review comments

* fix failures caught by sbf tests
2023-02-17 12:47:45 +01:00
Pankaj Garg 6c58033df5
API to enumerate executable program accounts in tx batch (#30371) 2023-02-16 13:29:38 -08:00
Brooks febaf36e6d
Apply clippy fixes for future rust upgrade (#30363) 2023-02-16 16:12:51 +00:00
Xiang Zhu fa22389b22
Add version and state_complete flag into bank snapshot (#30099)
* Add version and state_complate flag into bank snapshot

* Add test_get_highest_full_snapshot_slot_and_path

* fix build checks

* fix slot_deltas panic in test_get_highest_full_snapshot_slot_and_path

* make bank rooted for test_get_highest_full_snapshot_slot_and_path

* fix bank scope problem in test_get_highest_full_snapshot_slot_and_path

* minor cleanup

* misc review issues

* remove unneeded error defs and functions

* Fix state_complete macro naming

* fix snapshot_version
2023-02-15 22:38:40 -08:00
Yueh-Hsuan Chiang ce4251be99
Fix the return type of AccountsFile::account_matches_owners() (#30354)
Update AccountsFile::account_matches_owners() to return the matched index
2023-02-16 03:34:36 +00:00
Yueh-Hsuan Chiang aeb6df3507
Abstract out AppendVec into AccountsFile enum (#29815)
Abstracts out AppendVec into AccountsFile enum.
This will allow different implementations of AccountsFile that support the AccountsDB.
2023-02-15 17:24:04 -08:00
Brooks 5680c76c86
Refactors Accounts::new() fns (#30343) 2023-02-15 18:34:52 -05:00
HaoranYi 615d1a8b69
Extract BankHashLamportsVerifyConfig (#30320)
* refactor BankHashLamportsVerifyConfig

* clippy

* comments

* fix bench
2023-02-15 16:03:50 -06:00
Andrew Fitzgerald b86bfbb5c5
measure_us! use Instant and duration_to_us internally (#30339) 2023-02-15 12:43:47 -08:00
Pankaj Garg 3bea5fc326
Return index of matching owner for a program account (#30337) 2023-02-15 19:41:29 +00:00
Xiang Zhu 4909267c88
Add accounts hard-link files into the bank snapshot directory (#29496)
* Add accounts hard-link files into the bank snapshot directory

* Small adjustments and fixes.

* Address some of the review issues

* Fix compilation issues

* Change the latest slot snapshot storage from VecDeque to Option

* IoWithSourceAndFile and expanded comments on accounts

* last_slot_snapshot_storages in return value

* Update comments following the review input

* rename dir_accounts_hard_links to hard_link_path

* Add dir_full_state flag for add_bank_snapshot

* Let appendvec files hardlinking work with multiple accounts paths across multiple partitions

* Fixes for rebasing

* fix tests which generates account_path without adding run/

* rebasing fixes

* fix account path test failures

* fix test test_concurrent_snapshot_packaging

* review comments.  renamed the path setup function

* Addressed most of the review comments

* update with more review comments

* handle error from create_accounts_run_and_snapshot_dirs

* fix rebasing duplicate

* minor accounts_dir path cleanup

* minor cleanup, remove commented code

* misc review comments

* build error fix

* Fix test_incremental_snapshot_download_with_crossing_full_snapshot_interval_at_startup

* fix build error on MAX_BANK_SNAPSHOTS_TO_RETAIN

* rebase fix, update hardlink filename

* minor comment spelling fix

* rebasing fixes

* fix rebase issues; with_extension

* comments changes for review

* misc minor review issues

* bank.fill_bank_with_ticks_for_tests

* error handling on appendvec path

* fix use_jit

* minor comments refining

* Remove type AccountStorages

* get_account_path_from_appendvec_path return changed to Option

* removed appendvec_path.to_path_buf in create_accounts_run_and_snapshot_dirs

* add test_get_snapshot_accounts_hardlink_dir

* update last_snapshot_storages comment

* update last_snapshot_storages comment

* symlink map_err

* simplify test_get_snapshot_accounts_hardlink_dir with fake paths

* log last_snapshot_storages at the end of the loop
2023-02-15 09:52:07 -08:00
Brooks 2e885cf99a
Removes calls to insert_default_bank_hash_stats() in tests (#30311) 2023-02-14 15:00:38 -05:00
Jeff Washington (jwash) b9b8cd9ccc
misc. cleanup (#30295) 2023-02-14 12:00:13 -08:00
HaoranYi 27f18f96e8
typos, clippy and saturating_add_assign (#30272)
* typo

* remove clippy allow

---------

Co-authored-by: haoran <haoran@mbook>
2023-02-14 10:03:16 -06:00
Jeff Washington (jwash) 253517cba3
add combine_ancient_slots_packed (#30276)
* add combine_ancient_slots_new

* pr feedback

* implement ==
2023-02-14 06:53:31 -08:00
Jeff Washington (jwash) 9988978379
add ancient finish_combine_ancient_slots_packed (#30261) 2023-02-13 09:10:13 -08:00
Tao Zhu 60bfc2524b
implement From trait for CostTrackerError to TransactionError (#30267)
implement From trait for CostTrackerError to TransactionError
2023-02-13 11:06:39 -06:00
Jeff Washington (jwash) bcd7cf0821
add ancient write_packed_storages (#30260) 2023-02-13 07:25:47 -08:00
Jeff Washington (jwash) b3778d5044
cleanup (#30251) 2023-02-12 13:42:03 -08:00
Jeff Washington (jwash) dc605b5126
rename parameter and update comments (#30259) 2023-02-11 12:13:03 -08:00
Jeff Washington (jwash) c837af1af4
ancient: pass WriteAncientAccounts by &mut (#30257) 2023-02-11 11:41:33 -08:00
Alexander Meißner 6558c8fdc9
Refactor - Delay visibility of program un-/re-/deployment (#29654)
* Use three separate HashMaps instead of the enum TxBankExecutorCacheDiff.

* Replaces all places which deploy programs by a macro.

* Adds a feature gate.

* Adjust tests.

* Makes undeployment visible immediately.
2023-02-11 11:18:25 +01:00
Jeff Washington (jwash) 51d354defb
simplify AccountsToCombine.accounts_keep_slots (#30246) 2023-02-10 13:53:03 -08:00
Jeff Washington (jwash) a46ba32e9a
remove unused metric (#30248) 2023-02-10 13:36:22 -08:00
Brooks b3c2256799
Refactors a sort's comparator fn (#30243) 2023-02-10 15:41:55 -05:00
Jeff Washington (jwash) 33cc4cc3d5
maintain sorted order on ancient target slots (#30247) 2023-02-10 12:08:13 -08:00
Jeff Washington (jwash) 157a9d725f
add ancient pack_ancient_storages (#30235)
* add ancient pack_ancient_storages

* cleanup
2023-02-10 12:06:36 -08:00
HaoranYi 0b5ae8abe1
Refactor - simplify geyser notify book keeping code and fix total_accounts stat (#30207)
* refactor common code

* fix total_accounts stat

* clippy
2023-02-10 12:18:50 -06:00
Jeff Washington (jwash) 12411e5215
pass shrink_can_be_active through shrink fns (#30244) 2023-02-10 10:06:40 -08:00
Jeff Washington (jwash) dcb2d6c8ae
collect_sort_filter_ancient_slots takes tuning by ref (#30242) 2023-02-10 09:40:13 -08:00
Jeff Washington (jwash) 0113fe340e
add ancient write_ancient_accounts_multiple_refs (#30198) 2023-02-10 09:39:30 -08:00
Brooks d27c860249
Replaces stable sort with unstable sort (#30223) 2023-02-10 09:56:11 -05:00
Jeff Washington (jwash) 128ffbdf9b
restore test to all slot combos (#30231) 2023-02-10 06:25:37 -08:00
Ryo Onodera 3e6162e69e
Add address lookup tables to minimized snapshot (#30158)
* Add address lookup tables to minimized snapshot

* Add comment for future posterity

* Add reference to the issue

* Adjust comment a bit

Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>

---------

Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
2023-02-10 14:46:02 +09:00
Jeff Washington (jwash) fc8c590375
improve debugging test fn compare_all_accounts (#30218) 2023-02-09 15:06:09 -08:00
Jeff Washington (jwash) 639f3475f5
test and comment cleanup (#30226)
* test and comment cleanup

* pr feedback
2023-02-09 15:02:10 -08:00
Jeff Washington (jwash) db25ccba52
ancient add write_one_packed_storage (#30220) 2023-02-09 14:47:22 -08:00
ivandzen 2f9146e8c8
Replace txn_signature in ReplicaAccountInfo with transaction (#30189)
#### Current implementation of ReplicaAccountInfo restricts
possibilities for inflight account filtration
Current implementation includes transaction signature in
ReplicaAccountInfo. This approach does not allow to filter accounts by
matching other accounts in transaction in-flight (e. g. accept only
those accounts included in transactions for specific programs). Current
implementation forces to collect ALL accounts and transactions for some
period of time and perform such complex filtration afterwards.

#### Pass reference to transaction object instead of transaction
signature into ReplicaAccountInfo
Advanced in-flight filtration can be implemented in plugins by passing
reference to transaction for every update_account event. This change
doesn't bring any overhead comparing to current implementation (only
data type of reference is changed) and brings only minor changes in
source code.
2023-02-09 12:00:33 -08:00
Jeff Washington (jwash) c6695996b8
add test parameters to fix build (#30227)
#### Problem
build broken due to pr conflicts

#### Summary of Changes


Fixes #
<!-- OPTIONAL: Feature Gate Issue: # -->
<!-- Don't forget to add the "feature-gate" label -->
2023-02-09 11:56:12 -08:00
Jeff Washington (jwash) 62b93df1c7
change ancient tests to correct size (#30221)
#### Problem
fix tests to be more realistic

#### Summary of Changes
allocate correctly sized append vecs

Fixes #
<!-- OPTIONAL: Feature Gate Issue: # -->
<!-- Don't forget to add the "feature-gate" label -->
2023-02-09 11:41:36 -08:00
Jeff Washington (jwash) e0d354f542
fix bug in test fn compare_all_accounts (#30217)
#### Problem
test code compares sets of accounts after clean/shrink operations.
The indexing was off and new tests were giving false positives.
The test code was equivalent as long as everything was in the same
order.

#### Summary of Changes
Fix test code comparison indexes.

Fixes #
<!-- OPTIONAL: Feature Gate Issue: # -->
<!-- Don't forget to add the "feature-gate" label -->
2023-02-09 11:28:53 -08:00
Jeff Washington (jwash) 68b2b1badd
add ancient calc_accounts_to_combine (#30195)
#### Problem
Building new algorithm for packing ancient storage. Packing will occur
in 1 pass across multiple ancient slots.
This will be put in 1 dead code piece at a time with tests until all
pieces are present. Switch between current packing algorithm and this
new one is in a validator cli argument. Resulting append vecs are
correct and compatible (as a set) either way. When a new storage format
optimized for cold storage becomes available, it will only work with
this new packing algorithm, so the change will need to be complete prior
to the new storage format.

#### Summary of Changes
Add `ancient calc_accounts_to_combine` to separate accounts to prepare
for creating packed ancient append vecs. This will be used soon.

Fixes #
<!-- OPTIONAL: Feature Gate Issue: # -->
<!-- Don't forget to add the "feature-gate" label -->
2023-02-09 11:06:17 -08:00
Jeff Washington (jwash) a4fb1834d1
AliveAccounts includes source slot (#30208) 2023-02-09 05:57:58 -08:00
Tao Zhu 5569946a8f
correct a comment with right info (#30201) 2023-02-08 17:33:28 -06:00
Pankaj Garg 375f9ae41d
LoadedPrograms cache implementation and tests (#30139) 2023-02-08 13:24:44 -08:00
Jeff Washington (jwash) 0ca638648b
add shrink_can_be_active to remove (#30191) 2023-02-08 11:32:18 -08:00
Jeff Washington (jwash) b4fe1280b3
add Debug to some structs (#30193) 2023-02-08 10:17:07 -08:00
Jeff Washington (jwash) 427bd62642
handle_dropped_roots_for_ancient takes iter (#30190) 2023-02-08 09:40:49 -08:00
Jeff Washington (jwash) 0da4697b2f
add ancient write_ancient_accounts (#30182) 2023-02-08 09:40:17 -08:00
Jeff Washington (jwash) 5cbd6b3a74
minor cleanup (#30181) 2023-02-08 08:00:14 -08:00
Jeff Washington (jwash) 70d635127e
add `ancient collect_sort_filter_info` (#30169) 2023-02-08 07:08:20 -08:00
Jeff Washington (jwash) e14d0638e7
add ancient get_unique_accounts_from_storage_for_combining_ancient_slots (#30176) 2023-02-07 18:22:54 -08:00
Pankaj Garg d0623a38c8
API to match account owner against a set of owners (#30154) 2023-02-07 17:48:10 -08:00
Jeff Washington (jwash) bfc29a6b2f
remove storage_finder from write_accounts_to_storage (#30172)
Co-authored-by: Trent Nelson <trent@solana.com>
2023-02-07 14:44:40 -08:00
Jeff Washington (jwash) 1eb304de28
NonZeroU64 for ideal_storage_size (#30168) 2023-02-07 13:34:27 -08:00
Jeff Washington (jwash) 927da903a8
StoreTo::Storage holds storage (#30156) 2023-02-07 11:54:26 -08:00
Jeff Washington (jwash) d53c49c230
add ancient filter_ancient_slots (#30152) 2023-02-07 10:35:40 -08:00
HaoranYi 3f913e49fc
refactor rent payment order cmp (#30132) 2023-02-07 09:30:48 -06:00
HaoranYi 5dd90268b1
comments fix (#30134)
Co-authored-by: haoran <haoran@mbook>
2023-02-07 09:22:08 -06:00
Jeff Washington (jwash) db4174cbcb
ancient choose_storages_to_shrink (#30146) 2023-02-06 14:29:54 -08:00
Tyera a14473eb54
Prevent Rent-reward recipients from ending up RentPaying (#30130) 2023-02-06 12:16:36 -07:00
Jeff Washington (jwash) 01f0dcdad4
add ancient ancient filter_by_smallest_capacity and truncate_to_max_storages (#30129) 2023-02-06 11:04:53 -08:00
Jeff Washington (jwash) 8785942f56
add ancient sort_shrink_indexes_by_bytes_saved (#30123) 2023-02-05 12:14:14 -08:00
Jeff Washington (jwash) 0bbc4774d7
minor cleanup on tests (#30125) 2023-02-05 12:13:39 -08:00
Jeff Washington (jwash) 785a6e3a69
AncientSlotInfos, piece of packed ancient storage (#30119) 2023-02-03 10:53:49 -08:00
Brooks 06e801a8a5
Moves BankHashInfo into serde_snapshot (#30120) 2023-02-03 13:17:50 -05:00
Tao Zhu 4293f11cf1
feature gate to enable compute_budget::request_heap_frame on mainnetBeta (#30077) 2023-02-03 09:21:57 -06:00
Brooks 9b297ac89c
Removes {get,set}_bank_hash_info() test helper functions (#30101) 2023-02-03 10:17:38 -05:00
Jeff Washington (jwash) eeb622c4ed
test create storages can ignore TempFile (#30094) 2023-02-03 07:12:33 -08:00
Brennan 8312141f87
Move bank tests to separate file (#29912) 2023-02-02 16:32:22 -08:00
Brooks 3249e4a123
Removes {get,set}_bank_hash_info_from_snapshot() (#30087) 2023-02-02 16:50:44 -05:00
Jeff Washington (jwash) ae7803a55e
add test accounts with custom data size (#30089) 2023-02-02 10:47:12 -08:00
Jeff Washington (jwash) 890f29be0c
fix alive_bytes test fn (#30088) 2023-02-02 10:46:46 -08:00
Jeff Washington (jwash) d563d37860
combine lookups in StorableAccountsWithHashesAndWriteVersions (#30061) 2023-02-02 10:46:17 -08:00
Jeff Washington (jwash) 385a6e01f7
combine some stats into ShrinkStatsSub (#30034) 2023-02-02 06:21:36 -08:00
Brooks a6f43c2e3d
Slot 0 is not as special in set_bank_hash_info_from_snapshot() (#30071) 2023-02-02 08:57:11 -05:00
Jeff Washington (jwash) 7ea0a72cc4
total_bytes -> capacity (#30065) 2023-02-02 05:46:13 -08:00
Brooks 79e9c9f8b7
Do not populate slot 0 with default accounts delta hash/accounts hash (#30069) 2023-02-01 20:43:26 -05:00
Jeff Washington (jwash) 22afdb21ec
rename original_bytes -> capacity (#30064) 2023-02-01 16:58:41 -08:00
Xiang Zhu f107b8b607
Add slot deltas into the bank snapshot directory (#29409) 2023-02-01 16:51:32 -08:00
dependabot[bot] 232e252014
Bump serde from 1.0.144 to 1.0.152 (#29696)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
Co-authored-by: Tyera <tyera@solana.com>
2023-02-01 16:27:17 -07:00
Brooks 33165040bf
Only insert default BankHashStats in Accounts::new_from_parent() (#30063) 2023-02-01 17:47:55 -05:00
Tao Zhu 090b990e15
remove congestion multiplier from transaction fee calculation (#29828) 2023-02-01 16:26:50 -06:00
Jeff Washington (jwash) 67d3beeb35
remove unnecessary lifetime (#30019) 2023-02-01 13:18:46 -08:00
Jeff Washington (jwash) e11c22a13c
clean up remove_old_stores_shrink stats (#30018) 2023-02-01 13:18:07 -08:00
Jeff Washington (jwash) 1c4e84b8ca
impl default version of contains_multiple_slots (#30055) 2023-02-01 13:01:01 -08:00
Jeff Washington (jwash) 5769dbf36b
is_cached_store, bool -> Storage enum (#30057) 2023-02-01 12:33:27 -08:00
Tao Zhu 0cf93da4b4
remove obsoleted else-if clause (#30020) 2023-02-01 14:28:35 -06:00
Jeff Washington (jwash) 3b2c2ebf9e
add StorableAccountsBySlot to move accounts from multiple slots to 1 (#30023) 2023-02-01 12:10:12 -08:00
Jeff Washington (jwash) c8ed54acbd
simplify 2 StorableAccounts impls (#30054) 2023-02-01 12:08:28 -08:00
Brooks d048a1903f
Splits up AccountsDb::bank_hashes (#30024) 2023-02-01 14:32:35 -05:00
Jeff Washington (jwash) 27e8af9621
add pub(crate) to shrink functions (#30052) 2023-02-01 11:04:51 -08:00
Tao Zhu 7bcb3cef02
report less datapoints to block_min_prioritization_fee (#30017) 2023-02-01 11:32:36 -06:00
Jeff Washington (jwash) 5d85a34591
shrink ignores ancient slots (#30026) 2023-02-01 07:23:14 -08:00
Jeff Washington (jwash) 28510f4260
update comments on get_ancient_append_vec_capacity (#30030) 2023-02-01 07:22:34 -08:00
Jeff Washington (jwash) 3e0494051e
tests adding accounts can mark alive in index (#30029) 2023-02-01 07:22:10 -08:00
Jeff Washington (jwash) d5a7b5715c
add cli arg for choosing ancient append vec format (#30025) 2023-02-01 07:21:28 -08:00
Tao Zhu a5af54669a
Limit loaded data per transaction to a fixed cap (#29743) 2023-01-31 22:51:35 -06:00
Richard Patel 179b406acb
runtime: make {Stored,Account}Meta repr(C) (#30027)
Co-authored-by: Richard Patel <ripatel@jumptrading.com>
2023-01-31 20:13:56 -05:00
Will Hickey 04a6a631bc
Bump version to v1.16 (#30028) 2023-01-31 17:48:33 -06:00
K-anon 1e3d6349aa
Add an RPC API that can query the list of Top N secondary index keys and their sizes (#28887)
Co-authored-by: K-anon <IntokuSatori@users.noreply.github.com>
2023-01-31 13:47:03 -07:00
Richard Patel 1ca78845bb
runtime: add test_type_layout (#29987)
adds unit test asserting the type layout of structures in append_vec

---------

Co-authored-by: Richard Patel <ripatel@jumptrading.com>
Co-authored-by: brooks <brooks@solana.com>
2023-01-31 11:08:55 -05:00
Jeff Washington (jwash) 4dbde40e10
measure! -> measure_us! (#29991) 2023-01-31 07:40:50 -08:00
joeaba a12bf8c003
Update maintainers references (#29997)
* update maintainers references

* chore: update maintainers reference
2023-01-31 08:07:13 -05:00
Brooks aa72aa8779
Makes AccountsDb::bank_hashes private (#29990) 2023-01-30 23:25:19 -05:00
Brooks 005dc96bc5
serde-snapshot uses methods to access AccountsDb::bank_hashes (#29989) 2023-01-30 21:32:04 -05:00
Jeff Washington (jwash) ebf3ad5604
remove unnecessary lifetimes (#29988) 2023-01-30 14:11:10 -08:00
Jeff Washington (jwash) 8a56a856d8
refactor shrink_collect (#29982)
* refactor shrink_collect

* Update runtime/src/accounts_db.rs

Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>

---------

Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
2023-01-30 13:10:39 -08:00
Jeff Washington (jwash) 3e5ab0437f
remove create_ancient_append_vec (#29984) 2023-01-30 13:07:15 -08:00
Jeff Washington (jwash) ea6dac0556
refactor update_shrink_stats (#29983) 2023-01-30 11:11:13 -08:00
Xiang Zhu 856598969c
Account path add run parent with old path cleanup (#29942)
* Add run parent directory for accounts files

* fix test test_concurrent_snapshot_packaging

* review comments.  renamed the path setup function

* Addressed most of the review comments

* remove explict type def for map result

* handle create_accounts_run_and_snapshot_dirs error with expect

* update with more review comments

* minor fixes from review comments

* simplify account_filename option assignment

* handle error from create_accounts_run_and_snapshot_dirs

* use then instead of then_some for lazy evaluation

* Clean up files in the old account_path before trasitioning to the new run path

* try_exist and accounts_dir removing extra

* sync rmdir, is_dir check

* handle the account_path not deletable case
2023-01-30 10:26:43 -08:00
Tao Zhu 7ef720b76d
refactor: remove obsoleted function (#29964)
refactor: remove obsolated function
2023-01-30 09:16:49 -06:00
Alexander Meißner ac7d0ff633
Feature - Disable builtin loader ownership chains (#29959)
* Adds feature disable_builtin_loader_ownership_chains.

* Removes test_load_accounts_max_call_depth().
2023-01-29 19:27:49 +01:00
Alexander Meißner aa2e3487ba
Refactor - Simplify program accounts in transaction loading (#29728)
* Refactors the "!validated_fee_payer" case from an "else" branch to an early "return".

* Moves the early return upward.

* Removes empty entries.

* Adds account_found_and_dep_index.

* cargo fmt.

* Replaces call site of load_executable_accounts().

* Adjusts number of total loaded accounts in test_load_accounts_multiple_loaders().

* Removes test_accounts_account_not_found().

* Removes load_executable_accounts().

* Refactor back to built-in loader ownership chain loop.
2023-01-27 21:24:21 +01:00
Jeff Washington (jwash) 5e35823b66
add test_stake_account_consistency_with_rent_epoch_max_feature (#29915)
* add test_stake_account_consistency_with_rent_epoch_max_feature

* create_stake_account takes id

* use test_case

* reformat panic message
2023-01-27 11:50:33 -08:00
Tao Zhu 6f4fe37bd2
add cost to additional built-in programs (#29795)
* add cost to additional built-in programs
* update a test with compute-budget cost
2023-01-27 13:47:41 -06:00
Illia Bobyr 8fafbb0a06
doc: Fix documentation warnings and add some links (#29887) 2023-01-25 23:15:58 -08:00
Brooks 867d2581a6
Moves impl of bank_hash_info_at() into hash_internal_state() (#29913) 2023-01-25 22:24:51 -05:00
Brooks dde4b5d1ef
Adds AccountsDb::get_bank_hash_info() (#29908) 2023-01-25 17:01:01 -05:00
Brooks d76c598691
Snapshot serde test uses calculate_accounts_delta_hash() (#29905) 2023-01-25 16:26:15 -05:00