[2.0] get_dhclient_info can raise a ProcessLookupError which makes registration fail

Bug #1552726 reported by Blake Rouse
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MAAS
Fix Released
Critical
Blake Rouse

Bug Description

2016-03-03 14:20:39+0000 [ClusterClient,client] Event-loop 'maas-1:pid=927' authenticated.
2016-03-03 14:20:39+0000 [ClusterClient,client] Event-loop 'maas-1:pid=927' handshake failed; dropping connection.
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 393, in callback
     self._startRunCallbacks(result)
   File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 501, in _startRunCallbacks
     self._runCallbacks()
   File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 588, in _runCallbacks
     current.result = callback(current.result, *args, **kw)
   File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1184, in gotResult
     _inlineCallbacks(r, g, deferred)
 --- <exception caught here> ---
   File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1128, in _inlineCallbacks
     result = g.send(result)
   File "/usr/lib/python3/dist-packages/provisioningserver/rpc/clusterservice.py", line 539, in performHandshake
     registered = yield self.registerRackWithRegion()
   File "/usr/lib/python3/dist-packages/provisioningserver/rpc/clusterservice.py", line 507, in registerRackWithRegion
     interfaces, _ = get_interfaces_definition()
   File "/usr/lib/python3/dist-packages/provisioningserver/networks.py", line 28, in get_interfaces_definition
     new_definition = get_all_interfaces_definition()
   File "/usr/lib/python3/dist-packages/provisioningserver/utils/network.py", line 602, in get_all_interfaces_definition
     dhclient_info = get_dhclient_info()
   File "/usr/lib/python3/dist-packages/provisioningserver/utils/dhclient.py", line 54, in get_dhclient_info
     "dhclient", proc_path=proc_path)
   File "/usr/lib/python3/dist-packages/provisioningserver/utils/ps.py", line 51, in get_running_pids_with_command
     os.path.join(proc_path, pid, "comm")).strip()
   File "/usr/lib/python3/dist-packages/provisioningserver/utils/fs.py", line 347, in read_text_file
     return infile.read()
   File "/usr/lib/python3.5/codecs.py", line 698, in read
     return self.reader.read(size)
   File "/usr/lib/python3.5/codecs.py", line 493, in read
     newdata = self.stream.read()
 builtins.ProcessLookupError: [Errno 3] No such process

Related branches

Changed in maas:
status: In Progress → Fix Committed
Changed in maas:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.