Bug 1036791

Summary: Please do not pull in rpcbind.service from multi-user.target
Product: Red Hat Enterprise Linux 7 Reporter: Steve Dickson <steved>
Component: rpcbindAssignee: Steve Dickson <steved>
Status: CLOSED ERRATA QA Contact: JianHong Yin <jiyin>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: eguan, fs-qe, ignatenko, lpoetter, nstraz, steved, systemd-maint
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: rpcbind-0.2.0-25.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 963189 Environment:
Last Closed: 2015-03-05 11:22:11 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 963189    
Bug Blocks: 963210    

Description Steve Dickson 2013-12-02 15:48:43 UTC
+++ This bug was initially created as a clone of Bug #963189 +++

rpcbind.service is currently pulled in by multi-user.target unconditionally, even though it is socket-activated on-demand via rpcbind.socket, and even though it actually appears to be the ideal case where something can be lazy-loaded on-demand, simply because most people don't use it, but is installed anyway.

lazy-loading it on-demand is transparent to the client, so there really isn't any drawback to socket-activate it.

To make this work, simply drop The line "WantedBy=multi-user.target" from /usr/lib/systemd/system/rpcbind.service. 

(And while you are at it, please drop "After=syslog.target network.target", too. syslog.target is entirely unnecessary these days, all services get syslog support for free anyway. And I don't see why rpcbind should require the network in any way. It just listens on 0.0.0.0 and AF_UNIX which both are available at any time anyway, so there's no need to wait for the network or anything.)

Comment 2 RHEL Program Management 2014-03-22 06:26:03 UTC
This request was not resolved in time for the current release.
Red Hat invites you to ask your support representative to
propose this request, if still desired, for consideration in
the next release of Red Hat Enterprise Linux.

Comment 5 Nate Straz 2014-10-29 18:33:54 UTC
rpcbind.socket should also listen to TCP port 111, otherwise the service won't get loaded when using the standard interfaces.  We have test programs that use  pmap_getmaps/pmap_set/pmap_unset and rpcbind was not starting automatically.

Comment 6 Steve Dickson 2014-11-03 18:31:41 UTC
(In reply to Nate Straz from comment #5)
> rpcbind.socket should also listen to TCP port 111, otherwise the service
> won't get loaded when using the standard interfaces.  We have test programs
> that use  pmap_getmaps/pmap_set/pmap_unset and rpcbind was not starting
> automatically.

In clue as how to do this?

Comment 7 Nate Straz 2014-11-03 19:37:56 UTC
That's a good question.  I tried doing something like this:

[Socket]
ListenStream=111
Accept=false

and found that systemd holds onto the port and accepts future connections, which ends up hanging processes trying to use pmap_*

Comment 8 JianHong Yin 2014-11-07 10:57:48 UTC
[root@rdma-qe-11 ~]# rpm -q rpcbind 
rpcbind-0.2.0-25.el7.x86_64
[root@rdma-qe-11 ~]# grep multi-user.target /usr/lib/systemd/system/rpcbind.service
[root@rdma-qe-11 ~]# cat /usr/lib/systemd/system/rpcbind.service 
[Unit]
Description=RPC bind service
Requires=rpcbind.socket

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/rpcbind
ExecStart=/sbin/rpcbind -w ${RPCBIND_ARGS}

[Install]
Also=rpcbind.socket
[root@rdma-qe-11 ~]#

Comment 10 errata-xmlrpc 2015-03-05 11:22:11 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-0489.html

Comment 11 Plumber Bot 2022-01-21 15:38:06 UTC
Dropping the stale needinfo. If our input is still needed, please set the needinfo again.