Skip to content

Commit 5f49a01

Browse files
author
Andrei Neagu
committed
Merge branch 'pr-osparc-fix-before-shutdown-error' of github.com:GitHK/osparc-simcore-forked into pr-osparc-fix-before-shutdown-error
2 parents 6755584 + 7e1c541 commit 5f49a01

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+884
-1027
lines changed

.github/workflows/ci-testing-deploy.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,19 +1904,23 @@ jobs:
19041904
- name: test
19051905
run: ./ci/github/system-testing/e2e.bash test
19061906
- name: dump docker logs
1907+
if: ${{ failure() }}
19071908
id: docker_logs_dump
19081909
run: ./ci/github/system-testing/e2e.bash dump_docker_logs
19091910
- name: upload docker logs
1911+
if: ${{ failure() }}
19101912
uses: actions/upload-artifact@v4
19111913
with:
19121914
name: ${{ github.job }}_docker_logs
19131915
path: ./tests/e2e/test_failures
19141916
- name: upload screenshots
1917+
if: ${{ failure() }}
19151918
uses: actions/upload-artifact@v4
19161919
with:
19171920
name: ${{ github.job }}_screenshots
19181921
path: tests/e2e/screenshots
19191922
- name: upload e2e logs
1923+
if: ${{ failure() }}
19201924
uses: actions/upload-artifact@v4
19211925
with:
19221926
name: ${{ github.job }}_logs
@@ -1956,14 +1960,17 @@ jobs:
19561960
run: |
19571961
./ci/github/system-testing/e2e-playwright.bash test
19581962
- name: dump docker logs
1963+
if: ${{ failure() }}
19591964
id: docker_logs_dump
19601965
run: ./ci/github/system-testing/e2e-playwright.bash dump_docker_logs
19611966
- name: upload docker logs
1967+
if: ${{ failure() }}
19621968
uses: actions/upload-artifact@v4
19631969
with:
19641970
name: ${{ github.job }}_docker_logs
19651971
path: ./tests/e2e-playwright/test_failures
19661972
- name: upload tracing if failed
1973+
if: ${{ failure() }}
19671974
uses: actions/upload-artifact@v4
19681975
with:
19691976
name: ${{ github.job }}_tracing

packages/models-library/src/models_library/api_schemas_webserver/projects.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,25 @@ def to_domain_model(self) -> dict[str, Any]:
283283
return self.model_dump(exclude_unset=True, by_alias=False)
284284

285285

286+
class ProjectDocument(OutputSchema):
287+
uuid: ProjectID
288+
workspace_id: WorkspaceID | None
289+
name: str
290+
description: str
291+
thumbnail: HttpUrl | None
292+
last_change_date: datetime
293+
classifiers: list[ClassifierID]
294+
dev: dict | None
295+
quality: dict[str, Any]
296+
workbench: NodesDict
297+
ui: StudyUI | None
298+
type: ProjectType
299+
template_type: ProjectTemplateType | None
300+
301+
# config
302+
model_config = ConfigDict(from_attributes=True, arbitrary_types_allowed=True)
303+
304+
286305
__all__: tuple[str, ...] = (
287306
"EmptyModel",
288307
"ProjectCopyOverride",

packages/models-library/src/models_library/api_schemas_webserver/projects_ui.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,14 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
9191

9292
class StudyUI(OutputSchema):
9393
# Model fully controlled by the UI and stored under `projects.ui`
94-
icon: HttpUrl | None = None
94+
icon: HttpUrl | None = None # <-- Deprecated
9595

9696
workbench: dict[NodeIDStr, WorkbenchUI] | None = None
9797
slideshow: dict[NodeIDStr, SlideshowUI] | None = None
9898
current_node_id: NodeID | None = None
9999
annotations: dict[NodeIDStr, AnnotationUI] | None = None
100-
template_type: Literal["hypertool"] | None = None
100+
template_type: Literal["hypertool"] | None = None # <-- Deprecated
101+
mode: Literal["workbench", "app", "guided", "standalone", "pipeline"] | None = None
101102

102103
_empty_is_none = field_validator("*", mode="before")(
103104
empty_str_to_none_pre_validator

packages/models-library/src/models_library/api_schemas_webserver/socketio.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from ..basic_types import IDStr
22
from ..groups import GroupID
3+
from ..projects import ProjectID
34
from ..users import UserID
45

56

@@ -15,3 +16,7 @@ def from_group_id(cls, group_id: GroupID) -> "SocketIORoomStr":
1516
@classmethod
1617
def from_user_id(cls, user_id: UserID) -> "SocketIORoomStr":
1718
return cls(f"user:{user_id}")
19+
20+
@classmethod
21+
def from_project_id(cls, project_id: ProjectID) -> "SocketIORoomStr":
22+
return cls(f"project:{project_id}")

packages/models-library/src/models_library/projects_nodes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ class Node(BaseModel):
164164
ge=0,
165165
le=100,
166166
description="the node progress value (deprecated in DB, still used for API only)",
167-
deprecated=True,
167+
deprecated=True, # <-- Think this is not true, it is still used by the File Picker (frontend nodes)
168168
),
169169
] = None
170170

packages/models-library/src/models_library/rabbitmq_messages.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,4 +325,4 @@ class ComputationalPipelineStatusMessage(RabbitMessageBase, ProjectMessageBase):
325325
run_result: RunningState
326326

327327
def routing_key(self) -> str | None:
328-
return f"{self.project_id}"
328+
return f"{self.project_id}.all_nodes"

packages/pytest-simcore/pyproject.toml

Lines changed: 0 additions & 9 deletions
This file was deleted.

packages/pytest-simcore/uv.lock

Lines changed: 0 additions & 728 deletions
This file was deleted.

packages/service-library/src/servicelib/long_running_tasks/task.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
from common_library.async_tools import cancel_wait_task
1313
from models_library.api_schemas_long_running_tasks.base import TaskProgress
1414
from pydantic import PositiveFloat
15-
from servicelib.background_task import create_periodic_task
16-
from servicelib.logging_utils import log_catch
1715

16+
from ..background_task import create_periodic_task
17+
from ..logging_utils import log_catch
1818
from .errors import (
1919
TaskAlreadyRunningError,
2020
TaskCancelledError,
@@ -33,7 +33,7 @@
3333
_DEFAULT_NAMESPACE: Final[str] = "lrt"
3434

3535
_CANCEL_TASK_TIMEOUT: Final[PositiveFloat] = datetime.timedelta(
36-
seconds=1
36+
seconds=10 # NOTE: 1 second is too short to cleanup a task
3737
).total_seconds()
3838

3939
RegisteredTaskName: TypeAlias = str
@@ -196,7 +196,6 @@ def _add_task(
196196
*,
197197
fire_and_forget: bool,
198198
) -> TrackedTask:
199-
200199
tracked_task = TrackedTask(
201200
task_id=task_id,
202201
task=task,

packages/service-library/src/servicelib/redis/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
ProjectLockError,
99
)
1010
from ._models import RedisManagerDBConfig
11+
from ._project_document_version import (
12+
PROJECT_DB_UPDATE_REDIS_LOCK_KEY,
13+
PROJECT_DOCUMENT_VERSION_KEY,
14+
increment_and_return_project_document_version,
15+
)
1116
from ._project_lock import (
1217
get_project_locked_state,
1318
is_project_locked,
@@ -19,10 +24,13 @@
1924
"CouldNotAcquireLockError",
2025
"CouldNotConnectToRedisError",
2126
"exclusive",
27+
"increment_and_return_project_document_version",
2228
"get_project_locked_state",
2329
"handle_redis_returns_union_types",
2430
"is_project_locked",
2531
"LockLostError",
32+
"PROJECT_DB_UPDATE_REDIS_LOCK_KEY",
33+
"PROJECT_DOCUMENT_VERSION_KEY",
2634
"ProjectLockError",
2735
"RedisClientSDK",
2836
"RedisClientsManager",

0 commit comments

Comments
 (0)