godbus/dbus

help: Cannot set property ExecStopPost, or unknown property.

jinjianming opened this issue · 2 comments

The systemd service is an earlier version, and there was an error creating the systemd using dbus. ExecStopPost, or unknown property

systemctl --version
systemd 219
import (
	"fmt"
	systemd "github.com/coreos/go-systemd/v22/dbus"
	dbus "github.com/godbus/dbus/v5"
)
                 ...
	newProps := []systemd.Property{
                 ...
		systemd.PropExecStart(args, false),

		{
			Name: "ExecStopPost",
			// force & lazy unmount to cleanup possibly dead mountpoints
			Value: dbus.MakeVariant([]execCmd{execCmd{"/bin/umount", []string{"/bin/umount", "-f", "-l", "/xxx"}, false}}),
		},
                 ...
	}

	// The name of the transient service
	serviceName := "xxx.service"

	_, err = conn.StartTransientUnit(serviceName, "replace", newProps, nil)

I found the following error through dbus-monitor --system

method call time=1704875752.714736 sender=:1.0 -> destination=org.freedesktop.DBus serial=4741 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixUser
   string ":1.202"
method return time=1704875752.714742 sender=org.freedesktop.DBus -> destination=:1.0 serial=122 reply_serial=4741
   uint32 0
error time=1704875752.715074 sender=:1.0 -> destination=:1.202 error_name=org.freedesktop.DBus.Error.PropertyReadOnly reply_serial=2
   string "Cannot set property ExecStopPost, or unknown property."
signal time=1704875752.715114 sender=:1.0 -> destination=(null destination) serial=4743 path=/org/freedesktop/systemd1; interface=org.freedesktop.systemd1.Manager; member=UnitNew
   string "my-transient-geesefs-mount.service"

I noticed that some materials seem to have this attribute renamed from StoppPost to ExecStoppPost in system v237, but I changed the code and the same issue with StoppPost. The only issue is that the attribute name was changed