Query Quick Access UI providers in one trip to the display thread - #4327
Open
vogella wants to merge 1 commit into
Open
Query Quick Access UI providers in one trip to the display thread#4327vogella wants to merge 1 commit into
vogella wants to merge 1 commit into
Conversation
Contributor
Test Results 858 files 858 suites 52m 4s ⏱️ Results for commit 3f3cfbf. ♻️ This comment has been updated with latest results. |
vogella
force-pushed
the
vogella/quickaccess-batch-ui-providers
branch
from
September 3, 2026 16:51
a60f3c1 to
857adf5
Compare
vogella
added a commit
to vogella/eclipse.platform.ui
that referenced
this pull request
Sep 3, 2026
…rip to the display thread
vogella
added a commit
to vogella/eclipse.platform.releng.aggregator
that referenced
this pull request
Sep 3, 2026
Upstream master plus these PRs: eclipse.jdt.core -> https://github.com/vogella/eclipse.jdt.core.git vogella-master @ a4eb5e4ef8 (eclipse-jdt/eclipse.jdt.core#5309) eclipse.platform.ui -> https://github.com/vogella/eclipse.platform.ui.git vogella-master @ 51e813eec6 (eclipse-platform/eclipse.platform.ui#4260 eclipse-platform/eclipse.platform.ui#4304 eclipse-platform/eclipse.platform.ui#4305 eclipse-platform/eclipse.platform.ui#4326 eclipse-platform/eclipse.platform.ui#4327) eclipse.jdt.ui -> https://github.com/vogella/eclipse.jdt.ui.git vogella-master @ 2073494827 (eclipse-jdt/eclipse.jdt.ui#3142 eclipse-jdt/eclipse.jdt.ui#3131 eclipse-jdt/eclipse.jdt.ui#3127 eclipse-jdt/eclipse.jdt.ui#3058) eclipse.pde -> https://github.com/vogella/eclipse.pde.git vogella-master @ 55877fce19 (eclipse-pde/eclipse.pde#2463 eclipse-pde/eclipse.pde#2444 eclipse-pde/eclipse.pde#2443)
vogella
force-pushed
the
vogella/quickaccess-batch-ui-providers
branch
from
September 4, 2026 14:15
857adf5 to
1476b23
Compare
Seven of the ten providers need UI access and each was fetched with its own syncExec, so a compute cost seven round trips to a display thread that the redraws were keeping busy. Query them in a single syncExec instead, and give the display thread back once the pass has held it for 20ms so a slow provider still cannot freeze the UI for the whole batch. The rest are picked up by the next pass. Providers are seeded into the result map up front, so splitting them into a background group and a UI group does not change the order they appear in. Assisted-by: multiple AI agents and layers of automated tooling 🤖
vogella
force-pushed
the
vogella/quickaccess-batch-ui-providers
branch
from
September 4, 2026 15:09
1476b23 to
3f3cfbf
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Stacks on #4326, whose commit is included here; review that one first. The change itself is the second commit only.
Seven of the ten Quick Access providers need UI access and each was fetched with its own
syncExec, so a single compute cost seven round trips to a display thread the redraws were keeping busy. They are now queried in onesyncExecthat gives the display thread back once it has held it for 20ms, so a slow provider still cannot freeze the UI for a whole batch and the rest are picked up by the next pass. Providers are seeded into the result map up front so splitting them into a background group and a UI group does not change the order results appear in.This deliberately walks back part of e509ee5, which replaced batching with per-provider streaming to stop the UI thread being held for a whole batch. The time budget is what makes both possible; keeping it a separate commit means it can be reverted without taking the flakiness fix in #4326 with it.
Measured on Linux under Xvfb with the three refs interleaved over three rounds, medians:
QuickAccessDialogTest13.2s on master, 9.8s with #4326, 8.5s with this change. Theorg.eclipse.ui.tests.quickaccesssuite is green (44 tests). No test exercises a genuinely slow UI provider, so the 20ms budget is reasoned rather than measured.