Open cfm opened 2 years ago
Thank you for filing! Since this is not a regression, I suspect we will not address it in this release, but we should put some time aside for it for sure.
During work on this issue, it would be helpful to take a look at our performance testing wiki page and update it with results as you go: https://github.com/freedomofpress/securedrop-client/wiki/Scalability-&-Performance
Looks like the culprit is a main-thread blocking call in MainView.show_sources()
to SourceList.update()
:
May 24 14:21:53 localhost 2022-05-24 14:21:53,827 - securedrop_client.storage:640(update_replies) DEBUG: Updated reply 66e55446-12e4-4624-8949-1ea361f8c30b
May 24 14:21:53 localhost 2022-05-24 14:21:53,829 - securedrop_client.storage:640(update_replies) DEBUG: Updated reply 473d1e3b-6320-40f4-8345-8ab3c682ad1c
May 24 14:21:53 localhost 2022-05-24 14:21:53,834 - securedrop_client.storage:640(update_replies) DEBUG: Updated reply a2a99174-ba0d-4c9c-8e5a-423b544b920c
May 24 14:21:53 localhost 2022-05-24 14:21:53,851 - securedrop_client.storage:204(chronometer) INFO: update_replies duration: 4.5702s
May 24 14:21:53 localhost 2022-05-24 14:21:53,851 - securedrop_client.api_jobs.sync:204(chronometer) INFO: update_local_storage duration: 14.1887s
May 24 14:21:53 localhost 2022-05-24 14:21:53,853 - securedrop_client.api_jobs.sync:204(chronometer) INFO: _update_state duration: 0.0016s
May 24 14:21:53 localhost 2022-05-24 14:21:53,902 - securedrop_client.storage:204(chronometer) INFO: get_local_sources duration: 0.0058s
May 24 14:22:02 localhost 2022-05-24 14:22:02,331 - securedrop_client.gui.widgets:204(chronometer) INFO: source_list.update duration: 8.4274s
May 24 14:22:02 localhost 2022-05-24 14:22:02,332 - securedrop_client.gui.widgets:204(chronometer) INFO: show_sources loop duration: 0.0000s
May 24 14:22:02 localhost 2022-05-24 14:22:02,333 - securedrop_client.logic:204(chronometer) INFO: show_sources duration: 8.4295s
May 24 14:22:02 localhost 2022-05-24 14:22:02,333 - securedrop_client.logic:204(chronometer) INFO: update_sources duration: 8.4365s
May 24 14:22:02 localhost 2022-05-24 14:22:02,333 - securedrop_client.logic:204(chronometer) INFO: refresh_current_source_conversation duration: 0.0000s
May 24 14:22:02 localhost 2022-05-24 14:22:02,352 - securedrop_client.queue:320(resume_queues) DEBUG: Resuming main queue
May 24 14:22:02 localhost 2022-05-24 14:22:02,354 - securedrop_client.queue:323(resume_queues) DEBUG: Resuming download queue
Description
After each sync against a Server with many sources and entries—
—the GUI freezes briefly.
Steps to Reproduce
On the Application Server:
On the Workstation:
LOGLEVEL=debug securedrop-client
and log in.Expected Behavior
The source under your cursor is always highlighted, including across each 15-second sync interval.
Actual Behavior
Shortly after each sync, the highlight freezes on source A, even if you move your cursor to source B. (The rest of the GUI is also frozen; this is a minimal reproduction.)
Comments
First noticed on
0.7.0-rc1-dev-20220414-224612+buster
for #1465. Reproduced on0.6.0+buster
.sd-log
at this moment shows:The freeze is indeed approximately 1.7 seconds.