quic: use smallvec, save one allocation per packet
Use smallvec to hold chunks. Streams are packet-sized so we don't expect
them to have many chunks. This saves us an allocation for each packet.
* Add new StakeError variant
* Add closure to return error if EpochRewards::active
* Use error_during_epoch_rewards for Instructions that mutate stake accounts
* Use try instead of manually matching Ok/Err
* Consolidate error_during_epoch_rewards check
* Add new test helper
* Add test demonstrating which ix return StakeError::EpochRewardsActive
* Remove single-use fn
* Find the bank hash of the heaviest fork, replay if necessary.
* Make it more explicit how heaviest fork slot is selected.
* Use process_single_slot instead of process_blockstore_from_root, the latter
may re-insert banks already frozen.
* Put BlockstoreProcessError into the error message.
* Check that all existing blocks link to correct parent before replay.
* Use the default number of threads instead.
* Check whether block is full and other small fixes.
* Fix root_bank and move comments to function level.
* Remove the extra parent link check.
* Introduce SchedulingStateMachine
* Apply all typo fixes from code review
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
* Update word wrapping
* Clarify Token::assume_exclusive_mutating_thread()
* Use slice instead of &Vec<_>
* Improve non-const explanation
* Document consecutive readonly rescheduling opt.
* Make test_gradual_locking terminate for miri
* Avoid unnecessary Task::clone()
* Rename: lock_{status,result} and no attempt_...()
* Add safety comment for get_account_locks_unchecked
* Reduce and comment about Page::blocked_tasks cap.
* Document SchedulingStateMachine::schedule_task()
* Add justification of closure in create_task
* Use the From trait for PageUsage
* Replace unneeded if-let with .expect()
* Add helpful comments for peculiar crossbeam usage
* Fix typo
* Make bug-bounty-exempt statement more clear
* Add test_enfoced_get_account_locks_verification
* Fix typos...
* Big rename: Page => UsageQueue
* Document UsageQueueLoader
* Various minor cleanings for beautifier diff
* Ensure reinitialize() is maintained for new fields
* Remove uneeded impl Send for TokenCell & doc upd.
* Apply typo fixes from code review
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
* Merge similar tests into one
* Remove test_debug
* Remove assertions of task_index()
* Fix UB in TokenCell
* Make schedule_task doc comment simpler
* Document deschedule_task
* Simplify unlock_usage_queue() args
* Add comment for try_unblock() -> None
* Switch to Option<Usage> for fewer assert!s
* Add assert_matches!() to UsageQueue methods
* Add panicking test case for ::reinitialize()
* Use UsageFromTask
* Rename: LockAttempt => LockContext
* Move locking and unlocking methods to usage queue
* Remove outdated comment...
* Remove redundant fn: pop_unblocked_usage_from_task
* Document the index of task
* Clarifty comment a bit
* Update .current_usage inside try_lock()
* Use inspect_err to simplify code
* fix ci...
* Use ()...
* Rename: schedule{,_next}_unblocked_task()
* Rename: {try_lock,unlock}_{for_task,usage_queues}
* Test solana-unified-scheduler-logic under miri
* Test UB to illustrate limitation of TokenCell
* Test UB of using multiple tokens at the same time
---------
Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
* alt_bn128: simplify errors in sycalls (alt_bn128, compress, poseidon)
* add TODO for feature gate. remove validate from compress
* add feature gate
* fix one more error case
* all changes under feature gate
* revert removing from()
* return unexpected errors in lib
* add comment to remove error types, once the feature gate is activated
* remove unnecessary/impossible error
* fix mispelled comments
* runtime: core_bpf_migration: add migration path
* runtime: core_bpf_migration: add tests for migration path
* comments
* function name
* rent lamports
* bank operations ordering
* make migration method a bank method
* update deployment slot to current slot
* invoke loader deploy directly
The IP echo server currently spins up a worker thread for every thread
on the machine. Observing some data for nodes,
- MNB validators and RPC nodes look to get several hundred of these
requests per day
- MNB entrypoint nodes look to get 2-3 requests per second on average
In both instances, the current threadpool is severely overprovisioned
which is a waste of resources. This PR plumnbs a flag to control the
number of worker threads for this pool as well as setting a default of
two threads for this server. Two threads allow for one thread to always
listen on the TCP port while the other thread processes requests
* Fix: deploy program on last slot of epoch during environment change
* solana-runtime: deploy at last epoch slot test
* disable deployment of sol_alloc_free
* Move tx-batch-constructor to its own function
* use new_from_cache
---------
Co-authored-by: Alessandro Decina <alessandro.d@gmail.com>
* runtime: do fewer syscalls in remap_append_vec_file
Use renameat2(src, dest, NOREPLACE) as an atomic version of if
statx(dest).is_err() { rename(src, dest) }.
We have high inode contention during storage rebuild and this saves 1
fs syscall for each appendvec.
* Address review feedback
The default value was previously being determined down where the thread
pool is being created. Providing a default value at the CLI level is
consistent with other args, and gives an operator better visibility into
what the default will actually be