Am 10.12.25 um 11:10 AM schrieb Fiona Ebner:
> diff --git a/src/PVE/QemuServer/DBusVMState.pm 
> b/src/PVE/QemuServer/DBusVMState.pm
> index a72d6dd2..823a75ba 100644
> --- a/src/PVE/QemuServer/DBusVMState.pm
> +++ b/src/PVE/QemuServer/DBusVMState.pm
> @@ -114,9 +114,12 @@ sub qemu_del_dbus_vmstate {
>              $num_entries = eval {
>                  dbus_get_property($object, 'com.proxmox.VMStateHelper', 
> 'NumMigratedEntries');
>              };
> -            eval { $object->Quit() };
> +            # NOTE: for some reason, $object->Quit() does not resolve to the 
> correct handler even
> +            # though we matched the 'Id' property. As a stop-gap until this 
> is figured out, do it
> +            # via systemctl.
> +            eval { PVE::Tools::run_command(['systemctl', 'stop', 
> "pve-dbus-vmstate\@$vmid"]) };
>              if (my $err = $@) {
> -                syslog('warn', "failed to call quit on dbus-vmstate for VM 
> $vmid: $err\n")
> +                syslog('warn', "failed to stop pve-dbus-vmstate service for 
> VM $vmid: $err\n")
>                      if !$params{quiet};
>              }
>  

Hmm, maybe this is by design. We already have a helper for accessing the
properties, probably we need something similar for calling methods:

> # Retrieves a property from an object from a specific interface name.
> # In contrast to accessing the property directly by using $obj->Property, this
> # actually respects the owner of the object and thus can be used for 
> interfaces
> # with might have multiple (queued) owners on the DBus.
> my sub dbus_get_property {
>     my ($obj, $interface, $name) = @_;
> 
>     my $con = $obj->{service}->get_bus()->get_connection();
> 
>     my $call = $con->make_method_call_message(
>         $obj->{service}->get_service_name(),
>         $obj->{object_path},
>         'org.freedesktop.DBus.Properties',
>         'Get',
>     );
> 
>     $call->set_destination($obj->get_service()->get_owner_name());
>     $call->append_args_list($interface, $name);
> 
>     my @reply = $con->send_with_reply_and_block($call, 10 * 
> 1000)->get_args_list();
>     return $reply[0];
> }



_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to