* [PATCH proxmox-backup 0/2] additional task endtime fixes
@ 2026-04-30 12:10 Christian Ebner
2026-04-30 12:10 ` [PATCH proxmox-backup 1/2] api: node: return optional endtime in tasks status Christian Ebner
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Christian Ebner @ 2026-04-30 12:10 UTC (permalink / raw)
To: pbs-devel
Extends the recent fixes [0] for correctly showing the task log end
time by other ocurences, as reported in the community forum [1].
Since the endtime is not accessible in all contexts where the task
viewer is instantiated, also extend the API endpoint returning the
task log status by the endtime, as parsed via the TaskState.
[0] https://lore.proxmox.com/all/20260427120543.2692503-1-d.csapak@proxmox.com/
[1] https://forum.proxmox.com/threads/183157/
Christian Ebner (2):
api: node: return optional endtime in tasks status
ui: GC/prune: pass tasks last run endtime to task viewer
src/api2/node/tasks.rs | 6 ++++++
www/config/GCView.js | 9 ++++++---
www/config/PruneView.js | 3 +++
www/datastore/Content.js | 14 +++++++++++---
www/tape/BackupJobs.js | 3 +++
5 files changed, 29 insertions(+), 6 deletions(-)
--
2.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH proxmox-backup 1/2] api: node: return optional endtime in tasks status 2026-04-30 12:10 [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner @ 2026-04-30 12:10 ` Christian Ebner 2026-04-30 12:10 ` [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer Christian Ebner 2026-05-04 15:45 ` superseded: [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner 2 siblings, 0 replies; 8+ messages in thread From: Christian Ebner @ 2026-04-30 12:10 UTC (permalink / raw) To: pbs-devel With the intention to correctly show the task end time without relying on further API calls or workarounds to gather it. Whenever the task is considered finished, return the endtime according to the parsed TaskState. Signed-off-by: Christian Ebner <c.ebner@proxmox.com> --- src/api2/node/tasks.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api2/node/tasks.rs b/src/api2/node/tasks.rs index fe619a08e..838f874d0 100644 --- a/src/api2/node/tasks.rs +++ b/src/api2/node/tasks.rs @@ -255,6 +255,11 @@ fn into_task_list_item(info: proxmox_rest_server::TaskListInfo) -> pbs_api_types optional: true, description: "'OK', 'Error: <msg>', or 'unknown'.", }, + endtime: { + type: i64, + description: "The task end time (Epoch)", + optional: true, + }, }, }, access: { @@ -292,6 +297,7 @@ async fn get_task_status(param: Value, rpcenv: &mut dyn RpcEnvironment) -> Resul let exitstatus = upid_read_status(&upid).unwrap_or(TaskState::Unknown { endtime: 0 }); result["status"] = Value::from("stopped"); result["exitstatus"] = Value::from(exitstatus.to_string()); + result["endtime"] = Value::from(exitstatus.endtime()); }; Ok(result) -- 2.47.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer 2026-04-30 12:10 [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner 2026-04-30 12:10 ` [PATCH proxmox-backup 1/2] api: node: return optional endtime in tasks status Christian Ebner @ 2026-04-30 12:10 ` Christian Ebner 2026-05-04 6:34 ` Dominik Csapak 2026-05-04 8:02 ` Thomas Lamprecht 2026-05-04 15:45 ` superseded: [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner 2 siblings, 2 replies; 8+ messages in thread From: Christian Ebner @ 2026-04-30 12:10 UTC (permalink / raw) To: pbs-devel Same issue as tackled by commit e8552dae3 ("ui: sync/verify view: show correct duration in task log window"), pass the last run endtime to the task log window for correct calculation of the job duration for finished jobs, not using the current time. For correctly showing the verification task status in datastore contents, an additional API request is required first to get the endtime. Other call sites arelady have the required information. Fixes: https://forum.proxmox.com/threads/183157/ Signed-off-by: Christian Ebner <c.ebner@proxmox.com> --- www/config/GCView.js | 9 ++++++--- www/config/PruneView.js | 3 +++ www/datastore/Content.js | 14 +++++++++++--- www/tape/BackupJobs.js | 3 +++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/www/config/GCView.js b/www/config/GCView.js index 9fcc22344..5f4e625fa 100644 --- a/www/config/GCView.js +++ b/www/config/GCView.js @@ -98,12 +98,15 @@ Ext.define('PBS.config.GCJobView', { showTaskLog: function () { let _me = this; - let upid = this.getData().upid; - if (!upid) { + let data = this.getData(); + if (!data.upid) { return; } - Ext.create('Proxmox.window.TaskViewer', { upid }).show(); + Ext.create('Proxmox.window.TaskViewer', { + upid: data.upid, + endtime: data['last-run-endtime'], + }).show(); }, startStore: function () { diff --git a/www/config/PruneView.js b/www/config/PruneView.js index f38724687..431a1ddcf 100644 --- a/www/config/PruneView.js +++ b/www/config/PruneView.js @@ -99,9 +99,12 @@ Ext.define('PBS.config.PruneJobView', { return; } + let endtime = selection[0].data['last-run-endtime']; + Ext.create('Proxmox.window.TaskViewer', { autoShow: true, upid, + endtime, }); }, diff --git a/www/datastore/Content.js b/www/datastore/Content.js index 1ec07505d..0d968b52e 100644 --- a/www/datastore/Content.js +++ b/www/datastore/Content.js @@ -1399,9 +1399,17 @@ Ext.define('PBS.DataStoreContent', { dblclick: function (view, el, row, col, ev, rec) { let verify = rec?.data?.verification; if (verify?.upid && rec.parentNode?.id !== 'root') { - Ext.create('Proxmox.window.TaskViewer', { - autoShow: true, - upid: verify.upid, + Proxmox.Utils.API2Request({ + url: `/nodes/localhost/tasks/${encodeURIComponent(verify.upid)}/status`, + failure: function (response) { + Ext.Msg.alert(gettext('Error'), response.htmlStatus); + }, + success: function (response, options) { + Ext.create('Proxmox.window.TaskViewer', { + upid: response.result.data.upid, + endtime: response.result.data.endtime, + }).show(); + }, }); } }, diff --git a/www/tape/BackupJobs.js b/www/tape/BackupJobs.js index 68d808af5..eb3fff82b 100644 --- a/www/tape/BackupJobs.js +++ b/www/tape/BackupJobs.js @@ -92,8 +92,11 @@ Ext.define('PBS.config.TapeBackupJobView', { return; } + let endtime = selection[0].data['last-run-endtime']; + Ext.create('Proxmox.window.TaskViewer', { upid, + endtime, }).show(); }, -- 2.47.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer 2026-04-30 12:10 ` [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer Christian Ebner @ 2026-05-04 6:34 ` Dominik Csapak 2026-05-04 7:04 ` Christian Ebner 2026-05-04 8:02 ` Thomas Lamprecht 1 sibling, 1 reply; 8+ messages in thread From: Dominik Csapak @ 2026-05-04 6:34 UTC (permalink / raw) To: Christian Ebner, pbs-devel passing the endtime from the grids look good to me, but one comment inline On 4/30/26 2:09 PM, Christian Ebner wrote: > Same issue as tackled by commit e8552dae3 ("ui: sync/verify view: > show correct duration in task log window"), pass the last run > endtime to the task log window for correct calculation of the > job duration for finished jobs, not using the current time. > > For correctly showing the verification task status in datastore > contents, an additional API request is required first to get the > endtime. Other call sites arelady have the required information. > > Fixes: https://forum.proxmox.com/threads/183157/ > Signed-off-by: Christian Ebner <c.ebner@proxmox.com> > --- > www/config/GCView.js | 9 ++++++--- > www/config/PruneView.js | 3 +++ > www/datastore/Content.js | 14 +++++++++++--- > www/tape/BackupJobs.js | 3 +++ > 4 files changed, 23 insertions(+), 6 deletions(-) > > diff --git a/www/config/GCView.js b/www/config/GCView.js > index 9fcc22344..5f4e625fa 100644 > --- a/www/config/GCView.js > +++ b/www/config/GCView.js > @@ -98,12 +98,15 @@ Ext.define('PBS.config.GCJobView', { > showTaskLog: function () { > let _me = this; > > - let upid = this.getData().upid; > - if (!upid) { > + let data = this.getData(); > + if (!data.upid) { > return; > } > > - Ext.create('Proxmox.window.TaskViewer', { upid }).show(); > + Ext.create('Proxmox.window.TaskViewer', { > + upid: data.upid, > + endtime: data['last-run-endtime'], > + }).show(); > }, > > startStore: function () { > diff --git a/www/config/PruneView.js b/www/config/PruneView.js > index f38724687..431a1ddcf 100644 > --- a/www/config/PruneView.js > +++ b/www/config/PruneView.js > @@ -99,9 +99,12 @@ Ext.define('PBS.config.PruneJobView', { > return; > } > > + let endtime = selection[0].data['last-run-endtime']; > + > Ext.create('Proxmox.window.TaskViewer', { > autoShow: true, > upid, > + endtime, > }); > }, > > diff --git a/www/datastore/Content.js b/www/datastore/Content.js > index 1ec07505d..0d968b52e 100644 > --- a/www/datastore/Content.js > +++ b/www/datastore/Content.js > @@ -1399,9 +1399,17 @@ Ext.define('PBS.DataStoreContent', { > dblclick: function (view, el, row, col, ev, rec) { > let verify = rec?.data?.verification; > if (verify?.upid && rec.parentNode?.id !== 'root') { > - Ext.create('Proxmox.window.TaskViewer', { > - autoShow: true, > - upid: verify.upid, > + Proxmox.Utils.API2Request({ > + url: `/nodes/localhost/tasks/${encodeURIComponent(verify.upid)}/status`, > + failure: function (response) { > + Ext.Msg.alert(gettext('Error'), response.htmlStatus); > + }, > + success: function (response, options) { > + Ext.create('Proxmox.window.TaskViewer', { > + upid: response.result.data.upid, > + endtime: response.result.data.endtime, > + }).show(); > + }, > }); instead of doing an extra api call here, I'd favor using the endtime from the status api call directly in the taskviewer in proxmox-widget-toolkit. That window does poll the status anyway. > } > }, > diff --git a/www/tape/BackupJobs.js b/www/tape/BackupJobs.js > index 68d808af5..eb3fff82b 100644 > --- a/www/tape/BackupJobs.js > +++ b/www/tape/BackupJobs.js > @@ -92,8 +92,11 @@ Ext.define('PBS.config.TapeBackupJobView', { > return; > } > > + let endtime = selection[0].data['last-run-endtime']; > + > Ext.create('Proxmox.window.TaskViewer', { > upid, > + endtime, > }).show(); > }, > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer 2026-05-04 6:34 ` Dominik Csapak @ 2026-05-04 7:04 ` Christian Ebner 0 siblings, 0 replies; 8+ messages in thread From: Christian Ebner @ 2026-05-04 7:04 UTC (permalink / raw) To: Dominik Csapak, pbs-devel On 5/4/26 8:33 AM, Dominik Csapak wrote: > passing the endtime from the grids look good to me, but > one comment inline > > On 4/30/26 2:09 PM, Christian Ebner wrote: >> Same issue as tackled by commit e8552dae3 ("ui: sync/verify view: >> show correct duration in task log window"), pass the last run >> endtime to the task log window for correct calculation of the >> job duration for finished jobs, not using the current time. >> >> For correctly showing the verification task status in datastore >> contents, an additional API request is required first to get the >> endtime. Other call sites arelady have the required information. >> >> Fixes: https://forum.proxmox.com/threads/183157/ >> Signed-off-by: Christian Ebner <c.ebner@proxmox.com> >> --- >> www/config/GCView.js | 9 ++++++--- >> www/config/PruneView.js | 3 +++ >> www/datastore/Content.js | 14 +++++++++++--- >> www/tape/BackupJobs.js | 3 +++ >> 4 files changed, 23 insertions(+), 6 deletions(-) >> >> diff --git a/www/config/GCView.js b/www/config/GCView.js >> index 9fcc22344..5f4e625fa 100644 >> --- a/www/config/GCView.js >> +++ b/www/config/GCView.js >> @@ -98,12 +98,15 @@ Ext.define('PBS.config.GCJobView', { >> showTaskLog: function () { >> let _me = this; >> - let upid = this.getData().upid; >> - if (!upid) { >> + let data = this.getData(); >> + if (!data.upid) { >> return; >> } >> - Ext.create('Proxmox.window.TaskViewer', { upid }).show(); >> + Ext.create('Proxmox.window.TaskViewer', { >> + upid: data.upid, >> + endtime: data['last-run-endtime'], >> + }).show(); >> }, >> startStore: function () { >> diff --git a/www/config/PruneView.js b/www/config/PruneView.js >> index f38724687..431a1ddcf 100644 >> --- a/www/config/PruneView.js >> +++ b/www/config/PruneView.js >> @@ -99,9 +99,12 @@ Ext.define('PBS.config.PruneJobView', { >> return; >> } >> + let endtime = selection[0].data['last-run-endtime']; >> + >> Ext.create('Proxmox.window.TaskViewer', { >> autoShow: true, >> upid, >> + endtime, >> }); >> }, >> diff --git a/www/datastore/Content.js b/www/datastore/Content.js >> index 1ec07505d..0d968b52e 100644 >> --- a/www/datastore/Content.js >> +++ b/www/datastore/Content.js >> @@ -1399,9 +1399,17 @@ Ext.define('PBS.DataStoreContent', { >> dblclick: function (view, el, row, col, ev, rec) { >> let verify = rec?.data?.verification; >> if (verify?.upid && rec.parentNode?.id !== >> 'root') { >> - Ext.create('Proxmox.window.TaskViewer', { >> - autoShow: true, >> - upid: verify.upid, >> + Proxmox.Utils.API2Request({ >> + url: `/nodes/localhost/tasks/ >> ${encodeURIComponent(verify.upid)}/status`, >> + failure: function (response) { >> + Ext.Msg.alert(gettext('Error'), >> response.htmlStatus); >> + }, >> + success: function (response, options) { >> + >> Ext.create('Proxmox.window.TaskViewer', { >> + upid: response.result.data.upid, >> + endtime: >> response.result.data.endtime, >> + }).show(); >> + }, >> }); > > instead of doing an extra api call here, I'd favor using the endtime > from the status api call directly in the taskviewer in proxmox-widget- > toolkit. That window does poll the status anyway. True, that is even better: It could fallback to getting the endtime from the response there if not explicitly given at creation time. Will incorporate that into a version 2 of the patches, thanks for review! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer 2026-04-30 12:10 ` [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer Christian Ebner 2026-05-04 6:34 ` Dominik Csapak @ 2026-05-04 8:02 ` Thomas Lamprecht 2026-05-04 8:11 ` Christian Ebner 1 sibling, 1 reply; 8+ messages in thread From: Thomas Lamprecht @ 2026-05-04 8:02 UTC (permalink / raw) To: Christian Ebner, pbs-devel Am 30.04.26 um 14:09 schrieb Christian Ebner: > Same issue as tackled by commit e8552dae3 ("ui: sync/verify view: > show correct duration in task log window"), pass the last run > endtime to the task log window for correct calculation of the > job duration for finished jobs, not using the current time. > > For correctly showing the verification task status in datastore > contents, an additional API request is required first to get the > endtime. Other call sites arelady have the required information. > > Fixes: https://forum.proxmox.com/threads/183157/ > Signed-off-by: Christian Ebner <c.ebner@proxmox.com> AFAICT this can be handled in widget-toolkit without extra (blocking) calls here on api task open, as it shouldn't hurt I pushed out already a proposed change here: https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commitdiff;h=7431c0766f0439481ae17ef54f49ee8edc210069 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer 2026-05-04 8:02 ` Thomas Lamprecht @ 2026-05-04 8:11 ` Christian Ebner 0 siblings, 0 replies; 8+ messages in thread From: Christian Ebner @ 2026-05-04 8:11 UTC (permalink / raw) To: Thomas Lamprecht, pbs-devel On 5/4/26 10:01 AM, Thomas Lamprecht wrote: > Am 30.04.26 um 14:09 schrieb Christian Ebner: >> Same issue as tackled by commit e8552dae3 ("ui: sync/verify view: >> show correct duration in task log window"), pass the last run >> endtime to the task log window for correct calculation of the >> job duration for finished jobs, not using the current time. >> >> For correctly showing the verification task status in datastore >> contents, an additional API request is required first to get the >> endtime. Other call sites arelady have the required information. >> >> Fixes: https://forum.proxmox.com/threads/183157/ >> Signed-off-by: Christian Ebner <c.ebner@proxmox.com> > > AFAICT this can be handled in widget-toolkit without extra (blocking) > calls here on api task open, as it shouldn't hurt I pushed out already > a proposed change here: > > https://git.proxmox.com/?p=proxmox-widget-toolkit.git;a=commitdiff;h=7431c0766f0439481ae17ef54f49ee8edc210069 Nice, thanks for the heads up! Will double check the behavior after these changes. ^ permalink raw reply [flat|nested] 8+ messages in thread
* superseded: [PATCH proxmox-backup 0/2] additional task endtime fixes 2026-04-30 12:10 [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner 2026-04-30 12:10 ` [PATCH proxmox-backup 1/2] api: node: return optional endtime in tasks status Christian Ebner 2026-04-30 12:10 ` [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer Christian Ebner @ 2026-05-04 15:45 ` Christian Ebner 2 siblings, 0 replies; 8+ messages in thread From: Christian Ebner @ 2026-05-04 15:45 UTC (permalink / raw) To: pbs-devel superseded-by version 2: https://lore.proxmox.com/pbs-devel/20260504154346.901478-1-c.ebner@proxmox.com/T/ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-05-04 15:45 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-30 12:10 [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner 2026-04-30 12:10 ` [PATCH proxmox-backup 1/2] api: node: return optional endtime in tasks status Christian Ebner 2026-04-30 12:10 ` [PATCH proxmox-backup 2/2] ui: GC/prune: pass tasks last run endtime to task viewer Christian Ebner 2026-05-04 6:34 ` Dominik Csapak 2026-05-04 7:04 ` Christian Ebner 2026-05-04 8:02 ` Thomas Lamprecht 2026-05-04 8:11 ` Christian Ebner 2026-05-04 15:45 ` superseded: [PATCH proxmox-backup 0/2] additional task endtime fixes Christian Ebner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox