Source code for hazelcast.errors

import socket

EXCEPTION_MESSAGE_TYPE = 0


def retryable(cls):
    cls.retryable = True
    return cls


[docs]class HazelcastError(Exception): """General HazelcastError class.""" def __init__(self, message=None, cause=None): super(HazelcastError, self).__init__(message, cause) def __str__(self): message, cause = self.args if cause: return "%s\nCaused by: %s" % (message, str(cause)) return message or self.__class__.__name__
[docs]class ArrayIndexOutOfBoundsError(HazelcastError): pass
[docs]class ArrayStoreError(HazelcastError): pass
[docs]class AuthenticationError(HazelcastError): pass
[docs]class CacheNotExistsError(HazelcastError): pass
[docs]@retryable class CallerNotMemberError(HazelcastError): pass
[docs]class CancellationError(HazelcastError): pass
[docs]class ClassCastError(HazelcastError): pass
[docs]class ClassNotFoundError(HazelcastError): pass
[docs]class ConcurrentModificationError(HazelcastError): pass
[docs]class ConfigMismatchError(HazelcastError): pass
[docs]class ConfigurationError(HazelcastError): pass
[docs]class DistributedObjectDestroyedError(HazelcastError): pass
[docs]class DuplicateInstanceNameError(HazelcastError): pass
[docs]class HazelcastEOFError(HazelcastError): pass
[docs]class ExecutionError(HazelcastError): pass
[docs]@retryable class HazelcastInstanceNotActiveError(HazelcastError): pass
[docs]class HazelcastOverloadError(HazelcastError): pass
[docs]class HazelcastSerializationError(HazelcastError): pass
[docs]class HazelcastIOError(HazelcastError): pass
[docs]class IllegalArgumentError(HazelcastError): pass
[docs]class IllegalAccessException(HazelcastError): pass
[docs]class IllegalAccessError(HazelcastError): pass
[docs]class IllegalMonitorStateError(HazelcastError): pass
[docs]class IllegalStateError(HazelcastError): pass
[docs]class IllegalThreadStateError(HazelcastError): pass
[docs]class IndexOutOfBoundsError(HazelcastError): pass
[docs]class HazelcastInterruptedError(HazelcastError): pass
[docs]class InvalidAddressError(HazelcastError): pass
[docs]class InvalidConfigurationError(HazelcastError): pass
[docs]@retryable class MemberLeftError(HazelcastError): pass
[docs]class NegativeArraySizeError(HazelcastError): pass
[docs]class NoSuchElementError(HazelcastError): pass
[docs]class NotSerializableError(HazelcastError): pass
[docs]class NullPointerError(HazelcastError): pass
[docs]class OperationTimeoutError(HazelcastError): pass
[docs]@retryable class PartitionMigratingError(HazelcastError): pass
[docs]class QueryError(HazelcastError): pass
[docs]class QueryResultSizeExceededError(HazelcastError): pass
[docs]class SplitBrainProtectionError(HazelcastError): pass
[docs]class ReachedMaxSizeError(HazelcastError): pass
[docs]class RejectedExecutionError(HazelcastError): pass
[docs]class ResponseAlreadySentError(HazelcastError): pass
[docs]@retryable class RetryableHazelcastError(HazelcastError): pass
[docs]@retryable class RetryableIOError(HazelcastError): pass
[docs]class HazelcastRuntimeError(HazelcastError): pass
[docs]class SecurityError(HazelcastError): pass
[docs]class SocketError(HazelcastError): pass
[docs]class StaleSequenceError(HazelcastError): pass
[docs]class TargetDisconnectedError(HazelcastError): pass
[docs]@retryable class TargetNotMemberError(HazelcastError): pass
[docs]class HazelcastTimeoutError(HazelcastError): pass
[docs]class TopicOverloadError(HazelcastError): pass
[docs]class TransactionError(HazelcastError): pass
[docs]class TransactionNotActiveError(HazelcastError): pass
[docs]class TransactionTimedOutError(HazelcastError): pass
[docs]class URISyntaxError(HazelcastError): pass
[docs]class UTFDataFormatError(HazelcastError): pass
[docs]class UnsupportedOperationError(HazelcastError): pass
[docs]@retryable class WrongTargetError(HazelcastError): pass
[docs]class XAError(HazelcastError): pass
[docs]class AccessControlError(HazelcastError): pass
[docs]class LoginError(HazelcastError): pass
[docs]class UnsupportedCallbackError(HazelcastError): pass
[docs]class NoDataMemberInClusterError(HazelcastError): pass
[docs]class ReplicatedMapCantBeCreatedOnLiteMemberError(HazelcastError): pass
[docs]class MaxMessageSizeExceededError(HazelcastError): pass
[docs]class WANReplicationQueueFullError(HazelcastError): pass
[docs]class HazelcastAssertionError(HazelcastError): pass
[docs]class OutOfMemoryError(HazelcastError): pass
[docs]class StackOverflowError(HazelcastError): pass
[docs]class NativeOutOfMemoryError(HazelcastError): pass
[docs]class ServiceNotFoundError(HazelcastError): pass
[docs]class StaleTaskIdError(HazelcastError): pass
[docs]class DuplicateTaskError(HazelcastError): pass
[docs]class StaleTaskError(HazelcastError): pass
[docs]class LocalMemberResetError(HazelcastError): pass
[docs]class IndeterminateOperationStateError(HazelcastError): pass
[docs]class NodeIdOutOfRangeError(HazelcastError): pass
[docs]@retryable class TargetNotReplicaError(HazelcastError): pass
[docs]class MutationDisallowedError(HazelcastError): pass
[docs]class ConsistencyLostError(HazelcastError): pass
[docs]class HazelcastClientNotActiveError(HazelcastError): def __init__(self, message="Client is not active"): super(HazelcastClientNotActiveError, self).__init__(message)
[docs]class HazelcastCertificationError(HazelcastError): pass
[docs]class ClientOfflineError(HazelcastError): def __init__(self): super(ClientOfflineError, self).__init__("No connection found to cluster")
[docs]class ClientNotAllowedInClusterError(HazelcastError): pass
[docs]class VersionMismatchError(HazelcastError): pass
[docs]class NoSuchMethodError(HazelcastError): pass
[docs]class NoSuchMethodException(HazelcastError): pass
[docs]class NoSuchFieldError(HazelcastError): pass
[docs]class NoSuchFieldException(HazelcastError): pass
[docs]class NoClassDefFoundError(HazelcastError): pass
[docs]class UndefinedErrorCodeError(HazelcastError): pass
[docs]class SessionExpiredError(HazelcastError): pass
[docs]class WaitKeyCancelledError(HazelcastError): pass
[docs]class LockAcquireLimitReachedError(HazelcastError): pass
[docs]class LockOwnershipLostError(HazelcastError): pass
[docs]class CPGroupDestroyedError(HazelcastError): pass
[docs]@retryable class CannotReplicateError(HazelcastError): pass
[docs]class LeaderDemotedError(HazelcastError): pass
[docs]class StaleAppendRequestError(HazelcastError): pass
[docs]class NotLeaderError(HazelcastError): pass
# Error Codes _UNDEFINED = 0 _ARRAY_INDEX_OUT_OF_BOUNDS = 1 _ARRAY_STORE = 2 _AUTHENTICATION = 3 _CACHE = 4 _CACHE_LOADER = 5 _CACHE_NOT_EXISTS = 6 _CACHE_WRITER = 7 _CALLER_NOT_MEMBER = 8 _CANCELLATION = 9 _CLASS_CAST = 10 _CLASS_NOT_FOUND = 11 _CONCURRENT_MODIFICATION = 12 _CONFIG_MISMATCH = 13 _DISTRIBUTED_OBJECT_DESTROYED = 14 _EOF = 15 _ENTRY_PROCESSOR = 16 _EXECUTION = 17 _HAZELCAST = 18 _HAZELCAST_INSTANCE_NOT_ACTIVE = 19 _HAZELCAST_OVERLOAD = 20 _HAZELCAST_SERIALIZATION = 21 _IO = 22 _ILLEGAL_ARGUMENT = 23 _ILLEGAL_ACCESS_EXCEPTION = 24 _ILLEGAL_ACCESS_ERROR = 25 _ILLEGAL_MONITOR_STATE = 26 _ILLEGAL_STATE = 27 _ILLEGAL_THREAD_STATE = 28 _INDEX_OUT_OF_BOUNDS = 29 _INTERRUPTED = 30 _INVALID_ADDRESS = 31 _INVALID_CONFIGURATION = 32 _MEMBER_LEFT = 33 _NEGATIVE_ARRAY_SIZE = 34 _NO_SUCH_ELEMENT = 35 _NOT_SERIALIZABLE = 36 _NULL_POINTER = 37 _OPERATION_TIMEOUT = 38 _PARTITION_MIGRATING = 39 _QUERY = 40 _QUERY_RESULT_SIZE_EXCEEDED = 41 _SPLIT_BRAIN_PROTECTION = 42 _REACHED_MAX_SIZE = 43 _REJECTED_EXECUTION = 44 _RESPONSE_ALREADY_SENT = 45 _RETRYABLE_HAZELCAST = 46 _RETRYABLE_IO = 47 _RUNTIME = 48 _SECURITY = 49 _SOCKET = 50 _STALE_SEQUENCE = 51 _TARGET_DISCONNECTED = 52 _TARGET_NOT_MEMBER = 53 _TIMEOUT = 54 _TOPIC_OVERLOAD = 55 _TRANSACTION = 56 _TRANSACTION_NOT_ACTIVE = 57 _TRANSACTION_TIMED_OUT = 58 _URI_SYNTAX = 59 _UTF_DATA_FORMAT = 60 _UNSUPPORTED_OPERATION = 61 _WRONG_TARGET = 62 _XA = 63 _ACCESS_CONTROL = 64 _LOGIN = 65 _UNSUPPORTED_CALLBACK = 66 _NO_DATA_MEMBER = 67 _REPLICATED_MAP_CANT_BE_CREATED = 68 _MAX_MESSAGE_SIZE_EXCEEDED = 69 _WAN_REPLICATION_QUEUE_FULL = 70 _ASSERTION_ERROR = 71 _OUT_OF_MEMORY_ERROR = 72 _STACK_OVERFLOW_ERROR = 73 _NATIVE_OUT_OF_MEMORY_ERROR = 74 _SERVICE_NOT_FOUND = 75 _STALE_TASK_ID = 76 _DUPLICATE_TASK = 77 _STALE_TASK = 78 _LOCAL_MEMBER_RESET = 79 _INDETERMINATE_OPERATION_STATE = 80 _FLAKE_ID_NODE_ID_OUT_OF_RANGE_EXCEPTION = 81 _TARGET_NOT_REPLICA_EXCEPTION = 82 _MUTATION_DISALLOWED_EXCEPTION = 83 _CONSISTENCY_LOST_EXCEPTION = 84 _SESSION_EXPIRED_EXCEPTION = 85 _WAIT_KEY_CANCELLED_EXCEPTION = 86 _LOCK_ACQUIRE_LIMIT_REACHED_EXCEPTION = 87 _LOCK_OWNERSHIP_LOST_EXCEPTION = 88 _CP_GROUP_DESTROYED_EXCEPTION = 89 _CANNOT_REPLICATE_EXCEPTION = 90 _LEADER_DEMOTED_EXCEPTION = 91 _STALE_APPEND_REQUEST_EXCEPTION = 92 _NOT_LEADER_EXCEPTION = 93 _VERSION_MISMATCH_EXCEPTION = 94 _NO_SUCH_METHOD_ERROR = 95 _NO_SUCH_METHOD_EXCEPTION = 96 _NO_SUCH_FIELD_ERROR = 97 _NO_SUCH_FIELD_EXCEPTION = 98 _NO_CLASS_DEF_FOUND_ERROR = 99 _ERROR_CODE_TO_ERROR = { _ARRAY_INDEX_OUT_OF_BOUNDS: ArrayIndexOutOfBoundsError, _ARRAY_STORE: ArrayStoreError, _AUTHENTICATION: AuthenticationError, _CACHE_NOT_EXISTS: CacheNotExistsError, _CALLER_NOT_MEMBER: CallerNotMemberError, _CANCELLATION: CancellationError, _CLASS_CAST: ClassCastError, _CLASS_NOT_FOUND: ClassNotFoundError, _CONCURRENT_MODIFICATION: ConcurrentModificationError, _CONFIG_MISMATCH: ConfigMismatchError, _DISTRIBUTED_OBJECT_DESTROYED: DistributedObjectDestroyedError, _EOF: HazelcastEOFError, _EXECUTION: ExecutionError, _HAZELCAST: HazelcastError, _HAZELCAST_INSTANCE_NOT_ACTIVE: HazelcastInstanceNotActiveError, _HAZELCAST_OVERLOAD: HazelcastOverloadError, _HAZELCAST_SERIALIZATION: HazelcastSerializationError, _IO: HazelcastIOError, _ILLEGAL_ARGUMENT: IllegalArgumentError, _ILLEGAL_ACCESS_EXCEPTION: IllegalAccessException, _ILLEGAL_ACCESS_ERROR: IllegalAccessError, _ILLEGAL_MONITOR_STATE: IllegalMonitorStateError, _ILLEGAL_STATE: IllegalStateError, _ILLEGAL_THREAD_STATE: IllegalThreadStateError, _INDEX_OUT_OF_BOUNDS: IndexOutOfBoundsError, _INTERRUPTED: HazelcastInterruptedError, _INVALID_ADDRESS: InvalidAddressError, _INVALID_CONFIGURATION: InvalidConfigurationError, _MEMBER_LEFT: MemberLeftError, _NEGATIVE_ARRAY_SIZE: NegativeArraySizeError, _NO_SUCH_ELEMENT: NoSuchElementError, _NOT_SERIALIZABLE: NotSerializableError, _NULL_POINTER: NullPointerError, _OPERATION_TIMEOUT: OperationTimeoutError, _PARTITION_MIGRATING: PartitionMigratingError, _QUERY: QueryError, _QUERY_RESULT_SIZE_EXCEEDED: QueryResultSizeExceededError, _SPLIT_BRAIN_PROTECTION: SplitBrainProtectionError, _REACHED_MAX_SIZE: ReachedMaxSizeError, _REJECTED_EXECUTION: RejectedExecutionError, _RESPONSE_ALREADY_SENT: ResponseAlreadySentError, _RETRYABLE_HAZELCAST: RetryableHazelcastError, _RETRYABLE_IO: RetryableIOError, _RUNTIME: HazelcastRuntimeError, _SECURITY: SecurityError, _SOCKET: socket.error, _STALE_SEQUENCE: StaleSequenceError, _TARGET_DISCONNECTED: TargetDisconnectedError, _TARGET_NOT_MEMBER: TargetNotMemberError, _TIMEOUT: HazelcastTimeoutError, _TOPIC_OVERLOAD: TopicOverloadError, _TRANSACTION: TransactionError, _TRANSACTION_NOT_ACTIVE: TransactionNotActiveError, _TRANSACTION_TIMED_OUT: TransactionTimedOutError, _URI_SYNTAX: URISyntaxError, _UTF_DATA_FORMAT: UTFDataFormatError, _UNSUPPORTED_OPERATION: UnsupportedOperationError, _WRONG_TARGET: WrongTargetError, _XA: XAError, _ACCESS_CONTROL: AccessControlError, _LOGIN: LoginError, _UNSUPPORTED_CALLBACK: UnsupportedCallbackError, _NO_DATA_MEMBER: NoDataMemberInClusterError, _REPLICATED_MAP_CANT_BE_CREATED: ReplicatedMapCantBeCreatedOnLiteMemberError, _MAX_MESSAGE_SIZE_EXCEEDED: MaxMessageSizeExceededError, _WAN_REPLICATION_QUEUE_FULL: WANReplicationQueueFullError, _ASSERTION_ERROR: HazelcastAssertionError, _OUT_OF_MEMORY_ERROR: OutOfMemoryError, _STACK_OVERFLOW_ERROR: StackOverflowError, _NATIVE_OUT_OF_MEMORY_ERROR: NativeOutOfMemoryError, _SERVICE_NOT_FOUND: ServiceNotFoundError, _STALE_TASK_ID: StaleTaskIdError, _DUPLICATE_TASK: DuplicateTaskError, _STALE_TASK: StaleTaskError, _LOCAL_MEMBER_RESET: LocalMemberResetError, _INDETERMINATE_OPERATION_STATE: IndeterminateOperationStateError, _FLAKE_ID_NODE_ID_OUT_OF_RANGE_EXCEPTION: NodeIdOutOfRangeError, _TARGET_NOT_REPLICA_EXCEPTION: TargetNotReplicaError, _MUTATION_DISALLOWED_EXCEPTION: MutationDisallowedError, _CONSISTENCY_LOST_EXCEPTION: ConsistencyLostError, _SESSION_EXPIRED_EXCEPTION: SessionExpiredError, _WAIT_KEY_CANCELLED_EXCEPTION: WaitKeyCancelledError, _LOCK_ACQUIRE_LIMIT_REACHED_EXCEPTION: LockAcquireLimitReachedError, _LOCK_OWNERSHIP_LOST_EXCEPTION: LockOwnershipLostError, _CP_GROUP_DESTROYED_EXCEPTION: CPGroupDestroyedError, _CANNOT_REPLICATE_EXCEPTION: CannotReplicateError, _LEADER_DEMOTED_EXCEPTION: LeaderDemotedError, _STALE_APPEND_REQUEST_EXCEPTION: StaleAppendRequestError, _NOT_LEADER_EXCEPTION: NotLeaderError, _VERSION_MISMATCH_EXCEPTION: VersionMismatchError, _NO_SUCH_METHOD_ERROR: NoSuchMethodError, _NO_SUCH_METHOD_EXCEPTION: NoSuchMethodException, _NO_SUCH_FIELD_ERROR: NoSuchFieldError, _NO_SUCH_FIELD_EXCEPTION: NoSuchFieldException, _NO_CLASS_DEF_FOUND_ERROR: NoClassDefFoundError, } from hazelcast.protocol.builtin import ListMultiFrameCodec from hazelcast.protocol.codec.custom.error_holder_codec import ErrorHolderCodec class _ErrorsCodec(object): @staticmethod def decode(msg): msg.next_frame() return ListMultiFrameCodec.decode(msg, ErrorHolderCodec.decode) def create_error_from_message(error_message): error_holders = _ErrorsCodec.decode(error_message) return _create_error(error_holders, 0) def _create_error(error_holders, idx): if idx == len(error_holders): return None error_holder = error_holders[idx] error_class = _ERROR_CODE_TO_ERROR.get(error_holder.error_code, None) stack_trace = "\n".join( [ "\tat %s.%s(%s:%s)" % (x.class_name, x.method_name, x.file_name, x.line_number) for x in error_holder.stack_trace_elements ] ) message = "Exception from server: %s: %s\n %s" % ( error_holder.class_name, error_holder.message, stack_trace, ) if error_class: return error_class(message, _create_error(error_holders, idx + 1)) else: return UndefinedErrorCodeError(message, error_holder.class_name) def is_retryable_error(error): return hasattr(error, "retryable")