If one of our services fails to start, systemd/systemctl will often still report success starting the service. This is not ideal as we want proper feedback to the sysadmin, and it might break automated systems that examine the service status.
The problem is that we are using "Type=forking", but we don't fulfil the signalling requirements that systemd has. In this mode the parent process is supposed to hang around until the service is fully operational. But we exit the parent as soon as the child is spawned off.
Details about the startup mode here:
Note that in some cases systemd detects the failure. I guess it is race:y and if the child manages to fail before systemd has noticed that the parent has exited then systemd will see that something has gone wrong.
Also note that this isn't really a new bug. Our current behaviour was incorrect even for SysV startup but we apparently didn't see any major practical problems with it.
This issue was noted in bug 7578.