-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Threadpool merge scheduler #120869
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
albertzaharovits
merged 236 commits into
elastic:main
from
albertzaharovits:threadpool-merge-scheduler-sort-all-merges-take-2
Mar 18, 2025
Merged
Threadpool merge scheduler #120869
Changes from all commits
Commits
Show all changes
236 commits
Select commit
Hold shift + click to select a range
bf557d2
ExecutorMergeScheduler
albertzaharovits a3f87df
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits f5a1a8d
[CI] Auto commit changes from spotless
f0b72fe
wrap for merge in the executor merge scheduler
albertzaharovits 9b03950
spotless
albertzaharovits 26e4043
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits aba69d0
Fix InternalEngineTests
albertzaharovits 52796b5
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits c0667bf
implemented Throttling
albertzaharovits 2da753f
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits 2c8dc7f
[CI] Auto commit changes from spotless
81cc0f1
Checkstyle
albertzaharovits f58120f
Fix threadpool size for SnapshotResiliencyTests
albertzaharovits 5ca992d
Spotless
albertzaharovits 3c203cb
Nit
albertzaharovits 6c21654
Implemented max thread setting
albertzaharovits 68079d9
Throttling ?
albertzaharovits 7b68ba9
Checkstyle
albertzaharovits 9e467a1
Indexing throttling !
albertzaharovits a8f5297
Better throttling logging
albertzaharovits 928fd32
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits 3f5b4a8
Don't wrap errors during merging
albertzaharovits 0e714a1
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits 0297cce
Merge branch 'main' into threadpool-merge-scheduler
albertzaharovits 2b79809
Refresh config
albertzaharovits 57c2a5c
Nit
albertzaharovits 60a71b8
WIP
albertzaharovits 68db209
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges
albertzaharovits 4099ac5
IO throttling
albertzaharovits 5554bc2
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges
albertzaharovits 17b682f
[CI] Auto commit changes from spotless
f3506da
this-escape
albertzaharovits 6a3911a
Unregister
albertzaharovits 00070cf
Sort merge schedulers
albertzaharovits 0cf8b0c
Rename to v1
albertzaharovits f6ed56d
Hmmm, looks OK
albertzaharovits d1fb28d
Rename WIP
albertzaharovits d8ca2a9
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits ef0d757
rename in progress
albertzaharovits 35a5ef6
Rename in progress 2
albertzaharovits 33bd59c
Done?
albertzaharovits 715c7e1
FollowingEngineTests.java
albertzaharovits 2b2c790
[CI] Auto commit changes from spotless
25d9eef
Ooops set IO rate only if merge task supports it
albertzaharovits 27bffb2
remove mergeDone from onFailure
albertzaharovits 573084d
Execute not submit!
albertzaharovits c87931e
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 3857959
synchronizedSet in ThreadPoolMergeQueue
albertzaharovits 5dcf91b
ConcurrentCollections.newConcurrentSet()
albertzaharovits c5b05e5
submitMergeTask
albertzaharovits 932f3ce
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 7b52d8e
Ooops
albertzaharovits a315198
remove explicit unthrottled IO rate
albertzaharovits cb95685
assert estimated merge bytes is set
albertzaharovits 6a96a02
Remove ThreadLocal<MergeRateLimiter> onGoingMergeRateLimiter
albertzaharovits 60b7b3a
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits d170de8
Ooops
albertzaharovits 4c974af
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits d98f350
Node level setting
albertzaharovits f3c6d5f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 7a84fdf
[CI] Auto commit changes from spotless
cf11da1
Register setting
albertzaharovits 69fc3fc
NOOP
albertzaharovits 67c9a42
revert typo
albertzaharovits 236a6db
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits aac7490
InternalTestCluster random merge scheduler
albertzaharovits bafc31b
IT
albertzaharovits 9482d24
Do not build the thread pool executor if the merge scheduler is not used
albertzaharovits b8cdc13
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits da0a9e3
[CI] Auto commit changes from spotless
04f82ba
Remove estimated merge bytes assertion
albertzaharovits 37b9f81
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 42ee5a9
Remove unused random setting in test cluster
albertzaharovits 5dc5d77
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 22df845
[CI] Auto commit changes from spotless
08e272a
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 26037ba
Update docs/changelog/120869.yaml
albertzaharovits 59ce648
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits d70ba6c
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 838cea7
Address review comments 1
albertzaharovits 2b2c60d
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits b16307a
EngineThreadPoolMergeScheduler
albertzaharovits 89eb0d7
enable/disable indexing throttling
albertzaharovits a9f4823
Update comment
albertzaharovits 5e1b508
AtomicLong for merge start time
albertzaharovits c74d9e8
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 8ad122f
[CI] Auto commit changes from spotless
6ae7425
no-op onFailure
albertzaharovits 680868e
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 779eace
Checkstyle
albertzaharovits 6304852
make MergeTask a Runnable rather than an AbstractRunnable
albertzaharovits 8d2c382
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 189b1b7
InternalEngineMergeIT
albertzaharovits 436ef52
Assert empty merge queue after internal IT
albertzaharovits 57ad622
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits c3d4001
Random merge queue in RefreshListenersTests
albertzaharovits b943275
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 4fdd97f
Fix activeIOThrottledMergeTasksCount
albertzaharovits 9f103e1
comment on maybeUpdateTargetMBPerSec
albertzaharovits 32dfaf8
targetIORateBytesPerSec
albertzaharovits 3e4f726
maybeUpdateIORateBytesPerSec
albertzaharovits 091dcba
submittedIOThrottlingMergeTasks
albertzaharovits a0874ee
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 79f8462
Nits
albertzaharovits f2b1472
ESIntegTestCase#getShardSegments
albertzaharovits 9cb4f48
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 5f9a293
[CI] Auto commit changes from spotless
9d2d29d
Closing not quite there....
albertzaharovits 1e78f21
closing WIP2
albertzaharovits 137b8f5
Closeable finally sorted out
albertzaharovits 2d42ded
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits a2a6362
Maybe
albertzaharovits 1348863
Avoid wait/notify
albertzaharovits cc24fce
[CI] Auto commit changes from spotless
8bd1d7d
Fix close
albertzaharovits 0431299
Nits
albertzaharovits 2b14346
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 6401d86
[CI] Auto commit changes from spotless
b09863a
Rename ThreadPoolMergeQueue -> ThreadPoolMergeExecutorService
albertzaharovits 2614b5d
Nit
albertzaharovits 5122b7f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 88e8754
[CI] Auto commit changes from spotless
5ae44c5
Fixed close after removing wait/notify
albertzaharovits b2e65a2
Handle aborted merge tasks at any point
albertzaharovits feed4ca
synchronized close
albertzaharovits ee0e3e2
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits b0e2da0
Nits
albertzaharovits 257a13f
[CI] Auto commit changes from spotless
12944a5
Sometimes merges are disabled
albertzaharovits 795c9b0
[CI] Auto commit changes from spotless
8bb890c
Rename
albertzaharovits 9b09dba
Run merges when aborted too
albertzaharovits 28d96f2
Nits
albertzaharovits dcd2af1
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 519c48e
Simple tests
albertzaharovits c15785f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 79ccc74
[CI] Auto commit changes from spotless
822501b
testBackloggedMergeTasksAreAllExecutedExactlyOnce
albertzaharovits 6931a95
[CI] Auto commit changes from spotless
a76744a
Nit
albertzaharovits ba4c7ee
WIP
albertzaharovits f163f36
testBackloggedMergeTasksExecuteInSizeOrder
albertzaharovits 66fa090
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 4eb5707
[CI] Auto commit changes from spotless
23ae2b4
synchronized (shouldThrottleIncomingMerges)
albertzaharovits 93ea664
test nits
albertzaharovits e215fae
Nits
albertzaharovits 9729e9c
testIORateAdjustedForNewlySubmittedTasks
albertzaharovits a4da44a
[CI] Auto commit changes from spotless
48dce91
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 68c9bcf
testIORateAdjustedForSubmittedTasksWhenExecutionRateIs*
albertzaharovits 58fa5b3
[CI] Auto commit changes from spotless
9f9fc86
Nit
albertzaharovits dce963f
testThreadPoolStatsWithBackloggedMergeTasks
albertzaharovits 6da15aa
[CI] Auto commit changes from spotless
2002d0a
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 30e4860
Fix RetrySearchIntegTests
albertzaharovits cd39b81
testMergeTasksRunConcurrently
albertzaharovits 9e1215a
[CI] Auto commit changes from spotless
769e43b
Fix testThreadPoolStatsWithBackloggedMergeTasks
albertzaharovits aeca6b8
Test nits
albertzaharovits 86e6117
Test method name nit
albertzaharovits 261902e
testIORateAdjustedForRunningTasks
albertzaharovits 7f6ce86
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 155c110
Ooops remove +1 from floor/ceiling
albertzaharovits d0a4a3f
Test comments
albertzaharovits 31b0867
testTargetIORateChangesWhenSubmittingMergeTasks
albertzaharovits 0003f10
testMergesExecuteInSizeOrder
albertzaharovits 321a332
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 553b08a
[CI] Auto commit changes from spotless
dc80bef
Test nit
albertzaharovits 34ca0fa
testMergeSourceWithFollowUpMergesRunSequentially
albertzaharovits fda3f86
[CI] Auto commit changes from spotless
3586ee1
test nit comments
albertzaharovits 1fa7ba8
testMergesRunConcurrently
albertzaharovits 0b55e35
[CI] Auto commit changes from spotless
054fda0
Move catch (InterruptedException e) in ThreadPoolMergeExecutorService
albertzaharovits 0959714
Comment about interrupt
albertzaharovits e75c94c
comment on 0 for estimatedMergeBytes
albertzaharovits e57f06b
testSchedulerCloseWaitsForRunningMerge
albertzaharovits 910289f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 669a87e
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 34ab7f6
abortOnGoingMerge -> abort
albertzaharovits 669b349
Nit
albertzaharovits c2b0cce
nits
albertzaharovits d03d808
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 1d7a94e
currentlyRunningMergeTasks -> runningMergeTasks
albertzaharovits d975a1c
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits c35518a
nit
albertzaharovits a217d12
ThreadPoolMergeScheduler.Schedule schedule = smallestMergeTask.schedu…
albertzaharovits 1fba8a1
[CI] Auto commit changes from spotless
7ac3328
currentlySubmittedIOThrottledMergeTasksCount -> ioThrottledMergeTasks…
albertzaharovits fe7e9eb
Fix ThreadPoolMergeExecutorServiceTests
albertzaharovits 171fc22
[CI] Auto commit changes from spotless
79e6abf
Enhance ThreadPoolMergeExecutorServiceTests post MergeTask#abort
albertzaharovits a25940d
Checkstyle
albertzaharovits 507896e
AtomicIORate
albertzaharovits eb6279e
[CI] Auto commit changes from spotless
79030ed
AtomicIORate
albertzaharovits 0d65aeb
Ooops
albertzaharovits b6f3f0a
testEnqueuedAndBackloggedMergesAreStillExecutedWhenThreadPoolIsShutdown
albertzaharovits 3ca893f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits c82a4d9
[CI] Auto commit changes from spotless
7c9729c
Checkstyle main
albertzaharovits 79a4652
Remove @Before from ThreadPoolMergeSchedulerTests
albertzaharovits b7fd765
simple tests for backlogging and reenqueueing
albertzaharovits cc71070
[CI] Auto commit changes from spotless
660a2a6
Update server/src/test/java/org/elasticsearch/index/engine/ThreadPool…
albertzaharovits cb99c07
Assert executors are terminated
albertzaharovits 4f19df6
force merge with expunge deletes is not merging down to one segment only
albertzaharovits 0019f58
Nit
albertzaharovits 76dab39
Update server/src/test/java/org/elasticsearch/index/engine/ThreadPool…
albertzaharovits 8005779
10
albertzaharovits 77ce8b4
Better way to assert that IO rate is set for running merge tasks
albertzaharovits 1ffbfbe
Ooops
albertzaharovits 46e4471
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 4d4fd7f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 2ad13b3
Randomly set USE_THREAD_POOL_MERGE_SCHEDULER_SETTING
albertzaharovits 55c142d
[CI] Auto commit changes from spotless
169e06b
Fix randomization of thread pool based merge scheduler
albertzaharovits 0918dcc
[CI] Auto commit changes from spotless
15b3e4c
ThreadPoolMergeSchedulerStressTestIT
albertzaharovits 5ce463f
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits dc85b15
[CI] Auto commit changes from spotless
f3e7ffb
Done ThreadPoolMergeSchedulerStressTestIT
albertzaharovits 40631b3
Also run a force merge at the end
albertzaharovits a728b6a
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 0e300a7
Ensure merge threads are blocked
albertzaharovits e4216d2
ThreadPoolMergeSchedulerStressTestIT no static
albertzaharovits 4d0cab2
[CI] Auto commit changes from spotless
a3f73b7
Meh ThreadPoolMergeSchedulerStressTestIT
albertzaharovits b187e1c
force merge without max num segments
albertzaharovits cec66c5
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits 1a7db64
Remove segments count before merging caught up
albertzaharovits ad6d7b2
[CI] Auto commit changes from spotless
4d23a54
Merge branch 'main' into threadpool-merge-scheduler-sort-all-merges-t…
albertzaharovits File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| pr: 120869 | ||
| summary: Threadpool merge scheduler | ||
| area: Engine | ||
| type: feature | ||
| issues: [] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.