Skip to content

Commit 82d6d17

Browse files
1 parent 30b8d19 commit 82d6d17

File tree

6 files changed

+23
-61
lines changed

6 files changed

+23
-61
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
from ._project_document_version import (
1212
PROJECT_DB_UPDATE_REDIS_LOCK_KEY,
1313
PROJECT_DOCUMENT_VERSION_KEY,
14-
get_and_increment_project_document_version,
15-
get_project_document_version,
14+
increment_and_return_project_document_version,
1615
)
1716
from ._project_lock import (
1817
get_project_locked_state,
@@ -25,8 +24,7 @@
2524
"CouldNotAcquireLockError",
2625
"CouldNotConnectToRedisError",
2726
"exclusive",
28-
"get_and_increment_project_document_version",
29-
"get_project_document_version",
27+
"increment_and_return_project_document_version",
3028
"get_project_locked_state",
3129
"handle_redis_returns_union_types",
3230
"is_project_locked",

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

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
PROJECT_DB_UPDATE_REDIS_LOCK_KEY: Final[str] = "project_db_update:{}"
1717

1818

19-
async def get_and_increment_project_document_version(
19+
async def increment_and_return_project_document_version(
2020
redis_client: RedisClientSDK, project_uuid: ProjectID
2121
) -> int:
2222
"""
23-
Atomically gets and increments the project document version using Redis.
23+
Atomically increments and returns the project document version using Redis.
2424
Returns the incremented version number.
2525
2626
This function ensures thread-safe version incrementing by using Redis INCR command
@@ -37,21 +37,3 @@ async def get_and_increment_project_document_version(
3737
# If key doesn't exist, it's created with value 0 and then incremented to 1
3838
output = await redis_client.redis.incr(version_key)
3939
return int(output)
40-
41-
42-
async def get_project_document_version(
43-
redis_client: RedisClientSDK, project_uuid: ProjectID
44-
) -> int:
45-
"""
46-
Gets the current project document version without incrementing it.
47-
48-
Args:
49-
redis_client: The Redis client SDK instance
50-
project_uuid: The project UUID to get version for
51-
52-
Returns:
53-
The current version number (0 if no version exists yet)
54-
"""
55-
version_key = PROJECT_DOCUMENT_VERSION_KEY.format(project_uuid)
56-
version = await redis_client.redis.get(version_key)
57-
return int(version) if version is not None else 0

packages/service-library/tests/redis/test_project_document_version.py

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
from models_library.projects import ProjectID
1010
from servicelib.redis import RedisClientSDK
1111
from servicelib.redis._project_document_version import (
12-
get_and_increment_project_document_version,
13-
get_project_document_version,
12+
increment_and_return_project_document_version,
1413
)
1514

1615
pytest_simcore_core_services_selection = [
@@ -31,38 +30,21 @@ async def test_project_document_version_workflow(
3130
):
3231
"""Test the complete workflow of getting and incrementing project document versions."""
3332

34-
# Initially, version should be 0 (no version exists yet)
35-
current_version = await get_project_document_version(redis_client_sdk, project_uuid)
36-
assert current_version == 0
37-
3833
# First increment should return 1
39-
new_version = await get_and_increment_project_document_version(
34+
new_version = await increment_and_return_project_document_version(
4035
redis_client_sdk, project_uuid
4136
)
4237
assert new_version == 1
4338

44-
# Getting current version should now return 1
45-
current_version = await get_project_document_version(redis_client_sdk, project_uuid)
46-
assert current_version == 1
47-
4839
# Second increment should return 2
49-
new_version = await get_and_increment_project_document_version(
40+
new_version = await increment_and_return_project_document_version(
5041
redis_client_sdk, project_uuid
5142
)
5243
assert new_version == 2
5344

54-
# Getting current version should now return 2
55-
current_version = await get_project_document_version(redis_client_sdk, project_uuid)
56-
assert current_version == 2
57-
5845
# Multiple increments should work correctly
5946
for expected_version in range(3, 6):
60-
new_version = await get_and_increment_project_document_version(
47+
new_version = await increment_and_return_project_document_version(
6148
redis_client_sdk, project_uuid
6249
)
6350
assert new_version == expected_version
64-
65-
current_version = await get_project_document_version(
66-
redis_client_sdk, project_uuid
67-
)
68-
assert current_version == expected_version

services/web/server/src/simcore_service_webserver/projects/_projects_repository_legacy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
from servicelib.redis import (
4949
PROJECT_DB_UPDATE_REDIS_LOCK_KEY,
5050
exclusive,
51-
get_and_increment_project_document_version,
51+
increment_and_return_project_document_version,
5252
)
5353
from simcore_postgres_database.aiopg_errors import UniqueViolation
5454
from simcore_postgres_database.models.groups import user_to_groups
@@ -1001,7 +1001,7 @@ async def _update_workbench_and_notify() -> (
10011001

10021002
# Increment document version and notify users
10031003
redis_client_sdk = get_redis_document_manager_client_sdk(self._app)
1004-
document_version = await get_and_increment_project_document_version(
1004+
document_version = await increment_and_return_project_document_version(
10051005
redis_client=redis_client_sdk, project_uuid=project_uuid
10061006
)
10071007
await notify_project_document_updated(

services/web/server/src/simcore_service_webserver/projects/_projects_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@
8686
from servicelib.redis import (
8787
PROJECT_DB_UPDATE_REDIS_LOCK_KEY,
8888
exclusive,
89-
get_and_increment_project_document_version,
9089
get_project_locked_state,
90+
increment_and_return_project_document_version,
9191
is_project_locked,
9292
with_project_locked,
9393
)
@@ -232,7 +232,7 @@ async def _patch_and_notify() -> None:
232232
),
233233
)
234234
redis_client_sdk = get_redis_document_manager_client_sdk(app)
235-
document_version = await get_and_increment_project_document_version(
235+
document_version = await increment_and_return_project_document_version(
236236
redis_client=redis_client_sdk, project_uuid=project_uuid
237237
)
238238
await notify_project_document_updated(

services/web/server/tests/unit/with_dbs/02/test_projects_patch_project_and_notify_users_locking.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from models_library.projects import ProjectID
2121
from pytest_simcore.helpers.webserver_users import UserInfoDict
2222
from servicelib.aiohttp import status
23-
from servicelib.redis import get_and_increment_project_document_version
23+
from servicelib.redis import increment_and_return_project_document_version
2424
from simcore_service_webserver.db.models import UserRole
2525
from simcore_service_webserver.projects._projects_service import (
2626
patch_project_and_notify_users,
@@ -73,7 +73,7 @@ async def test_patch_project_and_notify_users_sequential(
7373

7474
# Get version after first patch
7575
redis_client = get_redis_document_manager_client_sdk(client.app)
76-
version_1 = await get_and_increment_project_document_version(
76+
version_1 = await increment_and_return_project_document_version(
7777
redis_client=redis_client, project_uuid=project_uuid
7878
)
7979

@@ -86,7 +86,7 @@ async def test_patch_project_and_notify_users_sequential(
8686
)
8787

8888
# Get version after second patch
89-
version_2 = await get_and_increment_project_document_version(
89+
version_2 = await increment_and_return_project_document_version(
9090
redis_client=redis_client, project_uuid=project_uuid
9191
)
9292

@@ -115,7 +115,7 @@ async def test_patch_project_and_notify_users_concurrent_locking(
115115

116116
# Get initial version
117117
redis_client = get_redis_document_manager_client_sdk(client.app)
118-
initial_version = await get_and_increment_project_document_version(
118+
initial_version = await increment_and_return_project_document_version(
119119
redis_client=redis_client, project_uuid=project_uuid
120120
)
121121

@@ -134,7 +134,7 @@ async def test_patch_project_and_notify_users_concurrent_locking(
134134
await asyncio.gather(*tasks)
135135

136136
# Get final version
137-
final_version = await get_and_increment_project_document_version(
137+
final_version = await increment_and_return_project_document_version(
138138
redis_client=redis_client, project_uuid=project_uuid
139139
)
140140

@@ -169,13 +169,13 @@ async def test_patch_project_and_notify_users_concurrent_different_projects(
169169
redis_client = get_redis_document_manager_client_sdk(client.app)
170170

171171
# Get initial versions
172-
initial_version_1 = await get_and_increment_project_document_version(
172+
initial_version_1 = await increment_and_return_project_document_version(
173173
redis_client=redis_client, project_uuid=project_uuid_1
174174
)
175-
initial_version_2 = await get_and_increment_project_document_version(
175+
initial_version_2 = await increment_and_return_project_document_version(
176176
redis_client=redis_client, project_uuid=project_uuid_2
177177
)
178-
initial_version_3 = await get_and_increment_project_document_version(
178+
initial_version_3 = await increment_and_return_project_document_version(
179179
redis_client=redis_client, project_uuid=project_uuid_3
180180
)
181181

@@ -192,13 +192,13 @@ async def test_patch_project_and_notify_users_concurrent_different_projects(
192192
)
193193

194194
# Get final versions
195-
final_version_1 = await get_and_increment_project_document_version(
195+
final_version_1 = await increment_and_return_project_document_version(
196196
redis_client=redis_client, project_uuid=project_uuid_1
197197
)
198-
final_version_2 = await get_and_increment_project_document_version(
198+
final_version_2 = await increment_and_return_project_document_version(
199199
redis_client=redis_client, project_uuid=project_uuid_2
200200
)
201-
final_version_3 = await get_and_increment_project_document_version(
201+
final_version_3 = await increment_and_return_project_document_version(
202202
redis_client=redis_client, project_uuid=project_uuid_3
203203
)
204204

0 commit comments

Comments
 (0)