diff --git a/webapp/src/Controller/Jury/InternalErrorController.php b/webapp/src/Controller/Jury/InternalErrorController.php index 2b8bc03417..04642dab40 100644 --- a/webapp/src/Controller/Jury/InternalErrorController.php +++ b/webapp/src/Controller/Jury/InternalErrorController.php @@ -167,48 +167,47 @@ public function handleAction(Request $request, ?Profiler $profiler, int $errorId flush(); }; return $this->streamResponse($this->requestStack, function () use ($progressReporter, $internalError) { - $this->em->wrapInTransaction(function () use ($progressReporter, $internalError) { - $internalError->setStatus(InternalErrorStatusType::STATUS_RESOLVED); - $this->dj->setInternalError( - $internalError->getDisabled(), - $internalError->getContest(), - true - ); - - $this->dj->auditlog('internal_error', $internalError->getErrorid(), - sprintf('internal error: %s', InternalErrorStatusType::STATUS_RESOLVED)); - - $affectedJudgings = $internalError->getAffectedJudgings(); - if (!$affectedJudgings->isEmpty()) { - $skipped = []; - $rejudging = $this->rejudgingService->createRejudging( - 'Internal Error ' . $internalError->getErrorid() . ' resolved', - JudgeTask::PRIORITY_DEFAULT, - $affectedJudgings->getValues(), - false, - 0, - 0, - null, - $skipped, - $progressReporter); - if ($rejudging === null) { - $this->addFlash('warning', 'All submissions that are affected by this internal error are already part of another rejudging.'); - } else { - $rejudgingUrl = $this->generateUrl('jury_rejudging', ['rejudgingId' => $rejudging->getRejudgingid()]); - $internalErrorUrl = $this->generateUrl('jury_internal_error', ['errorId' => $internalError->getErrorid()]); - $message = sprintf( - 'Rejudging r%d created for internal error %d.', - $rejudgingUrl, - $rejudging->getRejudgingid(), - $internalErrorUrl, - $internalError->getErrorid() - ); - $progressReporter(100, '', $message); - } + $internalError->setStatus(InternalErrorStatusType::STATUS_RESOLVED); + $this->dj->setInternalError( + $internalError->getDisabled(), + $internalError->getContest(), + true + ); + $this->em->flush(); + + $this->dj->auditlog('internal_error', $internalError->getErrorid(), + sprintf('internal error: %s', InternalErrorStatusType::STATUS_RESOLVED)); + + $affectedJudgings = $internalError->getAffectedJudgings(); + if (!$affectedJudgings->isEmpty()) { + $skipped = []; + $rejudging = $this->rejudgingService->createRejudging( + 'Internal Error ' . $internalError->getErrorid() . ' resolved', + JudgeTask::PRIORITY_DEFAULT, + $affectedJudgings->getValues(), + false, + 0, + 0, + null, + $skipped, + $progressReporter); + if ($rejudging === null) { + $this->addFlash('warning', 'All submissions that are affected by this internal error are already part of another rejudging.'); } else { - $progressReporter(100, '', 'No affected judgings.'); + $rejudgingUrl = $this->generateUrl('jury_rejudging', ['rejudgingId' => $rejudging->getRejudgingid()]); + $internalErrorUrl = $this->generateUrl('jury_internal_error', ['errorId' => $internalError->getErrorid()]); + $message = sprintf( + 'Rejudging r%d created for internal error %d.', + $rejudgingUrl, + $rejudging->getRejudgingid(), + $internalErrorUrl, + $internalError->getErrorid() + ); + $progressReporter(100, '', $message); } - }); + } else { + $progressReporter(100, '', 'No affected judgings.'); + } }); }