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.
39 lines
1.2 KiB
39 lines
1.2 KiB
from abc import ABC, abstractmethod
|
|
|
|
from redis.multidb.failure_detector import FailureDetector
|
|
|
|
|
|
class AsyncFailureDetector(ABC):
|
|
@abstractmethod
|
|
async def register_failure(self, exception: Exception, cmd: tuple) -> None:
|
|
"""Register a failure that occurred during command execution."""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def register_command_execution(self, cmd: tuple) -> None:
|
|
"""Register a command execution."""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def set_command_executor(self, command_executor) -> None:
|
|
"""Set the command executor for this failure."""
|
|
pass
|
|
|
|
|
|
class FailureDetectorAsyncWrapper(AsyncFailureDetector):
|
|
"""
|
|
Async wrapper for the failure detector.
|
|
"""
|
|
|
|
def __init__(self, failure_detector: FailureDetector) -> None:
|
|
self._failure_detector = failure_detector
|
|
|
|
async def register_failure(self, exception: Exception, cmd: tuple) -> None:
|
|
self._failure_detector.register_failure(exception, cmd)
|
|
|
|
async def register_command_execution(self, cmd: tuple) -> None:
|
|
self._failure_detector.register_command_execution(cmd)
|
|
|
|
def set_command_executor(self, command_executor) -> None:
|
|
self._failure_detector.set_command_executor(command_executor)
|