[pbs-devel] [PATCH widget-toolkit] fix #4961: disks: increase timeout to 1min

Fabian Grünbichler f.gruenbichler at proxmox.com
Tue Sep 26 09:55:22 CEST 2023

On September 21, 2023 10:21 am, Gabriel Goller wrote:
> Increase the timeout of the api call to `../nodes/localhost/disks/list`
> to 1min. When having a lot of disks the default timeout of 30sec is
> not enough.
> Signed-off-by: Gabriel Goller <g.goller at proxmox.com>
> ---
>  src/panel/DiskList.js | 1 +
>  1 file changed, 1 insertion(+)
> diff --git a/src/panel/DiskList.js b/src/panel/DiskList.js
> index c5a0050..5785297 100644
> --- a/src/panel/DiskList.js
> +++ b/src/panel/DiskList.js
> @@ -70,6 +70,7 @@ Ext.define('Proxmox.DiskList', {
>  		type: 'proxmox',
>  		extraParams: extraParams,
>  		url: url,
> +		timeout: 60*1000,

that alone won't be enough, since we also have a 30s timeout for
proxying requests in a PVE cluster (and this component is used there).

see https://bugzilla.proxmox.com/show_bug.cgi?id=3045 and
https://bugzilla.proxmox.com/show_bug.cgi?id=4447 for some previous
discussion (with similar API endpoints).

IMHO the most complete solution would be some sort of
light-weight/ephemeral task mechanism:
- runs in a worker, like regular task (possibly with a bounded queue of
  allowed in-flight requests?)
- not visible in the regular task list (or only via a special parameter?)
- status is pollable, but once completed, results are returned once and
  discarded, and not stored with the regular task logs/results
- result is discarded after $timeout if not polled in time

this would allow us to make *every* currently sync API handler
(optionally!) async by just spawning such a task and making it the
clients responsibility to request async handling and taking care of
polling to retrieve the result. then we could selectively switch over
certain parts of our GUI, add client-side caching and an explicit
refresh button. if the server responds quickly, not much changed except
an additional fork and some state housekeeping.

there are other solutions as well of course (e.g., some web UIs use a
long-lived WebSocket connection and pipeline requests/responses in an
async fashion over that).

>  	    });
>  	    me.store.load();
>  	},
> -- 
> 2.39.2
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

More information about the pbs-devel mailing list