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
next prev parent 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