Skip to content

Query Quick Access UI providers in one trip to the display thread - #4327

Open
vogella wants to merge 1 commit into
eclipse-platform:masterfrom
vogella:vogella/quickaccess-batch-ui-providers
Open

Query Quick Access UI providers in one trip to the display thread#4327
vogella wants to merge 1 commit into
eclipse-platform:masterfrom
vogella:vogella/quickaccess-batch-ui-providers

Conversation

@vogella

@vogella vogella commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

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 one syncExec that 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: QuickAccessDialogTest 13.2s on master, 9.8s with #4326, 8.5s with this change. The org.eclipse.ui.tests.quickaccess suite is green (44 tests). No test exercises a genuinely slow UI provider, so the 20ms budget is reasoned rather than measured.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Test Results

   858 files     858 suites   52m 4s ⏱️
 8 280 tests  8 037 ✅ 243 💤 0 ❌
20 709 runs  20 039 ✅ 670 💤 0 ❌

Results for commit 3f3cfbf.

♻️ This comment has been updated with latest results.

@vogella
vogella force-pushed the vogella/quickaccess-batch-ui-providers branch from a60f3c1 to 857adf5 Compare September 3, 2026 16:51
vogella added a commit to vogella/eclipse.platform.ui that referenced this pull request Sep 3, 2026
@vogella
vogella force-pushed the vogella/quickaccess-batch-ui-providers branch from 857adf5 to 1476b23 Compare September 4, 2026 14:15
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
vogella force-pushed the vogella/quickaccess-batch-ui-providers branch from 1476b23 to 3f3cfbf Compare September 4, 2026 15:09
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