Skip to content

Commit bcff486

Browse files
committed
dedupe submission creation path
1 parent ef9a5de commit bcff486

2 files changed

Lines changed: 20 additions & 24 deletions

File tree

src/kernelbot/api/main.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from libkernelbot.submission import (
2626
ProcessedSubmissionRequest,
2727
SubmissionRequest,
28-
enforce_gpu_rate_limits,
2928
prepare_submission,
3029
)
3130
from libkernelbot.task import make_task_definition
@@ -504,18 +503,8 @@ async def enqueue_background_job(
504503
manager: BackgroundSubmissionManager,
505504
):
506505
# pre-create the submission for api returns
506+
sub_id = backend.create_submission_record(req, mode)
507507
with backend.db as db:
508-
enforce_gpu_rate_limits(req, db)
509-
sub_id = db.create_submission(
510-
leaderboard=req.leaderboard,
511-
file_name=req.file_name,
512-
code=req.code,
513-
user_id=req.user_id,
514-
time=datetime.datetime.now(datetime.timezone.utc),
515-
user_name=req.user_name,
516-
mode_category=req.mode_category,
517-
requested_gpus=req.gpus,
518-
)
519508
job_id = db.upsert_submission_job_status(sub_id, "initial", None)
520509
# put submission request in queue
521510
await manager.enqueue(req, mode, sub_id)

src/libkernelbot/backend.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,24 @@ def register_launcher(self, launcher: Launcher):
6262
for gpu in launcher.gpus:
6363
self.launcher_map[gpu.value] = launcher
6464

65+
def create_submission_record(
66+
self,
67+
req: ProcessedSubmissionRequest,
68+
mode: SubmissionMode,
69+
) -> int:
70+
with self.db as db:
71+
enforce_gpu_rate_limits(req, db)
72+
return db.create_submission(
73+
leaderboard=req.leaderboard,
74+
file_name=req.file_name,
75+
code=req.code,
76+
user_id=req.user_id,
77+
time=datetime.datetime.now(datetime.timezone.utc),
78+
user_name=req.user_name,
79+
mode_category=req.mode_category or get_mode_category(mode),
80+
requested_gpus=req.gpus,
81+
)
82+
6583
async def submit_full(
6684
self,
6785
req: ProcessedSubmissionRequest,
@@ -77,18 +95,7 @@ async def submit_full(
7795
if pre_sub_id is not None:
7896
sub_id = pre_sub_id
7997
else:
80-
with self.db as db:
81-
enforce_gpu_rate_limits(req, db)
82-
sub_id = db.create_submission(
83-
leaderboard=req.leaderboard,
84-
file_name=req.file_name,
85-
code=req.code,
86-
user_id=req.user_id,
87-
time=datetime.datetime.now(datetime.timezone.utc),
88-
user_name=req.user_name,
89-
mode_category=req.mode_category or get_mode_category(mode),
90-
requested_gpus=req.gpus,
91-
)
98+
sub_id = self.create_submission_record(req, mode)
9299
selected_gpus = [get_gpu_by_name(gpu) for gpu in req.gpus]
93100
submission_started = False
94101
try:

0 commit comments

Comments
 (0)