Ignore error when starting transient unit that already exists

Signed-off-by: Derek Carr <decarr@redhat.com>
This commit is contained in:
Derek Carr
2016-10-18 17:49:14 -04:00
parent 88b4c4851e
commit d223e2adae
+11 -1
View File
@@ -282,7 +282,7 @@ func (m *Manager) Apply(pid int) error {
}
}
if _, err := theConn.StartTransientUnit(unitName, "replace", properties, nil); err != nil {
if _, err := theConn.StartTransientUnit(unitName, "replace", properties, nil); err != nil && !isUnitExists(err) {
return err
}
@@ -546,3 +546,13 @@ func setKernelMemory(c *configs.Cgroup) error {
}
return fs.EnableKernelMemoryAccounting(path)
}
// isUnitExists returns true if the error is that a systemd unit already exists.
func isUnitExists(err error) bool {
if err != nil {
if dbusError, ok := err.(dbus.Error); ok {
return strings.Contains(dbusError.Name, "org.freedesktop.systemd1.UnitExists")
}
}
return false
}