Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork3.8k
Description
Problem
We have this dialog:
jupyterlab/packages/apputils-extension/src/index.ts
Lines 222 to 230 in7a56579
| dialog=newDialog({ | |
| title:trans.__('Loading…'), | |
| body:trans.__(`The loading screen is taking a long time. | |
| Would you like to clear the workspace or keep waiting?`), | |
| buttons:[ | |
| Dialog.cancelButton({label:trans.__('Keep Waiting')}), | |
| Dialog.warnButton({label:trans.__('Clear Workspace')}) | |
| ] | |
| }); |
which shows up after 2 minutes if theapp.restored signal did not fire:
jupyterlab/packages/apputils-extension/src/index.ts
Lines 52 to 55 in7a56579
| /** | |
| * The interval in milliseconds before recover options appear during splash. | |
| */ | |
| constSPLASH_RECOVER_TIMEOUT=12000; |
When something blocks the restoration it is super hard to debug it; this tripped many users for example#6696. The restoration can be blocked by a stale network request of some plugin or some plugin just not activating correctly.
Proposed Solution
In past t debug it locally I was adding a racing timeout of ~2 minutes around the call toactivate() in jupyterlab startup/bootstrap code. This is not something we could ship as then we do not allow to activate the extension if for some reason the startup is expected to be slow, but we could:
- a) have a race promise which logs all plugins which take longer than 30 seconds to activate
- b) show the list of plugins which have started activation and are pending activation when the dialog is shown
Additional context
We would want to measure the time individual plugins take to load for use in extension manager too: