Your message dated Thu, 20 Nov 2014 16:31:39 +0000
with message-id <[email protected]>
and subject line Re: rpcbind: LSB headers should provide $portmap virtual 
facility
has caused the Debian Bug report #768548,
regarding rpcbind: LSB headers should provide $portmap virtual facility
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
768548: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=768548
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: rpcbind
Version: 0.2.1-6
Severity: important
X-Debbugs-Cc: [email protected]
X-Debbugs-Cc: Matthew Grant <[email protected]>

On 08/11/14 01:16, Ben Hutchings wrote:
> On Sat, 2014-11-08 at 00:37 +0000, Simon McVittie wrote:
>> On 07/11/14 20:23, Simon McVittie wrote:
>>> Bug M2, reported by Matthew Grant, present in 1:1.2.8-6: "NFS
>>> exports also fail due to rpcbind not starting before nfs-common
>>> and nfs- kernel-server".
>> 
>> I have not been able to reproduce this, with or without native
>> systemd units.
>> 
>> One possible reason why this could happen sometimes is that 
>> /etc/init.d/rpcbind has "Provides: rpcbind", which seems ...
>> redundant. I would expect it to have "Provides: $portmap" in
>> order to be ordered before nfs-common, which has "Required-Start:
>> $portmap".
> 
> So would I.  But this should result in breakage under sysvinit
> too.

Opening this as a separate bug in rpcbind. It should maybe be
considered RC... but I couldn't reproduce the failure, and as Ben
points out, we'd expect this to have caused breakage under sysvinit
already. So perhaps there's something I haven't spotted that mitigates
this.

Regards,
    S

--- End Message ---
--- Begin Message ---
On 20/11/14 15:00, Patrick Matthäi wrote:
> Names=rpcbind.target
> Requires=rpcbind.service
> WantedBy=rpcbind.service
> Conflicts=shutdown.target
> Before=nfs-common.service nfs-kernel-server.service
> After=rpcbind.service

This is evidence that my original bug report was wrong, so I'm closing
it. /etc/insserv.conf.d/rpcbind causes the correct dependencies to be
inserted; $portmap doesn't need to be in the LSB headers.

It seems to me as though your dependency cycle is caused by
vmware-tools.service. Please try removing the X-Start-Before from it and
see whether that helps.

If further analysis of your dependency cycle indicates that there is in
fact some problem with rpcbind.service, I think it would make most sense
for that to be a separate bug.

> Names=vmware-tools.service
...
> Before=ntp.service postfix.service bacula-fd.service
> nagios-nrpe-server.service bacula-director.service graphical.target
> shutdown.target network-online.target bacula-sd.service
> fail2ban.service sysstat.service multi-user.target
> After=local-fs.target systemd-journald.socket basic.target
> system.slice

Because of the X-Start-Before: $network, this wants to start before
network-online.target, which approximately corresponds to
/etc/init.d/networking in sysv-land; yet it is a rc2 service, so it
wants to start after basic.target.

In conjunction with basic.target (i.e. rcS) services like
rpcbind.service that apparently want to start *after*
network-online.target, this presents a problem. Consider the Before and
After ordering:

sysinit.target (must start before)
basic.target (which must start before)
vmware-tools.service (etc.)
network-online.target
rpcbind.service
sysinit.target (! back where we started)

There's no way that can work well.

The sysvinit scripts were presumably able to resolve this less
destructively by breaking the cycle in a different place, because they
didn't even think about rc2 until they had brought up rcS, by which
point it was too late for vmware-tools' X-Start-Before to take effect;
so it was simply ignored (I think). However, systemd doesn't force all
of rcS to happen before any of rc2 starts: it has a single large
dependency graph that covers both.

I think it's fairly clear that this is neither rpcbind's fault, nor the
same issue that I originally reported (which was wrong anyway).

It would seem reasonable to report a non-RC bug against systemd
(probably wishlist) for either or both of these:

- logging the whole path around the cycle(s) that it found, not just
  one of the units involved;
- a cleverer heuristic for where to break cycles, perhaps preferring
  to break them at a unit that has DefaultDependencies=no because those
  are less likely to be something important during early boot

It's entirely possible that one or both of those has been tried and
turned out not to be feasible, though.

    S

--- End Message ---

Reply via email to