public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Christian Ebner <c.ebner@proxmox.com>
To: "Proxmox Backup Server development discussion"
	<pbs-devel@lists.proxmox.com>,
	"Fabian Grünbichler" <f.gruenbichler@proxmox.com>
Subject: Re: [pbs-devel] [PATCH v2 proxmox-backup 3/3] client: reader: signal server before client disconnect
Date: Wed, 4 Dec 2024 15:13:02 +0100	[thread overview]
Message-ID: <ab598953-e9de-4bb3-82f8-f94ec27d743c@proxmox.com> (raw)
In-Reply-To: <1733319977.r426m80cai.astroid@yuna.none>

On 12/4/24 14:49, Fabian Grünbichler wrote:
> On December 4, 2024 9:31 am, Christian Ebner wrote:
>> Signal the server that the client has successfully finished its
>> operation and is about to close the connection. This allows the server
>> side to react and clean up the connection, without returning and
>> logging an error state, as that can cause confusion [0], as this is
>> not an error but normal behaviour.
>>
>> Report in the community forum:
>> [0] https://forum.proxmox.com/threads/158306/
>>
>> Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
>> ---
>> changes since version 1:
>> - no changes
>>
>> Note:
>> I am not sure this is the best approach, as this might block the
>> thread until the server responds or it runs into a time out.
>>
>> The alternative would require completely reworking all backup reader
>> related call sides. Or maybe there is another alternative?
>>
>>   pbs-client/src/backup_reader.rs | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/pbs-client/src/backup_reader.rs b/pbs-client/src/backup_reader.rs
>> index 88cba599b..63106c999 100644
>> --- a/pbs-client/src/backup_reader.rs
>> +++ b/pbs-client/src/backup_reader.rs
>> @@ -27,6 +27,8 @@ pub struct BackupReader {
>>   
>>   impl Drop for BackupReader {
>>       fn drop(&mut self) {
>> +        // Ignore errors
>> +        let _ = proxmox_async::runtime::block_on(self.post("finish", None));
> 
> should we maybe make this explicit, like we do in the BackupWriter? I
> know that it's a bit less "obvious" here compared to writer sessions
> what constitutes success/being finished ;)
> 
> means a bit more churn now to adapt the users of BackupReader, but would
> make it possible to differentiate server side whether a reader session
> was exited normally or via an error?

Yes, that is basically what I meant in the note:
The current approach is more of a catch all. Explicitly calling the 
finish for each reader instance might be prove difficult because of all 
the Arc instances being passed around and/or the reader instantiation 
happening in a helper which then only returns the wrapped consumer of 
the reader instance, e.g. a `RemoteChunkReader` or `pxar::Accessor`.

Will have a look on how to handle this, but it will require some bigger 
refactoring.

> we could even provide some sort of message via the finish API call that
> the server could log if desired, differentiating between:
> 
> - regular finish (no error/warning)
> - finish called with a warning message (warning)
> - finish not called, reader went away (error)
> 
> ?

Not sure about this: What warnings do we even want to tell the server 
about? I think the reader instance will either work without issues or 
fail with a hard error? Or do you have some specific use-case in mind here?

> 
>>           self.abort.abort();
>>       }
>>   }
>> -- 
>> 2.39.5
>>
>>
>>
>> _______________________________________________
>> pbs-devel mailing list
>> pbs-devel@lists.proxmox.com
>> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
>>
>>
>>
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
> 
> 



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

  reply	other threads:[~2024-12-04 14:13 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-04  8:31 [pbs-devel] [PATCH v2 proxmox-backup 0/3] handle reader client disconnects Christian Ebner
2024-12-04  8:31 ` [pbs-devel] [PATCH v2 proxmox-backup 1/3] client: backup: remove unnecessary clone for backup reader Christian Ebner
2024-12-04 13:50   ` [pbs-devel] applied: " Fabian Grünbichler
2024-12-04  8:31 ` [pbs-devel] [PATCH v2 proxmox-backup 2/3] api: reader: handle reader client disconnects Christian Ebner
2024-12-04  8:31 ` [pbs-devel] [PATCH v2 proxmox-backup 3/3] client: reader: signal server before client disconnect Christian Ebner
2024-12-04 13:49   ` Fabian Grünbichler
2024-12-04 14:13     ` Christian Ebner [this message]
2024-12-05  9:40       ` Fabian Grünbichler
2024-12-05  9:56         ` Christian Ebner
2024-12-05 11:29           ` Fabian Grünbichler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab598953-e9de-4bb3-82f8-f94ec27d743c@proxmox.com \
    --to=c.ebner@proxmox.com \
    --cc=f.gruenbichler@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal