From 832c4045ab5c6d7fd118dabb9993d36301175ba0 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 14 Sep 2010 15:53:39 -0700 Subject: Make ebuild-ipc.py close the output_file before trying to re-open it after it has timed out. --- bin/ebuild-ipc.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'bin/ebuild-ipc.py') diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py index 20410eb85..2d524a752 100755 --- a/bin/ebuild-ipc.py +++ b/bin/ebuild-ipc.py @@ -94,6 +94,7 @@ class EbuildIpc(object): input_fd = os.open(self.ipc_out_fifo, os.O_RDONLY|os.O_NONBLOCK) input_file = os.fdopen(input_fd, 'rb', 0) + output_file = None while True: try: @@ -101,13 +102,17 @@ class EbuildIpc(object): portage.exception.AlarmSignal.register( self._COMMUNICATE_RETRY_TIMEOUT_SECONDS) + if output_file is not None: + output_file.close() + output_file = None + output_file = open(self.ipc_in_fifo, 'wb', 0) # Write the whole pickle in a single atomic write() call, # since the reader is in non-blocking mode and we want # it to get the whole pickle at once. output_file.write(pickle.dumps(args)) - output_file.flush() + output_file.close() break finally: portage.exception.AlarmSignal.unregister() @@ -172,7 +177,6 @@ class EbuildIpc(object): level=logging.ERROR, noiselevel=-1) else: - output_file.close() input_file.close() (out, err, rval) = reply -- cgit v1.2.3-1-g7c22