public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: "Max Carrara" <m.carrara@proxmox.com>
To: "Proxmox Backup Server development discussion"
	<pbs-devel@lists.proxmox.com>
Subject: Re: [pbs-devel] [RFC proxmox 00/23] upgrade to hyper/http 1.0
Date: Thu, 03 Apr 2025 15:32:26 +0200	[thread overview]
Message-ID: <D8X1I8JDG1AR.1VHGTYM5ADEN5@proxmox.com> (raw)
In-Reply-To: <D8W7C0JM9RDZ.ZDM8A3B51ADP@proxmox.com>

On Wed Apr 2, 2025 at 3:53 PM CEST, Max Carrara wrote:
> On Wed Mar 26, 2025 at 4:23 PM CET, Fabian Grünbichler wrote:
> > this RFC series adapts proxmox and proxmox-backup to hyper/http 1.0. I
> > also have similar patches for PDM, but those require an update of gloo
> > and proxmox-yew-comp and the basic approach is the same as with the
> > patches here, and since I expect some feedback to incorporate anyway I
> > saved those for the first "proper" version.
> >
> > hyper 1.0 came with a lot of changes, the most notable ones:
> >
> > Body is now a trait, not a struct
> > - there's a new Incoming impl for incoming requests on the server side,
> > and incoming responses on the client side
> > - http-body-util has some more impls
> > - proxmox-http has a new impl covering our two common use cases, see
> > the patch there for details
> >
> > hyper now doesn't expose tower's Service or tokio's
> > AsyncRead/AsyncWrite, but has its own variants for both with
> > corresponding wrappers/adapters.
> >
> > the previous Accept trait for translation from a listening socket to
> > connections is gone, an accept loop should be used instead.
> >
> > the pooling client is moved from hyper to hyper-util. despite its
> > "legacy" label we still use it, as we'd need to either implement a ton
> > of code ourself or switch to reqwest otherwise.
> >
> > graceful shutdown of connections is handled differently, so are
> > connection ugprades.
> >
> > I did some rough testing of the usual things without noticing any
> > breakage, but I am sure I missed some parts. there's also room for
> > improvement for sure, in particular surrounding the rest-server and
> > connection accepting part - suggestions welcome!
>
> All the changes seem pretty solid to me; switching to hyper/1.0 was
> never really going to be pretty, but at least hyper-util provides a lot
> of the compat wrappers for that.
>
> (Note: The proxmox-backup patches only apply with `git am -3` for me.)
>
> I will give this a spin on my PBS dev VM and let it run on there for a
> while to see if I notice anything off. I haven't spotted anything sus in
> the code, so I don't expect anything to come up, but still.
>
> Also, I haven't really had any concrete ideas yet for the return value
> trait of `accept_tls_optional()` and family, but I'll let you know once
> (or if) I do. Previously, all of the individual parts could just be
> nicely composed together (incoming connection receiver, connection
> handler, etc.), so perhaps we could cook up something similar. The new
> pattern with the explicitly defined loop makes that a little hard,
> though.
>
> Apart from that, there are a few comments inline which can IMO be
> addressed in a follow-up (if at all). Nothing major. This otherwise
> looks pretty good to me, nice work! Especially the solution with our
> "own" `Body` implementation is pretty nice and a good middle ground. 
>
> Should nothing else come up and this be merged without a refresh,
> consider:
>
> Reviewed-by: Max Carrara <m.carrara@proxmox.com>
>
>
> Feel free to ping me for a re-review / more testing, should you refresh
> this series.

Gave this a more thorough test run today and didn't encounter anything.

- Ran some backups
- Restored a VM
- Restored an individual file
- Tried out various things in the UI, such as forgetting backup groups,
  viewing logs, running various things (console, verify job, GC job, ..)
- Set up ACME using my personal domain on OVH + LetsEncrypt Staging

Everything seems to work just fine. I'll keep the binaries built with
this series on my VM for a couple more days in case anything pops up,
but everything I have tried so far seems to work, even ACME.

So, unless something comes up, consider:

Reviewed-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Max Carrara <m.carrara@proxmox.com>

Just to note again, feel free to ping me for a re-review / more testing,
should you refresh this series.

Nice work! 🫡

>
> >
> > proxmox workspace:
> >
> > Fabian Grünbichler (17):
> >   http: order feature values
> >   http: rate-limited-stream: update to hyper/http 1.0
> >   http: adapt MaybeTlsStream to hyper 1.x
> >   http: adapt connector to hyper 1.x
> >   http: add Body implementation
> >   http: adapt simple client to hyper 1.x
> >   http: websocket: update to http/hyper 1
> >   openid: use http 0.2 to avoid openidconnect update
> >   proxmox-login: switch to http 1.x
> >   client: switch to hyper/http 1.0
> >   metrics: update to hyper/http 1.0
> >   acme: switch to http/hyper 1.0
> >   proxmox-router: update to hyper 1.0
> >   proxmox-rest-server: update to hyper 1.0
> >   proxmox-rest-server: fix and extend example
> >   proxmox-auth-api: update to hyper 1.0
> >   proxmox-acme-api: update to hyper 1.0
> >
> >  Cargo.toml                                    |   8 +-
> >  proxmox-acme-api/Cargo.toml                   |   4 +
> >  proxmox-acme-api/src/acme_plugin.rs           |  63 +++++--
> >  proxmox-acme/Cargo.toml                       |   3 +-
> >  proxmox-acme/src/async_client.rs              |  11 +-
> >  proxmox-auth-api/Cargo.toml                   |   2 +
> >  proxmox-auth-api/src/api/access.rs            |   4 +-
> >  proxmox-client/Cargo.toml                     |   1 +
> >  proxmox-client/src/client.rs                  |  22 +--
> >  proxmox-http/Cargo.toml                       |  45 +++--
> >  proxmox-http/src/body.rs                      | 133 ++++++++++++++
> >  proxmox-http/src/client/connector.rs          |  44 +++--
> >  proxmox-http/src/client/simple.rs             |  93 +++++++---
> >  proxmox-http/src/client/tls.rs                |   2 +-
> >  proxmox-http/src/lib.rs                       |   5 +
> >  proxmox-http/src/rate_limited_stream.rs       |   2 +-
> >  proxmox-http/src/websocket/mod.rs             |   6 +-
> >  proxmox-login/Cargo.toml                      |   2 +-
> >  proxmox-metrics/src/influxdb/http.rs          |   5 +-
> >  proxmox-openid/Cargo.toml                     |   3 +-
> >  proxmox-rest-server/Cargo.toml                |   9 +-
> >  .../examples/minimal-rest-server.rs           |  48 ++++-
> >  proxmox-rest-server/src/api_config.rs         |  44 ++---
> >  proxmox-rest-server/src/connection.rs         |  14 +-
> >  proxmox-rest-server/src/formatter.rs          |   8 +-
> >  proxmox-rest-server/src/h2service.rs          |  15 +-
> >  proxmox-rest-server/src/lib.rs                |   2 +-
> >  proxmox-rest-server/src/rest.rs               | 164 +++++++++++-------
> >  proxmox-router/Cargo.toml                     |   6 +-
> >  proxmox-router/src/router.rs                  |  19 +-
> >  proxmox-router/src/stream/parsing.rs          |  16 +-
> >  31 files changed, 567 insertions(+), 236 deletions(-)
> >  create mode 100644 proxmox-http/src/body.rs
> >
> > proxmox-backup:
> >
> > Fabian Grünbichler (6):
> >   Revert "h2: switch to legacy feature"
> >   pbs-client: adapt http client to hyper/http 1.0
> >   pbs-client: vsock: adapt to hyper/http 1.0
> >   restore daemon: adapt to hyper/http 1.0
> >   adapt to hyper/http 1.0
> >   adapt examples to hyper/http 1.0
> >
> >  Cargo.toml                                    | 10 ++-
> >  examples/h2client.rs                          |  6 +-
> >  examples/h2s-client.rs                        |  6 +-
> >  examples/h2s-server.rs                        | 28 +++-----
> >  examples/h2server.rs                          | 28 +++-----
> >  pbs-client/Cargo.toml                         |  4 +-
> >  pbs-client/src/backup_writer.rs               |  8 +--
> >  pbs-client/src/http_client.rs                 | 38 +++++-----
> >  pbs-client/src/pipe_to_stream.rs              |  2 +-
> >  pbs-client/src/vsock_client.rs                | 27 +++----
> >  proxmox-backup-client/Cargo.toml              |  1 +
> >  proxmox-backup-client/src/snapshot.rs         |  2 +-
> >  proxmox-restore-daemon/Cargo.toml             |  2 +
> >  proxmox-restore-daemon/src/main.rs            | 24 +++++--
> >  .../src/proxmox_restore_daemon/api.rs         |  6 +-
> >  .../src/proxmox_restore_daemon/auth.rs        |  5 +-
> >  src/acme/client.rs                            |  6 +-
> >  src/acme/plugin.rs                            | 62 +++++++++++-----
> >  src/api2/admin/datastore.rs                   | 20 +++---
> >  src/api2/backup/environment.rs                |  3 +-
> >  src/api2/backup/mod.rs                        | 10 +--
> >  src/api2/backup/upload_chunk.rs               | 47 +++++++------
> >  src/api2/helpers.rs                           |  3 +-
> >  src/api2/node/mod.rs                          |  7 +-
> >  src/api2/node/tasks.rs                        |  7 +-
> >  src/api2/reader/mod.rs                        | 17 +++--
> >  src/bin/proxmox-backup-api.rs                 | 40 +++++++----
> >  src/bin/proxmox-backup-proxy.rs               | 70 +++++++++++++++----
> >  28 files changed, 297 insertions(+), 192 deletions(-)
>
>
>
> _______________________________________________
> 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:[~2025-04-03 13:33 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-26 15:23 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 01/17] http: order feature values Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 02/17] http: rate-limited-stream: update to hyper/http 1.0 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 03/17] http: adapt MaybeTlsStream to hyper 1.x Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 04/17] http: adapt connector " Fabian Grünbichler
2025-04-02 13:31   ` Max Carrara
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 05/17] http: add Body implementation Fabian Grünbichler
2025-04-02 13:31   ` Max Carrara
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 06/17] http: adapt simple client to hyper 1.x Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 07/17] http: websocket: update to http/hyper 1 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 08/17] openid: use http 0.2 to avoid openidconnect update Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 09/17] proxmox-login: switch to http 1.x Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 10/17] client: switch to hyper/http 1.0 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 11/17] metrics: update " Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 12/17] acme: switch to http/hyper 1.0 Fabian Grünbichler
2025-04-02 13:31   ` Max Carrara
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 13/17] proxmox-router: update to hyper 1.0 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 14/17] proxmox-rest-server: " Fabian Grünbichler
2025-04-02 13:34   ` Max Carrara
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 15/17] proxmox-rest-server: fix and extend example Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 16/17] proxmox-auth-api: update to hyper 1.0 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox 17/17] proxmox-acme-api: " Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox-backup 1/6] Revert "h2: switch to legacy feature" Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox-backup 2/6] pbs-client: adapt http client to hyper/http 1.0 Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox-backup 3/6] pbs-client: vsock: adapt " Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox-backup 4/6] restore daemon: " Fabian Grünbichler
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox-backup 5/6] " Fabian Grünbichler
2025-04-02 13:36   ` Max Carrara
2025-03-26 15:23 ` [pbs-devel] [PATCH proxmox-backup 6/6] adapt examples " Fabian Grünbichler
2025-04-02 13:53 ` [pbs-devel] [RFC proxmox 00/23] upgrade " Max Carrara
2025-04-03 13:32   ` Max Carrara [this message]
2025-04-02 14:39 ` Thomas Lamprecht

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=D8X1I8JDG1AR.1VHGTYM5ADEN5@proxmox.com \
    --to=m.carrara@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