[pve-devel] [RFC PATCH 1/2] do not use PVE::API2 in spiceproxy.pm

Fabian Grünbichler f.gruenbichler at proxmox.com
Thu Aug 10 09:34:00 CEST 2017


On Wed, Aug 09, 2017 at 06:17:20PM +0200, Dietmar Maurer wrote:
> Looks quite strange to me, because PVE::HTTPServer calls:
> 
>  PVE::API2->find_handler
> 
> so we should use PVE::API2 in PVE::HTTPServer?
> 
> Not sure why it works without??
> 

it does, but only in rest_handler, which AFAICT, is not called in the
spiceproxy case:

PVE::APIServer::AnyEvent has:

new which calls
accept_connections which calls
push_request_header which calls
unshift_read_header which after being done with HTTP header processing,
checks for the spiceproxy flag (set in spiceproxy.pm), and calls
verify_spice_connect_url and handle_spice_proxy_request and returns.

verify_spice_connect_url is implemented in PVE::HTTPServer, and only
uses PVE::RPCEnvironment and PVE::AccessControl

handle_spice_proxy_request is implemented in PVE::APIServer::AnyEvent,
and AFAICT does not use the API in any way.

unshift_read_header also calls both
file_upload_multipart and handle_request, which call
handle_api2_request which calls the problematic
rest_handler

but those calls in unshift_read_header happen after the spiceproxy check
mentioned above, so those paths are never taken.

so while it looks safe to remove "use PVE::API2" from spiceproxy.pm,
technically it is missing from PVE::HTTPServer.pm and the memory usage
would still be the same.

we could move PVE::API2 into the server config / $self, and let only
pveproxy.pm and pvedaemon.pm (which both have the appropriate use
statement) set the config option?

alternatively, spiceproxy.pm could use a new SpiceProxyHTTPServer, which
does not implement rest_handler and auth_handler and thus does not need
to use PVE::API2. PVE::HTTPServer could then use PVE::API2 without
affecting spiceproxy's memory usage. pveproxy, pvedaemon and
pvespiceproxy could all clean up their use statements to reflect what is
actually directly used in the respective perl file.


> > On August 9, 2017 at 2:08 PM Dominik Csapak <d.csapak at proxmox.com> wrote:
> > 
> > 
> > we do not need it there and withouth this we save ~30MB memory for
> > this daemon and its workers
> > 
> > Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> > ---
> >  PVE/Service/spiceproxy.pm | 1 -
> >  1 file changed, 1 deletion(-)
> > 
> > diff --git a/PVE/Service/spiceproxy.pm b/PVE/Service/spiceproxy.pm
> > index 20fd5b24..22a501b0 100755
> > --- a/PVE/Service/spiceproxy.pm
> > +++ b/PVE/Service/spiceproxy.pm
> > @@ -10,7 +10,6 @@ use warnings;
> >  use PVE::SafeSyslog;
> >  use PVE::Daemon;
> >  use PVE::API2Tools;
> > -use PVE::API2;
> >  use PVE::HTTPServer;
> >  
> >  use base qw(PVE::Daemon);
> > -- 
> > 2.11.0
> > 
> > 
> > _______________________________________________
> > pve-devel mailing list
> > pve-devel at pve.proxmox.com
> > https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel




More information about the pve-devel mailing list