Skip to content

Merge upstream v4.4.0-beta.1 - #21

Merged
sduchesneau merged 18 commits into
release/4.xfrom
bump/agave-v4.4.0-beta.1
Oct 14, 2026
Merged

sduchesneau merged 18 commits into
release/4.xfrom
bump/agave-v4.4.0-beta.1

Conversation

@sduchesneau

@sduchesneau sduchesneau commented Oct 14, 2026 •

Copy link
Copy Markdown

Merges upstream v4.4.0-beta.1 into release/4.x (previously v4.4.0-beta.0), 15 upstream commits. The merge was clean. This PR also adds the dependency-review and check-secrets workflows that release/4.x requires, so the fork-owned files go from four to six. Tagging the merge produces v4.4.0-beta.1-fh3.0.

The Geyser plugin interface is unchanged (agave-geyser-plugin-interface = "=5.0.0"); the plugin only needs to re-pin to 4.4.0-beta.1. block_revenue_sharing (SIMD-0123) is rekeyed to Crbnc267wkJvFhYakqwWWX57sx5bkrftJLekzy6yWKLT, not activated on mainnet or testnet.

Merge with "Create a merge commit" (not squash or rebase) so the upstream parent is kept.

Testing

  • cargo check -p solana-geyser-plugin-manager -p agave-validator: passes.
  • solana-battlefield not run.

mergify Bot and others added 17 commits September 30, 2026 11:14
…rt of solana-labs#15617) (solana-labs#15622)

validator: Swallow identity not found error during wait (solana-labs#15617)

#### Problem

The RPC leader schedule endpoint now returns an error if an identity is
provided, but the identity doesn't exist in the leader schedule.

The validator `wait-for-restart-window` command uses this to figure out
if it's a good time to restart, but all validators use it, including
non-voting validators, which causes them to fail exiting.

#### Summary of changes

Swallow the new error type.

(cherry picked from commit c1f0521)

Co-authored-by: Jon C <me@jonc.dev>
… of solana-labs#15529) (solana-labs#15608)

SIMD-0123: Gate `clone_and_filter_for_vat` on feature (solana-labs#15529)

#### Problem

The Firedancer fuzzers don't work between v4.3 and v4.4 because v4.4
takes `pending_delegator_rewards` into account when figuring out how
many lamports are available for a vote account.

#### Summary of changes

Gate the lamport check behavior on the feature gate.

Since `pending_delegator_rewards` can't be incremented until the feature
gate is enabled, the current code is safe. For the same reason, this PR
doesn't actually change the behavior under the feature gate.

However, the random data generated by the fuzzers creates a divergence
in behavior between the two versions.

(cherry picked from commit 7b0c0f3)

Co-authored-by: Jon C <me@jonc.dev>
…solana-labs#15733) (solana-labs#15735)

ci: use github app token to create version bump PRs (solana-labs#15733)

(cherry picked from commit 03a9d5a)

Co-authored-by: Yihau Chen <yihau.chen@icloud.com>
…backport of solana-labs#15682) (solana-labs#15792)

ci: add bypass user list to the buildkite triggering pipeline (solana-labs#15682)

(cherry picked from commit 2612b5c)

Co-authored-by: Yihau Chen <yihau.chen@icloud.com>
…ort of solana-labs#15684) (solana-labs#15790)

ci: url encode username in bulidkite triggering piepline (solana-labs#15684)

(cherry picked from commit 8769cd3)

Co-authored-by: Yihau Chen <yihau.chen@icloud.com>
…backport of solana-labs#15544) (solana-labs#15751)

* Perf - Checks the ELF header of loader-v1/v2 programs earlier (solana-labs#15544)

* Checks the ELF header of loader-v1/v2 programs earlier in get_program_deployment_slot().

* Review feeback by @buffalojoec

* Review feedback by @bw-solana

(cherry picked from commit affd9f1)

# Conflicts:
#	svm/Cargo.toml

* Fixes git merge conflicts.

---------

Co-authored-by: Alexander Meißner <AlexanderMeissner@gmx.net>
… of solana-labs#15804) (solana-labs#15838)

bigtable: don't upload past the blockstore's max root (solana-labs#15804)

* bigtable: don't upload past the blockstore's max root

Under Alpenglow, votor publishes a new root to the commitment cache
(`update_commitment_cache`) a few milliseconds before the bank forks
controller writes the root markers with `Blockstore::set_roots`. The
upload service took the end of each pass from the commitment cache root.
When every slot in a pass's range is still unrooted in the blockstore at
that moment, as with the first block after a fully skipped leader
window, `upload_confirmed_blocks` finds no rooted slots, logs "Ledger has
no slots from A to B" and returns B as done. The service then moves past
the block and never uploads it. A single new root doesn't hit this
because the service waits until the range spans more than one slot, and
by then the marker is written.

Cap the end of each pass at `blockstore.max_root()`, which only advances
after the root batch is written. Under TowerBFT the blockstore roots are
written before the commitment cache root moves, so the cap changes
nothing there.

The range computation moves into `next_upload_end_slot` so a test can
run the service's passes across the race. The test fails without the
cap ("slot 156 was skipped").



* bigtable: drop the commitment cache from the upload bound

With passes capped at `blockstore.max_root()`, the commitment cache root
adds nothing. The cache was only a stand-in for the node's root here
(solana-labs#21401). Under TowerBFT it never leads `blockstore.max_root()`, because
replay writes the blockstore roots before it updates the commitment
cache. Under Alpenglow it can lead, which is the race fixed in the
previous commit. At startup `max_complete_transaction_status_slot`
already starts at `blockstore.max_root()`.

Bound each pass by `max_complete_transaction_status_slot` and
`blockstore.max_root()` only, both of which describe what the blockstore
holds. Drop the now-unused `block_commitment_cache` parameter from
`BigTableUploadService::new` and `new_with_config`. The test now models
the race as transaction statuses complete through the new root while
its root marker isn't written yet.



* bigtable: test `next_upload_end_slot` directly

With the commitment cache gone, the race is fully described by
`next_upload_end_slot`, so the test no longer needs to run a pass
through `upload_confirmed_blocks` against an unconnected emulator
client. Assert on the computed end slot instead, and cover the
start-slot boundaries: a pass starting before the highest written root
runs up to it, and one starting at that root waits for the next root.
Also shorten the `next_upload_end_slot` doc comment.



* bigtable: simplify the `next_upload_end_slot` doc comment

Describe the bound in terms of the blockstore alone.



---------


(cherry picked from commit 641770c)

Co-authored-by: Justin Starry <justin@anza.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…lana-labs#15795) (solana-labs#15812)

* vote-program: Disable `DepositDelegatorRewards` (solana-labs#15795)

#### Problem

The `DepositDelegatorRewards` instruction in its current form has
issues, as outlined in this [SIMD
Discussion](solana-foundation/solana-improvement-documents#686).

#### Summary of changes

Return an error from the instruction processor.

Also, rekey SIMD-0123, since the behavior under its feature gate is
changing.

#### Testing

New test to make sure error is always returned.

(cherry picked from commit 70cbde8)

# Conflicts:
#	runtime/src/bank/tests.rs

* Update test hash

---------

Co-authored-by: Jon C <me@jonc.dev>
…ana-labs#15752)

gossip: reduce bufferbloat (solana-labs#15636)

Confine ingress channel to 2 sigverify iterations
Reduce sigverify iteration batch to <200ms
Reduce post-sigverify consume channel to 4 rounds of sigverify.

(cherry picked from commit 476e8d0)

Co-authored-by: Alex Pyattaev <alex.pyattaev@anza.xyz>
…lana-labs#15810)

runtime: ebpp relax relatch (solana-labs#15766)

(cherry picked from commit 619625e)

Co-authored-by: Joe Caulfield <joe.caulfield@anza.xyz>
…olana-labs#15811) (solana-labs#15833)

program-runtime: extract: use rooted access slot (solana-labs#15811)

(cherry picked from commit 3453d0f)

Co-authored-by: Joe Caulfield <joe.caulfield@anza.xyz>
solana-labs#15886) (solana-labs#15891)

* fix: make Alpenglow slot timing available on Windows (solana-labs#15886)

(cherry picked from commit 53b462b)

# Conflicts:
#	core/src/banking_stage/progress_tracker.rs

* resolve conflicts

---------

Co-authored-by: Andrew Fitzgerald <apfitzge@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@sduchesneau
sduchesneau marked this pull request as ready for review October 14, 2026 15:52
release/4.x requires the dependency-review and check-secrets status checks.
@sduchesneau
sduchesneau merged commit 8ee1a05 into release/4.x Oct 14, 2026
2 checks passed
@sduchesneau
sduchesneau deleted the bump/agave-v4.4.0-beta.1 branch October 14, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants