all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] server/worker_task: fix upid_read_status
@ 2020-09-07 12:50 Dominik Csapak
  2020-09-08  5:08 ` [pbs-devel] applied: " Dietmar Maurer
  0 siblings, 1 reply; 2+ messages in thread
From: Dominik Csapak @ 2020-09-07 12:50 UTC (permalink / raw)
  To: pbs-devel

a range from high to low in rust results in an empty range
(see std::ops::Range documentation)
so we need to generate the range from 0..data.len() and then reverse it

also, the task log contains a newline at the end, so we have to remove
that (should it exist)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
maybe it would be nicer (but slower) to use the .lines() iterator?
to not run into such things?

 src/server/worker_task.rs | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/server/worker_task.rs b/src/server/worker_task.rs
index 997c2492..28e62ba2 100644
--- a/src/server/worker_task.rs
+++ b/src/server/worker_task.rs
@@ -210,9 +210,14 @@ pub fn upid_read_status(upid: &UPID) -> Result<TaskState, Error> {
     let mut data = Vec::with_capacity(8192);
     file.read_to_end(&mut data)?;
 
+    // task logs should end with newline, we do not want it here
+    if data[data.len()-1] == b'\n' {
+        data.pop();
+    }
+
     let last_line = {
         let mut start = 0;
-        for pos in data.len()-1..=0 {
+        for pos in (0..data.len()).rev() {
             if data[pos] == b'\n' {
                 start = pos + 1;
                 break;
-- 
2.20.1





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-backup] server/worker_task: fix upid_read_status
  2020-09-07 12:50 [pbs-devel] [PATCH proxmox-backup] server/worker_task: fix upid_read_status Dominik Csapak
@ 2020-09-08  5:08 ` Dietmar Maurer
  0 siblings, 0 replies; 2+ messages in thread
From: Dietmar Maurer @ 2020-09-08  5:08 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

wow -  that hurts ..

> On 09/07/2020 2:50 PM Dominik Csapak <d.csapak@proxmox.com> wrote:
> 
>  
> a range from high to low in rust results in an empty range
> (see std::ops::Range documentation)
> so we need to generate the range from 0..data.len() and then reverse it
> 
> also, the task log contains a newline at the end, so we have to remove
> that (should it exist)
> 
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
> maybe it would be nicer (but slower) to use the .lines() iterator?
> to not run into such things?
> 
>  src/server/worker_task.rs | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/src/server/worker_task.rs b/src/server/worker_task.rs
> index 997c2492..28e62ba2 100644
> --- a/src/server/worker_task.rs
> +++ b/src/server/worker_task.rs
> @@ -210,9 +210,14 @@ pub fn upid_read_status(upid: &UPID) -> Result<TaskState, Error> {
>      let mut data = Vec::with_capacity(8192);
>      file.read_to_end(&mut data)?;
>  
> +    // task logs should end with newline, we do not want it here
> +    if data[data.len()-1] == b'\n' {
> +        data.pop();
> +    }
> +
>      let last_line = {
>          let mut start = 0;
> -        for pos in data.len()-1..=0 {
> +        for pos in (0..data.len()).rev() {
>              if data[pos] == b'\n' {
>                  start = pos + 1;
>                  break;
> -- 
> 2.20.1
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-09-08  5:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-07 12:50 [pbs-devel] [PATCH proxmox-backup] server/worker_task: fix upid_read_status Dominik Csapak
2020-09-08  5:08 ` [pbs-devel] applied: " Dietmar Maurer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal