The more workspaces, the slower they are to appear in GUI on startup #1619
Labels
C-GUI
Category: Graphical User Interface issue
enhancement
Improve functionality, potentially changing behavior
Projects
with Parsec v2.2.2:
GUI's workspace widgets check for reencryption needs each time when created.
However reencryption needs check doesn't use cache (otherwise a recently revoked user would not be detected as a reencryption need).
This lead to 2 + N requests (with N the number of user that currently have a role in the workspace) to the backend for each workspaces to:
The bad part is the GUI doesn't display the widget until the check is done, and no cache means this is growing linearly with the number of workspaces :'-(
To solve this, the simplest solution would be to make this reencryption need check asynchronous in the GUI (so first display all the workspaces, run the check in the background, then finally add the "reencryption needed" warning where needed)
Another potential quick win would be to do this check only when the current user is owner of the workspace (given only there her can proceed to the reencryption). Currently the check is done for everybody (so everybody is see that the workspace need reencryption... not sure if it's a good or a bad thing) but clicking on the reencrypt button pop a dialog explaining only owner can do that.
However this is not 100% perfect given it doesn't solve the «
(2 + N) * W
requests to the backend each time the workspaces widget page is loaded » which seems a bit overkill for a check that is very rarely needed.On top of that, that greedy check doesn't protect us against a malicious backend that wants to lie by omision (hence hiding us the fact that a revocation certificate has been issued toward a given user).
So I think in the long run it migh be worth it to rework the cache system (for instance caching all the user/device/role certifications involved in a workspace once, then listening for backend events to update them)
The text was updated successfully, but these errors were encountered: