图片解析应用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

218 lines
4.4 KiB

  1. """Kazoo Exceptions"""
  2. from collections import defaultdict
  3. class KazooException(Exception):
  4. """Base Kazoo exception that all other kazoo library exceptions
  5. inherit from"""
  6. class ZookeeperError(KazooException):
  7. """Base Zookeeper exception for errors originating from the
  8. Zookeeper server"""
  9. class CancelledError(KazooException):
  10. """Raised when a process is cancelled by another thread"""
  11. class ConfigurationError(KazooException):
  12. """Raised if the configuration arguments to an object are
  13. invalid"""
  14. class ZookeeperStoppedError(KazooException):
  15. """Raised when the kazoo client stopped (and thus not connected)"""
  16. class ConnectionDropped(KazooException):
  17. """Internal error for jumping out of loops"""
  18. class LockTimeout(KazooException):
  19. """Raised if failed to acquire a lock.
  20. .. versionadded:: 1.1
  21. """
  22. class WriterNotClosedException(KazooException):
  23. """Raised if the writer is unable to stop closing when requested.
  24. .. versionadded:: 1.2
  25. """
  26. class SASLException(KazooException):
  27. """Raised if SASL encountered a (local) error.
  28. .. versionadded:: 2.7.0
  29. """
  30. def _invalid_error_code():
  31. raise RuntimeError("Invalid error code")
  32. EXCEPTIONS = defaultdict(_invalid_error_code)
  33. def _zookeeper_exception(code):
  34. def decorator(klass):
  35. EXCEPTIONS[code] = klass
  36. klass.code = code
  37. return klass
  38. return decorator
  39. @_zookeeper_exception(0)
  40. class RolledBackError(ZookeeperError):
  41. pass
  42. @_zookeeper_exception(-1)
  43. class SystemZookeeperError(ZookeeperError):
  44. pass
  45. @_zookeeper_exception(-2)
  46. class RuntimeInconsistency(ZookeeperError):
  47. pass
  48. @_zookeeper_exception(-3)
  49. class DataInconsistency(ZookeeperError):
  50. pass
  51. @_zookeeper_exception(-4)
  52. class ConnectionLoss(ZookeeperError):
  53. pass
  54. @_zookeeper_exception(-5)
  55. class MarshallingError(ZookeeperError):
  56. pass
  57. @_zookeeper_exception(-6)
  58. class UnimplementedError(ZookeeperError):
  59. pass
  60. @_zookeeper_exception(-7)
  61. class OperationTimeoutError(ZookeeperError):
  62. pass
  63. @_zookeeper_exception(-8)
  64. class BadArgumentsError(ZookeeperError):
  65. pass
  66. @_zookeeper_exception(-13)
  67. class NewConfigNoQuorumError(ZookeeperError):
  68. pass
  69. @_zookeeper_exception(-14)
  70. class ReconfigInProcessError(ZookeeperError):
  71. pass
  72. @_zookeeper_exception(-100)
  73. class APIError(ZookeeperError):
  74. pass
  75. @_zookeeper_exception(-101)
  76. class NoNodeError(ZookeeperError):
  77. pass
  78. @_zookeeper_exception(-102)
  79. class NoAuthError(ZookeeperError):
  80. pass
  81. @_zookeeper_exception(-103)
  82. class BadVersionError(ZookeeperError):
  83. pass
  84. @_zookeeper_exception(-108)
  85. class NoChildrenForEphemeralsError(ZookeeperError):
  86. pass
  87. @_zookeeper_exception(-110)
  88. class NodeExistsError(ZookeeperError):
  89. pass
  90. @_zookeeper_exception(-111)
  91. class NotEmptyError(ZookeeperError):
  92. pass
  93. @_zookeeper_exception(-112)
  94. class SessionExpiredError(ZookeeperError):
  95. pass
  96. @_zookeeper_exception(-113)
  97. class InvalidCallbackError(ZookeeperError):
  98. pass
  99. @_zookeeper_exception(-114)
  100. class InvalidACLError(ZookeeperError):
  101. pass
  102. @_zookeeper_exception(-115)
  103. class AuthFailedError(ZookeeperError):
  104. pass
  105. @_zookeeper_exception(-118)
  106. class SessionMovedError(ZookeeperError):
  107. pass
  108. @_zookeeper_exception(-119)
  109. class NotReadOnlyCallError(ZookeeperError):
  110. """An API call that is not read-only was used while connected to
  111. a read-only server"""
  112. @_zookeeper_exception(-125)
  113. class QuotaExceededError(ZookeeperError):
  114. """Exceeded the quota that was set on the path"""
  115. class ConnectionClosedError(SessionExpiredError):
  116. """Connection is closed"""
  117. # BW Compat aliases for C lib style exceptions
  118. ConnectionLossException = ConnectionLoss
  119. MarshallingErrorException = MarshallingError
  120. SystemErrorException = SystemZookeeperError
  121. RuntimeInconsistencyException = RuntimeInconsistency
  122. DataInconsistencyException = DataInconsistency
  123. UnimplementedException = UnimplementedError
  124. OperationTimeoutException = OperationTimeoutError
  125. BadArgumentsException = BadArgumentsError
  126. ApiErrorException = APIError
  127. NoNodeException = NoNodeError
  128. NoAuthException = NoAuthError
  129. BadVersionException = BadVersionError
  130. NoChildrenForEphemeralsException = NoChildrenForEphemeralsError
  131. NodeExistsException = NodeExistsError
  132. InvalidACLException = InvalidACLError
  133. AuthFailedException = AuthFailedError
  134. NotEmptyException = NotEmptyError
  135. SessionExpiredException = SessionExpiredError
  136. InvalidCallbackException = InvalidCallbackError