mercurial/lock.py
changeset 31375 d57aa655ce97
parent 31354 e6a2b625e0d9
child 31378 2e48c776a874
equal deleted inserted replaced
31374:d30fb3de4b40 31375:d57aa655ce97
    13 import socket
    13 import socket
    14 import time
    14 import time
    15 import warnings
    15 import warnings
    16 
    16 
    17 from . import (
    17 from . import (
       
    18     encoding,
    18     error,
    19     error,
    19     pycompat,
    20     pycompat,
    20     util,
    21     util,
    21 )
    22 )
    22 
    23 
    25 
    26 
    26     It's useful to detect "dead" processes and remove stale locks with
    27     It's useful to detect "dead" processes and remove stale locks with
    27     confidence. Typically it's just hostname. On modern linux, we include an
    28     confidence. Typically it's just hostname. On modern linux, we include an
    28     extra Linux-specific pid namespace identifier.
    29     extra Linux-specific pid namespace identifier.
    29     """
    30     """
    30     result = socket.gethostname()
    31     result = socket.gethostname().encode(
       
    32         pycompat.sysstr(encoding.encoding), 'replace')
    31     if pycompat.sysplatform.startswith('linux'):
    33     if pycompat.sysplatform.startswith('linux'):
    32         try:
    34         try:
    33             result += '/%x' % os.stat('/proc/self/ns/pid').st_ino
    35             result += '/%x' % os.stat('/proc/self/ns/pid').st_ino
    34         except OSError as ex:
    36         except OSError as ex:
    35             if ex.errno not in (errno.ENOENT, errno.EACCES, errno.ENOTDIR):
    37             if ex.errno not in (errno.ENOENT, errno.EACCES, errno.ENOTDIR):