Skip to content

Commit f7b2041

Browse files
HyeockJinKimclaude
andauthored
feat(BA-3044): Add dependency verification system for web component (#6757)
Co-authored-by: Claude <noreply@anthropic.com>
1 parent a7e8ccf commit f7b2041

37 files changed

Lines changed: 984 additions & 36 deletions

File tree

changes/6757.feature.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add dependency verification system for web component

src/ai/backend/common/exception.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,3 +801,19 @@ def error_code(self) -> ErrorCode:
801801
operation=ErrorOperation.READ,
802802
error_detail=ErrorDetail.UNAVAILABLE,
803803
)
804+
805+
806+
class DatabaseError(BackendAIError, web.HTTPServiceUnavailable):
807+
"""
808+
Raised when a database operation fails.
809+
"""
810+
811+
error_type = "https://api.backend.ai/probs/database-error"
812+
error_title = "Database Error"
813+
814+
def error_code(self) -> ErrorCode:
815+
return ErrorCode(
816+
domain=ErrorDomain.HEALTH_CHECK,
817+
operation=ErrorOperation.READ,
818+
error_detail=ErrorDetail.UNAVAILABLE,
819+
)

src/ai/backend/common/leader/tasks/event_task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from ai.backend.common.events.dispatcher import EventProducer
1010
from ai.backend.common.events.types import AbstractAnycastEvent
1111
from ai.backend.common.leader.tasks.base import PeriodicTask
12-
from ai.backend.common.logging import BraceStyleAdapter
12+
from ai.backend.logging import BraceStyleAdapter
1313

1414
log = BraceStyleAdapter(logging.getLogger(__spec__.name))
1515

src/ai/backend/common/leader/tasks/leader_cron.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from ai.backend.common.leader.base import LeadershipChecker, LeaderTask
1010
from ai.backend.common.leader.tasks.base import PeriodicTask
11-
from ai.backend.common.logging import BraceStyleAdapter
11+
from ai.backend.logging import BraceStyleAdapter
1212

1313
log = BraceStyleAdapter(logging.getLogger(__spec__.name))
1414

src/ai/backend/common/leader/valkey_leader_election.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from ai.backend.common.clients.valkey_client.valkey_leader.client import ValkeyLeaderClient
1111
from ai.backend.common.leader.base import AbstractLeaderElection, LeaderTask
1212
from ai.backend.common.leader.exceptions import AlreadyStartedError
13-
from ai.backend.common.logging import BraceStyleAdapter
13+
from ai.backend.logging import BraceStyleAdapter
1414

1515
log = BraceStyleAdapter(logging.getLogger(__spec__.name))
1616

src/ai/backend/manager/event_dispatcher/handlers/notification.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from ai.backend.common.data.notification import NotifiableMessage
77
from ai.backend.common.events.event_types.notification import NotificationTriggeredEvent
8-
from ai.backend.common.logging import BraceStyleAdapter
8+
from ai.backend.logging import BraceStyleAdapter
99

1010
from ...data.notification import NotificationRuleType
1111
from ...services.notification.actions import ProcessNotificationAction

src/ai/backend/manager/models/utils.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
)
4343
from yarl import URL
4444

45+
from ai.backend.common.exception import DatabaseError
4546
from ai.backend.common.json import ExtendedJSONEncoder
4647
from ai.backend.logging import BraceStyleAdapter
4748
from ai.backend.manager.config.bootstrap import DatabaseConfig
@@ -163,10 +164,13 @@ async def ping(self) -> None:
163164
Ping the database to check if the connection is alive.
164165
165166
Raises:
166-
Exception: If the ping fails or connection is not available
167+
DatabaseError: If the ping fails or connection is not available
167168
"""
168-
async with self.connect() as conn:
169-
await conn.execute(sa.text("SELECT 1"))
169+
async with self.begin_readonly_read_committed() as conn:
170+
result = await conn.execute(sa.text("SELECT 1"))
171+
scalar_result = result.scalar()
172+
if scalar_result != 1:
173+
raise DatabaseError("Database ping failed: unexpected result")
170174

171175
@actxmgr
172176
async def begin_readonly(

src/ai/backend/manager/notification/channels/webhook/channel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from ai.backend.common.clients.http_client import ClientPool
1111
from ai.backend.common.clients.http_client.client_pool import ClientKey
1212
from ai.backend.common.data.notification import WebhookConfig
13-
from ai.backend.common.logging import BraceStyleAdapter
13+
from ai.backend.logging import BraceStyleAdapter
1414
from ai.backend.manager.errors.notification import NotificationProcessingFailure
1515

1616
from ...types import NotificationMessage, SendResult

src/ai/backend/manager/notification/notification_center.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from ai.backend.common.clients.http_client import ClientPool
1111
from ai.backend.common.data.notification import NotifiableMessage, NotificationChannelType
12-
from ai.backend.common.logging import BraceStyleAdapter
12+
from ai.backend.logging import BraceStyleAdapter
1313
from ai.backend.manager.data.notification import NotificationChannelData
1414
from ai.backend.manager.errors.notification import (
1515
InvalidNotificationChannelType,

src/ai/backend/manager/services/artifact_revision/service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
HuggingFaceImportModelsReq,
2626
ReservoirImportModelsReq,
2727
)
28-
from ai.backend.common.logging import BraceStyleAdapter
28+
from ai.backend.logging import BraceStyleAdapter
2929
from ai.backend.manager.client.artifact_registry.reservoir_client import ReservoirRegistryClient
3030
from ai.backend.manager.clients.storage_proxy.session_manager import StorageSessionManager
3131
from ai.backend.manager.config.provider import ManagerConfigProvider

0 commit comments

Comments
 (0)