mercurial/chgserver.py
branchstable
changeset 49240 201222849987
parent 48486 7caaefa48794
child 49244 cd51d4957b28
equal deleted inserted replaced
49234:9dad328434c7 49240:201222849987
   463                     # of EPIPE. The data should belong to the current session
   463                     # of EPIPE. The data should belong to the current session
   464                     # and should never persist.
   464                     # and should never persist.
   465                     os.dup2(nullfd, fp.fileno())
   465                     os.dup2(nullfd, fp.fileno())
   466                     fp.flush()
   466                     fp.flush()
   467                 os.dup2(fd, fp.fileno())
   467                 os.dup2(fd, fp.fileno())
       
   468                 os.close(fd)
   468             except OSError as err:
   469             except OSError as err:
   469                 # According to issue6330, running chg on heavy loaded systems
   470                 # According to issue6330, running chg on heavy loaded systems
   470                 # can lead to EBUSY. [man dup2] indicates that, on Linux,
   471                 # can lead to EBUSY. [man dup2] indicates that, on Linux,
   471                 # EBUSY comes from a race condition between open() and dup2().
   472                 # EBUSY comes from a race condition between open() and dup2().
   472                 # However it's not clear why open() race occurred for
   473                 # However it's not clear why open() race occurred for
   475                     b'chgserver',
   476                     b'chgserver',
   476                     b'got %s while duplicating %s\n',
   477                     b'got %s while duplicating %s\n',
   477                     stringutil.forcebytestr(err),
   478                     stringutil.forcebytestr(err),
   478                     fn,
   479                     fn,
   479                 )
   480                 )
   480             os.close(fd)
       
   481             setattr(self, cn, ch)
   481             setattr(self, cn, ch)
   482             setattr(ui, fn, fp)
   482             setattr(ui, fn, fp)
   483         os.close(nullfd)
   483         os.close(nullfd)
   484         del self._oldios[:]
   484         del self._oldios[:]
   485 
   485