Skip to content

Commit 966fd4c

Browse files
author
Andrei Neagu
committed
refactor
1 parent 3500865 commit 966fd4c

File tree

2 files changed

+35
-32
lines changed
  • services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/generic_scheduler

2 files changed

+35
-32
lines changed

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/generic_scheduler/_core.py

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import asyncio
22
import logging
33
from collections.abc import AsyncIterator, Iterable
4-
from contextlib import asynccontextmanager, suppress
4+
from contextlib import suppress
55
from datetime import timedelta
66
from typing import Final
77
from uuid import uuid4
88

9-
from common_library.error_codes import create_error_code
10-
from common_library.logging.logging_errors import create_troubleshooting_log_kwargs
119
from fastapi import FastAPI
1210
from fastapi_lifespan_manager import State
1311
from pydantic import NonNegativeInt
@@ -23,6 +21,7 @@
2321
get_steps_statuses,
2422
is_operation_in_progress_status,
2523
raise_if_overwrites_any_operation_provided_key,
24+
safe_event,
2625
set_unexpected_opration_state,
2726
start_and_mark_as_started,
2827
start_steps_and_get_count,
@@ -112,33 +111,6 @@ async def start_operation(
112111
await enqueue_schedule_event(self.app, schedule_id)
113112
return schedule_id
114113

115-
@asynccontextmanager
116-
async def _safe_event(self, schedule_id: ScheduleId) -> AsyncIterator[None]:
117-
try:
118-
yield
119-
except KeyNotFoundInHashError as err:
120-
_logger.debug(
121-
"Cannot process schedule_id='%s' since it's data was not found: %s",
122-
schedule_id,
123-
err,
124-
)
125-
except Exception as err: # pylint:disable=broad-exception-caught
126-
error_code = create_error_code(err)
127-
log_kwargs = create_troubleshooting_log_kwargs(
128-
"Unexpected error druing scheduling",
129-
error=err,
130-
error_code=error_code,
131-
error_context={"schedule_id": schedule_id},
132-
tip="This is a bug, please report it to the developers",
133-
)
134-
_logger.exception(**log_kwargs)
135-
await set_unexpected_opration_state(
136-
self._store,
137-
schedule_id,
138-
OperationErrorType.FRAMEWORK_ISSUE,
139-
message=log_kwargs["msg"],
140-
)
141-
142114
async def cancel_schedule(self, schedule_id: ScheduleId) -> None:
143115
"""
144116
Cancels and runs destruction of the operation
@@ -291,7 +263,7 @@ async def restart_operation_step_in_error(
291263
)
292264

293265
async def safe_on_schedule_event(self, schedule_id: ScheduleId) -> None:
294-
async with self._safe_event(schedule_id):
266+
async with safe_event(self._store, schedule_id):
295267
await self._on_schedule_event(schedule_id)
296268

297269
async def _on_schedule_event(self, schedule_id: ScheduleId) -> None:

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/generic_scheduler/_core_utils.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import logging
2-
from collections.abc import Iterable
2+
from collections.abc import AsyncIterator, Iterable
3+
from contextlib import asynccontextmanager
34
from typing import Final
45

6+
from common_library.error_codes import create_error_code
7+
from common_library.logging.logging_errors import create_troubleshooting_log_kwargs
58
from pydantic import NonNegativeInt
69
from servicelib.logging_utils import log_context
710
from servicelib.utils import limited_gather
@@ -220,3 +223,31 @@ async def set_unexpected_opration_state(
220223
"operation_error_message": message,
221224
}
222225
)
226+
227+
228+
@asynccontextmanager
229+
async def safe_event(store: Store, schedule_id: ScheduleId) -> AsyncIterator[None]:
230+
try:
231+
yield
232+
except KeyNotFoundInHashError as err:
233+
_logger.debug(
234+
"Cannot process schedule_id='%s' since it's data was not found: %s",
235+
schedule_id,
236+
err,
237+
)
238+
except Exception as err: # pylint:disable=broad-exception-caught
239+
error_code = create_error_code(err)
240+
log_kwargs = create_troubleshooting_log_kwargs(
241+
"Unexpected error druing scheduling",
242+
error=err,
243+
error_code=error_code,
244+
error_context={"schedule_id": schedule_id},
245+
tip="This is a bug, please report it to the developers",
246+
)
247+
_logger.exception(**log_kwargs)
248+
await set_unexpected_opration_state(
249+
store,
250+
schedule_id,
251+
OperationErrorType.FRAMEWORK_ISSUE,
252+
message=log_kwargs["msg"],
253+
)

0 commit comments

Comments
 (0)