Several commands call load_and_process_ledger() which can fail in a
number of ways. These callers currently all handle the result in the
same way by matching the return Result:
- The Ok(_) case uses the returned types as normal
- The Err(_) case prints an error message and exits
This error handling is redundant, and a helper could remove the
duplicate code. So, this PR adds a wrapper around that checks the
result and unwraps OR prints error messages and exits.
load_and_process_ledger() performs many checks and sub-operations that
can fail. The current error handling prints an error message and exits
immediately. The long error/help messages written inline add clutter
to the functions actual implementation.
This PR creates a new error enum for all of these previous error
conditions, and bubbles up the error to let the caller decide what to
do instead of exiting immediately.
These entries are legacy code at this point; however, older release
branches require these entries to be present. Also, while it would be
nice to clean up these entries immediately, they only occupy a small
amount of space so having them linger a little longer isn't a big deal.
#### Problem
HotAccountOffset::new() might return Err for invalid offset, and this
part needs some test coverage.
#### Summary of Changes
Add unit-tests for checking invalid HotAccountOffset.
* fix grammatical error in Incident Response Process section
* Fix typo in setup instructions
* Fixed grammatical errors in documentation: corrected article usage, pluralization, and singular form in database reference
* Fix typos in documentation: Correct 'In oder' to 'In order', fix 'enviroment' to 'environment', correct 'reults' to 'results' in Ping Results section, and change 'engress' to 'egress' in CUDA section.
* Fix grammatical errors in documentation
* Fix grammatical issues in documentation
Correct subject-verb agreement in transaction balance description and clarify execution of instructions in a transaction.
* Update macro to be a complete sentence
* Update punctuation/spaces to match new macro
* Remove repetitive 'address' usage and correct other verbiage
* Improve a couple withdrawal-recipient messages
* Fix wording
* Review comments
#### Problem
The current naming and the code comments for HOT_ACCOUNT_OFFSET_ALIGNMENT
aren't really reflecting its role as pointed out in #34335.
#### Summary of Changes
This PR renames HOT_ACCOUNT_OFFSET_ALIGNMENT to HOT_ACCOUNT_ALIGNMENT
as it's the hot account instead of hot account offset needs to be aligned.
In addition, improve the comment block for HOT_ACCOUNT_ALIGNMENT.
#### Problem
Hot and cold accounts storage have different implementations of
their offsets. As a result, a single struct AccountOffset isn't suitable
to describe the offsets used by hot and cold accounts storage.
#### Summary of Changes
This PR makes AccountOffset a trait. On top of that, introduces
HotAccountOffset that implements AccountOffset.
#### Test Plan
Updated existing unit-tests.
* tune ancient append vec size to 130M
* fix a test and get rid of the assert since it is covered in the test
* use 128M
* assert max append vec size for ancient append vec
---------
Co-authored-by: HaoranYi <haoran.yi@solana.com>
* feat: moved common docs to repo
* refactor: removed sidebar items
* refactor: removed unused images
* fix: terminology link
* fix: introduction links
* fix: developing links
* refactor: fixed assorted links
* fix: added back the home index
* refactor: home page links
* refactor: primary links
* fix: links
* fix: updated existing redirects
* feat: added new redirects
* refactor: moved cli index file to cli folder
* feat: turned breadcrumbs on
* feat: auto generated cli sidebar
* refactor: page titles
* feat: added usage and wallets categories
* refactor: moved wallet-guide/cli
* style: page titles
* refactor: renamed file to install
* style: page title
* refactor: relocated file to cli/usage/index.md
* style: page title
* refactor: relocat detailed usage generator for cli commands
* refactor: relocated clie usage files
* refactor: relocated paper wallet file
* refactor: relocated file system wallet doc
* feat: added hardware wallet category
* refactor: relocated hardware wallet overview
* refactor: relocated ledger wallet doc
* style: clie wallet titles
* refactor(revert): relocated cli usage doc
* refactor: relocated to examples
* style: cli examples category title
* style: usage doc title
* refactor: relocated cli intro doc
* style: category title
* refactor: renamed file
* refactor: renamed file
* fix: cli links
* refactor: relocated file
* refactor: relocated files
* fix: more cli links
* refactor: sidebar order
* fix: final cli links?
* refactor: proposals
* refactor: split sidebars
* refactor: removed unused icons
* refactor: relocated file
* refactor: relocated file
* refactor: relocated file
* refactor: relocated file
* feat: added architecture page
* refactor: reloacted filed
* refactor: adjusted header links
* style: sidebar labels
* feat: clusters sidebar details
* style: sidebar label
* refactor: relocate file
* refactor: relocated files
* refactor: relocated files
* refactor: relocated files
* style: validator sidebar
* style: sidebar styles
* refactor: internal links
* style: sidebar order
* fix: internal links
* feat: master sidebar
* refactor: removed unneeded h2
* fix: link redirects
* refactor: relocated pages
* style: runtime links
* refactor: simplified runtime redirects
* fix: internal redirect
* refactor: moved proposals to dropdown
* docs: Removes accounts-on-ramdisk section (#33655)
* RPC: update websocket docs (#33460)
* [rpc]: update websocket docs
* rename rewards to showRewards
* add remaining optional fields for slotsUpdates
* update block subscription showRewards
* Change getHealth to compare optimistically confirmed slots (#33651)
The current getHealth mechanism checks a local accounts hash slot vs.
those of other nodes as specified by --known-validator. This is a
very coarse comparison given that the default for this value is 100
slots. More so, any nodes using a value larger than the default
(ie --incremental-snapshot-interval 500) will likely see getHealth
return status behind at some point.
Change the underlying mechanism of how health is computed. Instead of
using the accounts hash slots published in gossip, use the latest
optimistically confirmed slot from the cluster. Even when a node is
behind, it is able to observe cluster optimistically confirmed by slots
by viewing votes published in gossip.
Thus, the latest cluster optimistically confirmed slot can be compared
against the latest optimistically confirmed bank from replay to
determine health. This new comparison is much more granular, and not
needing to depend on individual known validators is also a plus.
* build(deps): bump @babel/traverse from 7.19.6 to 7.23.2 in /docs (#33726)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.19.6 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* docs: move rpc info to rpc docs (#33723)
docs: link fixes
docs: link fixes
docs: link fixes
* Fix typos in documentation for Secp256k1 native program (#33796)
* docs: outline requirement of stake in order to vote (#33842)
* docs: outline requirement of stake in order to vote
* pr feedback: move stake section up
* chore: fix some typos (#33833)
* fix spelling of "retrieved"
* fix spelling of "should"
* fix spelling of "comparisons"
* docs: updating apt install to apt upgrade (#33920)
* Fix some typo in the documentation (#34058)
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
* fix: internal links
* refactor: removed rpc api docs
* refactor: removed rpc sidebar
* fix: updated remaining rpc api links
* refactor: removed final rpc /api route
* refactor: removed dangling component files
* refactor: changed copyright
* fix: dangling ordered list
* refactor: wording around solana docs
* feat: home page content
* refactor: updated docs url
* Link to latest version of the off-chain message signing proposal in the docs (#34329)
* docs: (cli) minor updates to deploy-a-program.md (#34307)
* docs: (cli) minor updates to deploy-a-program.md
* address review comments
* remove unnecessary impl details from the docs about deploy command upgrade flow
* clarify program redeploy section
---------
Co-authored-by: norwnd <norwnd>
* refactor: removed GA
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Brooks <brooks@solana.com>
Co-authored-by: Joe C <joe.caulfield@solana.com>
Co-authored-by: steviez <steven@solana.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jacob Creech <82475023+jacobcreech@users.noreply.github.com>
Co-authored-by: Nick Guo <1387955+nickguo@users.noreply.github.com>
Co-authored-by: Ashwin Sekar <ashwin@solana.com>
Co-authored-by: Kevin Heavey <24635973+kevinheavey@users.noreply.github.com>
Co-authored-by: Max Kaplan <max@maxkaplan.me>
Co-authored-by: hugo-syn <61210734+hugo-syn@users.noreply.github.com>
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
Co-authored-by: norwnd <112318969+norwnd@users.noreply.github.com>
* ci: Test anchor-spl during downstream build
* Also test anchor-client
* Update scripts/build-downstream-anchor-projects.sh
Co-authored-by: acheron <98934430+acheroncrypto@users.noreply.github.com>
* Specify features to use in build-sbf
---------
Co-authored-by: acheron <98934430+acheroncrypto@users.noreply.github.com>
* Add allow_commission_decrease_at_any_time feature which will allow
vote account commission to be lowered at any time during the epoch
regardless of the commission_updates_only_allowed_in_first_half_of_epoch
feature. Fixes#33843.
SIMD: 0080
* Remove unused `feature_set` import
---------
Co-authored-by: Jon Cinque <me@jonc.dev>
* Add checks to decide which SDK crate to use
* Make module only available in non-program environments
* Remove `solana-sdk` export and only export from `solana-program`