Skip to content

Giuseppelillo/diskless switch optimization#602

Draft
giuseppelillo wants to merge 5 commits into
mainfrom
giuseppelillo/diskless-switch-optimization
Draft

Giuseppelillo/diskless switch optimization#602
giuseppelillo wants to merge 5 commits into
mainfrom
giuseppelillo/diskless-switch-optimization

Conversation

@giuseppelillo
Copy link
Copy Markdown
Contributor

Delete this text and replace it with a detailed description of your change. The
PR title and body will become the squashed commit message.

If you would like to tag individuals, add some commentary, upload images, or
include other supplemental information that should not be part of the eventual
commit message, please use a separate comment.

If applicable, please include a summary of the testing strategy (including
rationale) for the proposed change. Unit and/or integration tests are expected
for any behavior change and system tests should be considered for larger
changes.

@giuseppelillo giuseppelillo force-pushed the giuseppelillo/diskless-switch-optimization branch from 8e97476 to 476de41 Compare May 20, 2026 15:38
@giuseppelillo giuseppelillo force-pushed the giuseppelillo/rename-diskless-switch branch from bd841fb to 17a898e Compare May 20, 2026 15:41
@giuseppelillo giuseppelillo force-pushed the giuseppelillo/diskless-switch-optimization branch from 476de41 to 42cc584 Compare May 20, 2026 15:51
@giuseppelillo giuseppelillo force-pushed the giuseppelillo/rename-diskless-switch branch from 0591cb6 to 3990aeb Compare May 21, 2026 07:24
Base automatically changed from giuseppelillo/rename-diskless-switch to main May 21, 2026 07:24
`seal()` is invoked from multiple paths (sealTopicPartitions,
applyLocalLeadersDelta and applyLocalFollowersDelta) and is intentionally
idempotent, but it always grabbed `leaderIsrUpdateLock` in write mode --
contending with the read lock taken on every append. Read the @volatile
`_sealed` flag first and only take the lock on the first transition.
Rewrite `getClassicToDisklessStartOffset` to use nullable lookups instead of
wrapping each step in `Option`, since this method is used on fetch and
offset-listing paths.
Cache the diskless-topic decision in leader and follower transition loops and
derive consolidating-diskless status from it. This avoids repeated topic config
lookups while applying metadata deltas.
In the diskless follower transition path, test `seal >= 0` before calling
`logManager.getLog`. Fully switched partitions can then skip the local-log
map lookup entirely.
When a partition is already tracked, re-drive the existing state before
creating a new WaitingForReplication listener. This keeps duplicate
registrations cheap while preserving the existing re-evaluation behavior.
@giuseppelillo giuseppelillo force-pushed the giuseppelillo/diskless-switch-optimization branch from 42cc584 to 24b8f00 Compare May 22, 2026 12:37
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.

1 participant