Skip to content

Commit

Permalink
submissions: optimize regrade mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
fushar committed May 26, 2024
1 parent dd1d713 commit 889f506
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import com.google.common.collect.Lists;
import io.dropwizard.hibernate.UnitOfWork;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -287,7 +288,7 @@ public void regradeSubmission(

@POST
@Path("/regrade")
@UnitOfWork
@UnitOfWork(transactional = false)
public void regradeSubmissions(
@HeaderParam(AUTHORIZATION) AuthHeader authHeader,
@QueryParam("containerJid") Optional<String> containerJid,
Expand All @@ -298,22 +299,27 @@ public void regradeSubmissions(
String actorJid = actorChecker.check(authHeader);
checkAllowed(submissionRoleChecker.canManage(actorJid));

List<Submission> submissions = new ArrayList<>();
Map<String, ProblemSubmissionConfig> configsMap = new HashMap<>();

for (int pageNumber = 1;; pageNumber++) {
List<Submission> submissions = submissionStore.getSubmissions(
List<Submission> curSubmissions = submissionStore.getSubmissions(
containerJid,
byUserJid(username),
byProblemJid(containerJid, problemJid, problemAlias),
pageNumber,
PAGE_SIZE).getPage();
1000).getPage();

if (submissions.isEmpty()) {
if (curSubmissions.isEmpty()) {
break;
}
submissions.addAll(curSubmissions);

var problemJids = Lists.transform(submissions, Submission::getProblemJid);
Map<String, ProblemSubmissionConfig> configsMap = sandalphonClient.getProgrammingProblemSubmissionConfigs(problemJids);
submissionRegrader.regradeSubmissions(submissions, configsMap);
var problemJids = Lists.transform(curSubmissions, Submission::getProblemJid);
configsMap.putAll(sandalphonClient.getProgrammingProblemSubmissionConfigs(problemJids));
}

submissionRegrader.regradeSubmissions(submissions, configsMap);
}

private Optional<String> byUserJid(Optional<String> username) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import io.dropwizard.hibernate.UnitOfWork;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -318,7 +320,7 @@ public void regradeSubmission(

@POST
@Path("/regrade")
@UnitOfWork
@UnitOfWork(transactional = false)
public void regradeSubmissions(
@HeaderParam(AUTHORIZATION) AuthHeader authHeader,
@QueryParam("contestJid") String contestJid,
Expand All @@ -331,22 +333,27 @@ public void regradeSubmissions(

Optional<String> problemJid = byProblemJid(contestJid, problemAlias);

List<Submission> submissions = new ArrayList<>();
Map<String, ProblemSubmissionConfig> configsMap = new HashMap<>();

for (int pageNumber = 1;; pageNumber++) {
List<Submission> submissions = submissionStore.getSubmissions(
List<Submission> curSubmissions = submissionStore.getSubmissions(
Optional.of(contestJid),
byUserJid(username),
problemJid,
pageNumber,
PAGE_SIZE).getPage();
1000).getPage();

if (submissions.isEmpty()) {
if (curSubmissions.isEmpty()) {
break;
}
submissions.addAll(curSubmissions);

var problemJids = Lists.transform(submissions, Submission::getProblemJid);
Map<String, ProblemSubmissionConfig> configsMap = sandalphonClient.getProgrammingProblemSubmissionConfigs(problemJids);
submissionRegrader.regradeSubmissions(submissions, configsMap);
var problemJids = Lists.transform(curSubmissions, Submission::getProblemJid);
configsMap.putAll(sandalphonClient.getProgrammingProblemSubmissionConfigs(problemJids));
}

submissionRegrader.regradeSubmissions(submissions, configsMap);
scoreboardIncrementalMarker.invalidateMark(contest.getJid());

contestLogger.log(contest.getJid(), "REGRADE_SUBMISSIONS", null, problemJid.orElse(null));
Expand Down

0 comments on commit 889f506

Please sign in to comment.