summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-28 15:42:50 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-30 08:43:36 +0100
commit07cee9dea1ad3408a49e4b9d9f5318474ddfa60b (patch)
tree716bc34d7de4192bfcdaeac63a7e5dc9888145fb /bitbake
parentb2c39835bb61687220abbef72e4f69a272cf8afb (diff)
downloadpoky-07cee9dea1ad3408a49e4b9d9f5318474ddfa60b.tar.gz
bitbake: process: Don't leak open pipes upon reconnection
If we reconnect to the server, stop leaking pipes and clean up after ourselves. (Bitbake rev: f41e4e971e807157be68cf4496580494b8b60643) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/server/process.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index 6106c07380..3530bdc07e 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -420,7 +420,11 @@ def connectProcessServer(sockname, featureset):
420 finally: 420 finally:
421 os.chdir(cwd) 421 os.chdir(cwd)
422 422
423 readfd = writefd = readfd1 = writefd1 = readfd2 = writefd2 = None
424 eq = command_chan_recv = command_chan = None
425
423 try: 426 try:
427
424 # Send an fd for the remote to write events to 428 # Send an fd for the remote to write events to
425 readfd, writefd = os.pipe() 429 readfd, writefd = os.pipe()
426 eq = BBUIEventQueue(readfd) 430 eq = BBUIEventQueue(readfd)
@@ -435,9 +439,22 @@ def connectProcessServer(sockname, featureset):
435 439
436 server_connection = BitBakeProcessServerConnection(command_chan, command_chan_recv, eq, sock) 440 server_connection = BitBakeProcessServerConnection(command_chan, command_chan_recv, eq, sock)
437 441
442 # Close the ends of the pipes we won't use
443 for i in [writefd, readfd1, writefd2]:
444 os.close(i)
445
438 server_connection.connection.updateFeatureSet(featureset) 446 server_connection.connection.updateFeatureSet(featureset)
439 447
440 except: 448 except (Exception, SystemExit) as e:
449 if command_chan_recv:
450 command_chan_recv.close()
451 if command_chan:
452 command_chan.close()
453 for i in [writefd, readfd1, writefd2]:
454 try:
455 os.close(i)
456 except OSError:
457 pass
441 sock.close() 458 sock.close()
442 raise 459 raise
443 460