diff options
| author | Aleksandr <[email protected]> | 2022-02-10 16:47:52 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:47:52 +0300 | 
| commit | ea6c5b7f172becca389cacaff7d5f45f6adccbe6 (patch) | |
| tree | d16cef493ac1e092b4a03ab9437ec06ffe3d188f /build/scripts/error.py | |
| parent | 37de222addabbef336dcaaea5f7c7645a629fc6d (diff) | |
Restoring authorship annotation for Aleksandr <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'build/scripts/error.py')
| -rw-r--r-- | build/scripts/error.py | 58 | 
1 files changed, 29 insertions, 29 deletions
diff --git a/build/scripts/error.py b/build/scripts/error.py index f7d8ecb2cc0..6e4256e5c25 100644 --- a/build/scripts/error.py +++ b/build/scripts/error.py @@ -1,19 +1,19 @@ -# Sync content of this file with devtools/ya/core/error/__init__.py - +# Sync content of this file with devtools/ya/core/error/__init__.py  +   TEMPORARY_ERROR_MESSAGES = [ -    'Connection reset by peer', -    'Connection timed out', -    'Function not implemented', -    'I/O operation on closed file', -    'Internal Server Error', -    'Network connection closed unexpectedly', +    'Connection reset by peer',  +    'Connection timed out',  +    'Function not implemented',  +    'I/O operation on closed file',  +    'Internal Server Error',  +    'Network connection closed unexpectedly',       'Network is unreachable',      'No route to host', -    'No space left on device', -    'Not enough space', -    'Temporary failure in name resolution', +    'No space left on device',  +    'Not enough space',  +    'Temporary failure in name resolution',       'The read operation timed out', -    'timeout: timed out', +    'timeout: timed out',   ] @@ -23,55 +23,55 @@ class ExitCodes(object):      COMPILATION_FAILED = 11      INFRASTRUCTURE_ERROR = 12      NOT_RETRIABLE_ERROR = 13 -    YT_STORE_FETCH_ERROR = 14 +    YT_STORE_FETCH_ERROR = 14   def merge_exit_codes(exit_codes): -    return max(e if e >= 0 else 1 for e in exit_codes) if exit_codes else 0 +    return max(e if e >= 0 else 1 for e in exit_codes) if exit_codes else 0   def is_temporary_error(exc): -    import logging -    logger = logging.getLogger(__name__) - +    import logging  +    logger = logging.getLogger(__name__)  +       if getattr(exc, 'temporary', False): -        logger.debug("Exception has temporary attribute: %s", exc) +        logger.debug("Exception has temporary attribute: %s", exc)           return True      import errno      err = getattr(exc, 'errno', None)      if err == errno.ECONNREFUSED or err == errno.ENETUNREACH: -        logger.debug("Exception has errno attribute: %s (errno=%s)", exc, err) +        logger.debug("Exception has errno attribute: %s (errno=%s)", exc, err)           return True      import socket      if isinstance(exc, socket.timeout) or isinstance(getattr(exc, 'reason', None), socket.timeout): -        logger.debug("Socket timeout exception: %s", exc) +        logger.debug("Socket timeout exception: %s", exc)           return True      if isinstance(exc, socket.gaierror): -        logger.debug("Getaddrinfo exception: %s", exc) -        return True - -    import urllib2 - -    if isinstance(exc, urllib2.HTTPError) and exc.code in (429, ): -        logger.debug("urllib2.HTTPError: %s", exc) +        logger.debug("Getaddrinfo exception: %s", exc)           return True +    import urllib2  +  +    if isinstance(exc, urllib2.HTTPError) and exc.code in (429, ):  +        logger.debug("urllib2.HTTPError: %s", exc)  +        return True  +       import httplib      if isinstance(exc, httplib.IncompleteRead): -        logger.debug("IncompleteRead exception: %s", exc) +        logger.debug("IncompleteRead exception: %s", exc)           return True      exc_str = str(exc)      for message in TEMPORARY_ERROR_MESSAGES:          if message in exc_str: -            logger.debug("Found temporary error pattern (%s): %s", message, exc_str) +            logger.debug("Found temporary error pattern (%s): %s", message, exc_str)               return True      return False  | 
