Move CircuitBreaker to a shared module
Relocate CircuitBreaker from ingester/pollers to haiku/rag/circuit_breaker so non-ingester callers (docling-serve provider) can reuse it without depending on the ingester package. Co-Authored-By: bryan davis <bryan@monkeytronics.org> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d71695833d
commit
d781335868
9 changed files with 9 additions and 9 deletions
|
|
@ -5,7 +5,7 @@ from haiku.rag.config import CircuitBreakerConfig
|
||||||
|
|
||||||
|
|
||||||
class CircuitBreaker:
|
class CircuitBreaker:
|
||||||
"""Three-state breaker over discover() failures.
|
"""Three-state breaker over repeated failures of a single target.
|
||||||
|
|
||||||
- closed: failures are counted; threshold flips to open.
|
- closed: failures are counted; threshold flips to open.
|
||||||
- open: probes are blocked until cooldown elapses, then a single probe
|
- open: probes are blocked until cooldown elapses, then a single probe
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.ingester.pollers.factory import build_source
|
from haiku.rag.ingester.pollers.factory import build_source
|
||||||
from haiku.rag.ingester.pollers.fs import FSPoller
|
from haiku.rag.ingester.pollers.fs import FSPoller
|
||||||
from haiku.rag.ingester.pollers.manager import PollerManager
|
from haiku.rag.ingester.pollers.manager import PollerManager
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import logging
|
||||||
import random
|
import random
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
|
|
||||||
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.config import SourceConfig
|
from haiku.rag.config import SourceConfig
|
||||||
from haiku.rag.ingester.batch import BatchChange, BatchSourceSummary
|
from haiku.rag.ingester.batch import BatchChange, BatchSourceSummary
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
|
||||||
from haiku.rag.ingester.queue.models import JobOp, SyncRow
|
from haiku.rag.ingester.queue.models import JobOp, SyncRow
|
||||||
from haiku.rag.ingester.queue.repository import JobRepo, SyncStateRepo
|
from haiku.rag.ingester.queue.repository import JobRepo, SyncStateRepo
|
||||||
from haiku.rag.ingester.sources.base import (
|
from haiku.rag.ingester.sources.base import (
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ from haiku.rag.ingester.sources.filter import FileFilter
|
||||||
from haiku.rag.telemetry import logfire
|
from haiku.rag.telemetry import logfire
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.config import FSSourceConfig
|
from haiku.rag.config import FSSourceConfig
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
|
||||||
from haiku.rag.ingester.sources.fs import FSSource
|
from haiku.rag.ingester.sources.fs import FSSource
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ from collections.abc import Sequence
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.config import FSSourceConfig, SourceConfig
|
from haiku.rag.config import FSSourceConfig, SourceConfig
|
||||||
from haiku.rag.ingester.batch import BatchManifest
|
from haiku.rag.ingester.batch import BatchManifest
|
||||||
from haiku.rag.ingester.pollers.base import BasePoller
|
from haiku.rag.ingester.pollers.base import BasePoller
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
|
||||||
from haiku.rag.ingester.pollers.factory import build_source
|
from haiku.rag.ingester.pollers.factory import build_source
|
||||||
from haiku.rag.ingester.pollers.fs import FSPoller
|
from haiku.rag.ingester.pollers.fs import FSPoller
|
||||||
from haiku.rag.ingester.pollers.periodic import PeriodicPoller
|
from haiku.rag.ingester.pollers.periodic import PeriodicPoller
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
|
||||||
from haiku.rag.ingester.pollers.base import BasePoller
|
from haiku.rag.ingester.pollers.base import BasePoller
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
|
|
||||||
|
|
||||||
class PeriodicPoller(BasePoller):
|
class PeriodicPoller(BasePoller):
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.config import CircuitBreakerConfig
|
from haiku.rag.config import CircuitBreakerConfig
|
||||||
from haiku.rag.ingester.exceptions import PermanentError, TransientError
|
from haiku.rag.ingester.exceptions import PermanentError, TransientError
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
|
||||||
from haiku.rag.ingester.queue.models import Job, JobOp
|
from haiku.rag.ingester.queue.models import Job, JobOp
|
||||||
from haiku.rag.ingester.queue.repository import JobRepo, SyncStateRepo
|
from haiku.rag.ingester.queue.repository import JobRepo, SyncStateRepo
|
||||||
from haiku.rag.ingester.workers.pipeline import run_job
|
from haiku.rag.ingester.workers.pipeline import run_job
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.config import CircuitBreakerConfig
|
from haiku.rag.config import CircuitBreakerConfig
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
|
||||||
|
|
||||||
|
|
||||||
class _Clock:
|
class _Clock:
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from haiku.rag.circuit_breaker import CircuitBreaker
|
||||||
from haiku.rag.config import (
|
from haiku.rag.config import (
|
||||||
CircuitBreakerConfig,
|
CircuitBreakerConfig,
|
||||||
FSSourceConfig,
|
FSSourceConfig,
|
||||||
|
|
@ -11,7 +12,6 @@ from haiku.rag.config import (
|
||||||
S3SourceConfig,
|
S3SourceConfig,
|
||||||
WebDAVSourceConfig,
|
WebDAVSourceConfig,
|
||||||
)
|
)
|
||||||
from haiku.rag.ingester.pollers.circuit_breaker import CircuitBreaker
|
|
||||||
from haiku.rag.ingester.pollers.manager import PollerManager
|
from haiku.rag.ingester.pollers.manager import PollerManager
|
||||||
from haiku.rag.ingester.pollers.periodic import PeriodicPoller
|
from haiku.rag.ingester.pollers.periodic import PeriodicPoller
|
||||||
from haiku.rag.ingester.queue.models import JobOp, JobStatus
|
from haiku.rag.ingester.queue.models import JobOp, JobStatus
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue