Skip to content

Commit 390c9be

Browse files
authored
Bugfix: re-enable SC_COMP_SERVICES_SCHEDULED_AS passed to computational services (#2330)
1 parent 677e629 commit 390c9be

File tree

9 files changed

+23
-30
lines changed

9 files changed

+23
-30
lines changed
Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,8 @@
11
# pylint: disable=global-statement
22
from enum import Enum
3-
from typing import Optional
43

54

65
class BootMode(Enum):
76
CPU = "CPU"
87
GPU = "GPU"
98
MPI = "MPI"
10-
11-
12-
_sidecar_boot_mode: Optional[BootMode] = None
13-
14-
15-
def get_boot_mode() -> Optional[BootMode]:
16-
global _sidecar_boot_mode
17-
return _sidecar_boot_mode
18-
19-
20-
def set_boot_mode(boot_mode: BootMode) -> None:
21-
global _sidecar_boot_mode
22-
_sidecar_boot_mode = boot_mode

services/sidecar/src/simcore_service_sidecar/celery.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from celery.signals import worker_ready, worker_shutting_down
44

55
from .__version__ import __version__
6-
from .boot_mode import get_boot_mode
76
from .celery_configurator import create_celery_app
87
from .celery_task_utils import cancel_task
98
from .cli import run_sidecar
@@ -26,7 +25,7 @@
2625
\ /(_| | | '--' / | `---.(_' '--'\ | | | | | |\ \
2726
`-----' `--' `-------' `------' `-----' `--' `--' `--' '--' {0} - {1}
2827
""".format(
29-
__version__, get_boot_mode().value
28+
__version__, app.conf.osparc_sidecar_bootmode.value
3029
)
3130

3231

services/sidecar/src/simcore_service_sidecar/celery_configurator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from kombu import Queue
1515

1616
from . import config
17-
from .boot_mode import BootMode, get_boot_mode, set_boot_mode
17+
from .boot_mode import BootMode
1818
from .celery_task import entrypoint
1919
from .celery_task_utils import (
2020
on_task_failure_handler,
@@ -61,10 +61,10 @@ def configure_node(bootmode: BootMode) -> Celery:
6161
Queue("celery"),
6262
Queue(CELERY_APP_CONFIGS[bootmode]["queue_name"]),
6363
]
64+
app.conf.osparc_sidecar_bootmode = bootmode
6465

6566
define_celery_task(app, config.CELERY_CONFIG.task_name)
66-
set_boot_mode(bootmode)
67-
log.info("Initialized celery app in %s", get_boot_mode())
67+
log.info("Initialized celery app in %s", bootmode)
6868
return app
6969

7070

services/sidecar/src/simcore_service_sidecar/celery_task.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ def entrypoint(
1616
*args,
1717
**kwargs
1818
)
19-
_shared_task_dispatch(self, user_id, project_id, node_id)
19+
_shared_task_dispatch(
20+
self,
21+
user_id,
22+
project_id,
23+
node_id,
24+
)
2025
log.info("Completed task %s", self.request.id)
2126

2227

@@ -41,6 +46,7 @@ def _shared_task_dispatch(
4146
celery_request.is_aborted,
4247
retry=celery_request.request.retries,
4348
max_retries=celery_request.max_retries,
49+
sidecar_mode=celery_request.app.conf.osparc_sidecar_bootmode,
4450
)
4551
)
4652
except CancelledError:

services/sidecar/src/simcore_service_sidecar/cli.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import click
66
from servicelib.logging_utils import log_decorator
77

8+
from .boot_mode import BootMode
89
from .celery_task_utils import cancel_task
910
from .config import SIDECAR_INTERVAL_TO_CHECK_TASK_ABORTED_S
1011
from .core import run_computational_task
@@ -42,14 +43,15 @@ async def perdiodicaly_check_if_aborted(is_aborted_cb: Callable[[], bool]) -> No
4243

4344

4445
@log_decorator(logger=log, level=logging.INFO)
45-
async def run_sidecar(
46+
async def run_sidecar( # pylint: disable=too-many-arguments
4647
job_id: str,
4748
user_id: str,
4849
project_id: str,
4950
node_id: str,
5051
is_aborted_cb: Optional[Callable[[], bool]] = None,
5152
retry: int = 1,
5253
max_retries: int = 1,
54+
sidecar_mode: BootMode = BootMode.CPU,
5355
) -> None:
5456
abortion_task = (
5557
asyncio.get_event_loop().create_task(
@@ -69,6 +71,7 @@ async def run_sidecar(
6971
node_id=node_id,
7072
retry=retry,
7173
max_retries=max_retries,
74+
sidecar_mode=sidecar_mode,
7275
)
7376
finally:
7477
if abortion_task:

services/sidecar/src/simcore_service_sidecar/core.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from sqlalchemy import and_, literal_column
1717

1818
from . import config, exceptions
19+
from .boot_mode import BootMode
1920
from .executor import Executor
2021
from .rabbitmq import RabbitMQ
2122
from .utils import execution_graph
@@ -131,6 +132,7 @@ async def run_computational_task(
131132
node_id: str,
132133
retry: int,
133134
max_retries: int,
135+
sidecar_mode: BootMode,
134136
) -> None:
135137

136138
async with db_engine.acquire() as connection:
@@ -185,6 +187,7 @@ async def run_computational_task(
185187
rabbit_mq=rabbit_mq,
186188
task=task,
187189
user_id=user_id,
190+
sidecar_mode=sidecar_mode,
188191
)
189192
await executor.run()
190193
run_result = StateType.SUCCESS

services/sidecar/src/simcore_service_sidecar/executor.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from simcore_sdk.node_ports_v2 import DBManager
2424

2525
from . import config, exceptions
26+
from .boot_mode import BootMode
2627
from .log_parser import LogType, monitor_logs_task
2728
from .rabbitmq import RabbitMQ
2829
from .utils import get_volume_mount_point
@@ -90,6 +91,7 @@ class Executor:
9091
shared_folders: TaskSharedVolumes = None
9192
integration_version: version.Version = version.parse("0.0.0")
9293
service_settings: ServiceSettings = []
94+
sidecar_mode: BootMode = BootMode.CPU
9395

9496
@log_decorator(logger=log)
9597
async def run(self):
@@ -261,7 +263,9 @@ async def _create_container_config(self, docker_image: str) -> Dict:
261263
"output",
262264
"log",
263265
]
264-
]
266+
] + [
267+
f"SC_COMP_SERVICES_SCHEDULED_AS={self.sidecar_mode.value}"
268+
] # NOTE: this variable is used by some comp services such as iSolve
265269

266270
host_input_path = await get_volume_mount_point(
267271
config.SIDECAR_DOCKER_VOLUME_INPUT

services/sidecar/tests/integration/conftest.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from pathlib import Path
55

66
import pytest
7-
from simcore_service_sidecar.boot_mode import BootMode, set_boot_mode
87

98
current_dir = Path(sys.argv[0] if __name__ == "__main__" else __file__).resolve().parent
109

@@ -37,9 +36,3 @@ def python_sample_script(mock_dir: Path) -> Path:
3736
file_path = mock_dir / "osparc_python_sample.py"
3837
assert file_path.exists()
3938
return file_path
40-
41-
42-
@pytest.fixture()
43-
def mock_boot_mode():
44-
"""by default only CPU is mocked which is enough"""
45-
set_boot_mode(BootMode.CPU)

services/sidecar/tests/integration/test_sidecar.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,6 @@ async def test_run_services(
426426
pipeline_cfg: Dict,
427427
user_id: int,
428428
mocker,
429-
mock_boot_mode,
430429
):
431430
"""
432431

0 commit comments

Comments
 (0)