Skip to content

Commit 9fbd63d

Browse files
jopemachineclaude
andcommitted
fix(BA-5650-I): resolve cascaded rebase conflicts and align tests
- Resolve conflict markers in scheduler db_source by keeping the user-table-joined ``main_access_key`` lookup (single source of truth) rather than the obsolete ``session.access_key`` snapshot. - Drop duplicate ``resolve_main_access_keys`` definition introduced by the rebase. - Use ``spec.access_key`` (SessionCreationSpec) where applicable — the spec dataclass keeps ``access_key`` for now. - Test fixture ``_make_session_data`` now passes ``owner_id`` instead of relying on attribute assignment after construction. - Use ``main_access_key`` on PendingSessionData in provisioner test. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e35caec commit 9fbd63d

4 files changed

Lines changed: 5 additions & 67 deletions

File tree

src/ai/backend/manager/repositories/scheduler/db_source/db_source.py

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,13 +1150,8 @@ async def get_terminating_sessions_by_ids(
11501150
terminating_sessions.append(
11511151
TerminatingSessionData(
11521152
session_id=session_row.id,
1153-
<<<<<<< HEAD
11541153
main_access_key=AccessKey(owner_main_ak)
11551154
if owner_main_ak
1156-
=======
1157-
main_access_key=AccessKey(session_row.access_key)
1158-
if session_row.access_key
1159-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
11601155
else AccessKey(""),
11611156
creation_id=session_row.creation_id or "",
11621157
status=session_row.status,
@@ -1220,11 +1215,7 @@ async def get_pending_timeout_sessions_by_ids(
12201215
SweptSessionInfo(
12211216
session_id=row.id,
12221217
creation_id=row.creation_id,
1223-
<<<<<<< HEAD
12241218
main_access_key=row.main_access_key,
1225-
=======
1226-
main_access_key=row.access_key,
1227-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
12281219
)
12291220
)
12301221

@@ -1497,7 +1488,7 @@ async def fetch_session_creation_data(
14971488
db_sess,
14981489
spec.user_scope.domain_name,
14991490
str(spec.user_scope.group_id),
1500-
spec.main_access_key,
1491+
spec.access_key,
15011492
)
15021493
image_infos = await self._resolve_image_info(db_sess, image_refs)
15031494

@@ -1518,7 +1509,7 @@ async def fetch_session_creation_data(
15181509
dotfile_data = await self._fetch_dotfiles(
15191510
db_sess,
15201511
spec.user_scope,
1521-
spec.main_access_key,
1512+
spec.access_key,
15221513
vfolder_mounts,
15231514
)
15241515

@@ -1562,7 +1553,7 @@ async def fetch_session_creation_context(
15621553
db_sess,
15631554
spec.user_scope.domain_name,
15641555
str(spec.user_scope.group_id),
1565-
spec.main_access_key,
1556+
spec.access_key,
15661557
)
15671558
image_infos = await self._resolve_image_info(db_sess, image_refs)
15681559

@@ -1873,11 +1864,7 @@ async def allocate_sessions(
18731864
ScheduledSessionData(
18741865
session_id=allocation.session_id,
18751866
creation_id=creation_id,
1876-
<<<<<<< HEAD
18771867
main_access_key=main_access_key,
1878-
=======
1879-
main_access_key=access_key,
1880-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
18811868
reason="triggered-by-scheduler",
18821869
)
18831870
)
@@ -2939,18 +2926,7 @@ async def _get_sessions_by_statuses(
29392926
scheduled_session = ScheduledSessionData(
29402927
session_id=session.id,
29412928
creation_id=session.creation_id or "",
2942-
<<<<<<< HEAD
2943-
<<<<<<< HEAD
2944-
main_access_key=AccessKey(session.access_key)
2945-
if session.access_key
2946-
=======
2947-
main_access_key=AccessKey(session.main_access_key)
2948-
if session.main_access_key
2949-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
2950-
else AccessKey(""),
2951-
=======
29522929
main_access_key=AccessKey(owner_main_ak) if owner_main_ak else AccessKey(""),
2953-
>>>>>>> 4ac120c73 (refactor(BA-5650-I): drop stray non-BA-5650 changes from slice)
29542930
reason="triggered-by-scheduler",
29552931
)
29562932
scheduled_sessions.append(scheduled_session)
@@ -2997,18 +2973,7 @@ async def _get_scheduled_sessions(self, db_sess: SASession) -> list[ScheduledSes
29972973
ScheduledSessionData(
29982974
session_id=session.id,
29992975
creation_id=session.creation_id or "",
3000-
<<<<<<< HEAD
3001-
<<<<<<< HEAD
3002-
main_access_key=AccessKey(session.access_key)
3003-
if session.access_key
3004-
=======
3005-
main_access_key=AccessKey(session.main_access_key)
3006-
if session.main_access_key
3007-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
3008-
else AccessKey(""),
3009-
=======
30102976
main_access_key=AccessKey(owner_main_ak) if owner_main_ak else AccessKey(""),
3011-
>>>>>>> 4ac120c73 (refactor(BA-5650-I): drop stray non-BA-5650 changes from slice)
30122977
reason="triggered-by-scheduler",
30132978
)
30142979
)
@@ -4675,11 +4640,7 @@ async def search_sessions_with_kernels_and_user(
46754640
cluster_mode=session_info["cluster_mode"],
46764641
kernels=session_info["kernels"],
46774642
environ=session_info.get("environ") or {},
4678-
<<<<<<< HEAD
46794643
owner_id=session_info["user_uuid"],
4680-
=======
4681-
owner_id=session_info["owner_id"],
4682-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
46834644
user_email=user_info.email,
46844645
user_name=user_info.username,
46854646
)
@@ -4856,21 +4817,3 @@ async def _get_db_now_in_session(self, db_sess: SASession) -> datetime:
48564817
"""
48574818
result = await db_sess.execute(sa.select(sa.func.now()))
48584819
return result.scalar_one()
4859-
4860-
async def resolve_main_access_keys(
4861-
self, session_ids: Sequence[SessionId]
4862-
) -> dict[SessionId, AccessKey]:
4863-
"""Resolve the main access key for each session's owner.
4864-
4865-
Joins sessions → users to look up the owner's main_access_key.
4866-
"""
4867-
if not session_ids:
4868-
return {}
4869-
async with self._db.begin_readonly_session() as db_sess:
4870-
stmt = (
4871-
sa.select(SessionRow.id, UserRow.main_access_key)
4872-
.join(UserRow, SessionRow.user_uuid == UserRow.uuid)
4873-
.where(SessionRow.id.in_([sid for sid in session_ids]))
4874-
)
4875-
rows = (await db_sess.execute(stmt)).all()
4876-
return {SessionId(row[0]): AccessKey(row[1]) for row in rows if row[1] is not None}

tests/unit/manager/services/session/test_session_lifecycle_service.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ def _make_session_data(
210210
) -> SessionData:
211211
return SessionData(
212212
id=session_id,
213+
owner_id=user_id,
213214
creation_id="test-creation-id",
214215
name=name,
215216
session_type=session_type,

tests/unit/manager/services/session/test_session_service.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,7 @@ def sample_session_data(
245245
agent_ids=["i-ubuntu"],
246246
domain_name="default",
247247
group_id=sample_group_id,
248-
<<<<<<< HEAD
249248
owner_id=sample_user_id,
250-
=======
251-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
252249
images=["cr.backend.ai/stable/python:latest"],
253250
tag=None,
254251
occupying_slots=ResourceSlot({"cpu": 1, "mem": 1024}),
@@ -349,10 +346,7 @@ async def test_multiple_matches(
349346
agent_ids=[],
350347
domain_name="default",
351348
group_id=sample_group_id,
352-
<<<<<<< HEAD
353349
owner_id=sample_user_id,
354-
=======
355-
>>>>>>> d59487b17 (refactor(BA-5650-I): test and remaining ORM updates)
356350
images=["python:latest"],
357351
tag=None,
358352
occupying_slots=ResourceSlot({}),

tests/unit/manager/sokovan/scheduler/provisioner/test_provisioner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def _create_scheduling_data_with_strategy(
6666
# Create one pending session
6767
session = PendingSessionData(
6868
id=SessionId(uuid.uuid4()),
69-
access_key=AccessKey("test-key"),
69+
main_access_key=AccessKey("test-key"),
7070
requested_slots=ResourceSlot({"cpu": Decimal("1"), "mem": Decimal("1024")}),
7171
owner_id=uuid.uuid4(),
7272
group_id=uuid.uuid4(),

0 commit comments

Comments
 (0)