From 4af8d23b5759a83f7535d5c10cfb85cf96ed7a2e Mon Sep 17 00:00:00 2001 From: entholzer Date: Mon, 21 Oct 2024 09:52:07 +0200 Subject: [PATCH 1/7] use old and slower participation retrieval method again --- .../programming/service/localvc/LocalVCServletService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java index f4bcf1ea2e89..043e6796559e 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java @@ -436,7 +436,9 @@ public void authorizeUser(String repositoryTypeOrUserName, User user, Programmin ProgrammingExerciseParticipation participation; try { - participation = programmingExerciseParticipationService.retrieveParticipationForRepository(repositoryTypeOrUserName, localVCRepositoryUri.toString()); + participation = programmingExerciseParticipationService.retrieveParticipationForRepository(exercise, repositoryTypeOrUserName, + localVCRepositoryUri.isPracticeRepository(), true); + // participation = programmingExerciseParticipationService.retrieveParticipationForRepository(repositoryTypeOrUserName, localVCRepositoryUri.toString()); } catch (EntityNotFoundException e) { throw new LocalVCInternalException( From b543f621ce0bd6e194172b231314b073d96933ec Mon Sep 17 00:00:00 2001 From: entholzer Date: Mon, 21 Oct 2024 10:13:41 +0200 Subject: [PATCH 2/7] disable access log service and remove runAsync --- .../service/localvc/LocalVCServletService.java | 13 ++++++------- .../service/localvc/VcsAccessLogService.java | 4 +--- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java index 043e6796559e..d7cafe25f260 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java @@ -16,7 +16,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.concurrent.CompletableFuture; import jakarta.servlet.http.HttpServletRequest; @@ -453,12 +452,12 @@ public void authorizeUser(String repositoryTypeOrUserName, User user, Programmin } // Asynchronously store an VCS access log entry - CompletableFuture.runAsync(() -> storeAccessLogAsync(user, participation, repositoryActionType, authenticationMechanism, ipAddress, localVCRepositoryUri)) - .exceptionally(ex -> { - log.warn("Failed to asynchronously obtain commit hash or store access log for repository {}. Error: {}", localVCRepositoryUri.getRelativeRepositoryPath(), - ex.getMessage()); - return null; - }); + // CompletableFuture.runAsync(() -> storeAccessLogAsync(user, participation, repositoryActionType, authenticationMechanism, ipAddress, localVCRepositoryUri)) + // .exceptionally(ex -> { + // log.warn("Failed to asynchronously obtain commit hash or store access log for repository {}. Error: {}", localVCRepositoryUri.getRelativeRepositoryPath(), + // ex.getMessage()); + // return null; + // }); } /** diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java index af1972ce2e1c..5e9e8b69811b 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java @@ -1,7 +1,5 @@ package de.tum.cit.aet.artemis.programming.service.localvc; -import static de.tum.cit.aet.artemis.core.config.Constants.PROFILE_LOCALVC; - import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.slf4j.Logger; @@ -20,7 +18,7 @@ import de.tum.cit.aet.artemis.programming.repository.VcsAccessLogRepository; import de.tum.cit.aet.artemis.programming.web.repository.RepositoryActionType; -@Profile(PROFILE_LOCALVC) +@Profile("someNotExistingProfile") @Service public class VcsAccessLogService { From 0cace5796b9ba07d61fb5fdbe1222df015eb4fcc Mon Sep 17 00:00:00 2001 From: entholzer Date: Mon, 21 Oct 2024 10:18:54 +0200 Subject: [PATCH 3/7] revert removal of AccessLogService --- .../service/localvc/LocalVCServletService.java | 13 +++++++------ .../service/localvc/VcsAccessLogService.java | 4 +++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java index d7cafe25f260..043e6796559e 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java @@ -16,6 +16,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.concurrent.CompletableFuture; import jakarta.servlet.http.HttpServletRequest; @@ -452,12 +453,12 @@ public void authorizeUser(String repositoryTypeOrUserName, User user, Programmin } // Asynchronously store an VCS access log entry - // CompletableFuture.runAsync(() -> storeAccessLogAsync(user, participation, repositoryActionType, authenticationMechanism, ipAddress, localVCRepositoryUri)) - // .exceptionally(ex -> { - // log.warn("Failed to asynchronously obtain commit hash or store access log for repository {}. Error: {}", localVCRepositoryUri.getRelativeRepositoryPath(), - // ex.getMessage()); - // return null; - // }); + CompletableFuture.runAsync(() -> storeAccessLogAsync(user, participation, repositoryActionType, authenticationMechanism, ipAddress, localVCRepositoryUri)) + .exceptionally(ex -> { + log.warn("Failed to asynchronously obtain commit hash or store access log for repository {}. Error: {}", localVCRepositoryUri.getRelativeRepositoryPath(), + ex.getMessage()); + return null; + }); } /** diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java index 5e9e8b69811b..af1972ce2e1c 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/VcsAccessLogService.java @@ -1,5 +1,7 @@ package de.tum.cit.aet.artemis.programming.service.localvc; +import static de.tum.cit.aet.artemis.core.config.Constants.PROFILE_LOCALVC; + import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.slf4j.Logger; @@ -18,7 +20,7 @@ import de.tum.cit.aet.artemis.programming.repository.VcsAccessLogRepository; import de.tum.cit.aet.artemis.programming.web.repository.RepositoryActionType; -@Profile("someNotExistingProfile") +@Profile(PROFILE_LOCALVC) @Service public class VcsAccessLogService { From c0d510f5d3a6bbfb8b902dcff6771a248953298d Mon Sep 17 00:00:00 2001 From: entholzer Date: Mon, 21 Oct 2024 13:25:27 +0200 Subject: [PATCH 4/7] added throw error with information --- .../service/ProgrammingExerciseParticipationService.java | 9 +++++++++ .../service/localvc/LocalVCServletService.java | 7 ++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java index bd8db678b5a2..c204cdb156fb 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.time.ZonedDateTime; import java.util.List; +import java.util.NoSuchElementException; import java.util.Optional; import jakarta.validation.constraints.NotNull; @@ -520,6 +521,14 @@ public ProgrammingExerciseParticipation retrieveParticipationForRepository(Strin if (repositoryTypeOrUserName.equals(RepositoryType.AUXILIARY.toString())) { throw new EntityNotFoundException("Auxiliary repositories do not have participations."); } + var opt = studentParticipationRepository.findByRepositoryUri(repositoryURI); + if (opt.isEmpty()) { + var all = studentParticipationRepository.findAll(); + var li = all.stream().map(ProgrammingExerciseStudentParticipation::getRepositoryUri).toList(); + String listString = String.join(", ", li); + throw new NoSuchElementException(listString + "\nrepori:: " + repositoryURI); + } + return studentParticipationRepository.findByRepositoryUriElseThrow(repositoryURI); } diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java index 043e6796559e..7659ce664df3 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java @@ -436,9 +436,10 @@ public void authorizeUser(String repositoryTypeOrUserName, User user, Programmin ProgrammingExerciseParticipation participation; try { - participation = programmingExerciseParticipationService.retrieveParticipationForRepository(exercise, repositoryTypeOrUserName, - localVCRepositoryUri.isPracticeRepository(), true); - // participation = programmingExerciseParticipationService.retrieveParticipationForRepository(repositoryTypeOrUserName, localVCRepositoryUri.toString()); + // participation = programmingExerciseParticipationService.retrieveParticipationForRepository(exercise, repositoryTypeOrUserName, + // localVCRepositoryUri.isPracticeRepository(), true); + + participation = programmingExerciseParticipationService.retrieveParticipationForRepository(repositoryTypeOrUserName, localVCRepositoryUri.toString()); } catch (EntityNotFoundException e) { throw new LocalVCInternalException( From 0175eac37c6fb2acb1f7ed5a244cf1ae2cdbe159 Mon Sep 17 00:00:00 2001 From: entholzer Date: Mon, 21 Oct 2024 14:11:39 +0200 Subject: [PATCH 5/7] throw different exception --- .../service/ProgrammingExerciseParticipationService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java index c204cdb156fb..749bbf43f8ed 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java @@ -6,7 +6,6 @@ import java.io.IOException; import java.time.ZonedDateTime; import java.util.List; -import java.util.NoSuchElementException; import java.util.Optional; import jakarta.validation.constraints.NotNull; @@ -526,7 +525,7 @@ public ProgrammingExerciseParticipation retrieveParticipationForRepository(Strin var all = studentParticipationRepository.findAll(); var li = all.stream().map(ProgrammingExerciseStudentParticipation::getRepositoryUri).toList(); String listString = String.join(", ", li); - throw new NoSuchElementException(listString + "\nrepori:: " + repositoryURI); + throw new EntityNotFoundException(listString + "\nrepori:: " + repositoryURI); } return studentParticipationRepository.findByRepositoryUriElseThrow(repositoryURI); From 6259b3210188105ee6c9b31a454818c6f0b9896f Mon Sep 17 00:00:00 2001 From: entholzer Date: Mon, 21 Oct 2024 18:26:08 +0200 Subject: [PATCH 6/7] added back old code --- .../programming/service/localvc/LocalVCServletService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java index 7659ce664df3..f5fa8b2c9243 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/localvc/LocalVCServletService.java @@ -436,10 +436,11 @@ public void authorizeUser(String repositoryTypeOrUserName, User user, Programmin ProgrammingExerciseParticipation participation; try { - // participation = programmingExerciseParticipationService.retrieveParticipationForRepository(exercise, repositoryTypeOrUserName, - // localVCRepositoryUri.isPracticeRepository(), true); + participation = programmingExerciseParticipationService.retrieveParticipationForRepository(exercise, repositoryTypeOrUserName, + localVCRepositoryUri.isPracticeRepository(), true); - participation = programmingExerciseParticipationService.retrieveParticipationForRepository(repositoryTypeOrUserName, localVCRepositoryUri.toString()); + // TODO Add this back in when we have figured out what is incorrect in the playwright configuration for (MySQL, Local) + // participation = programmingExerciseParticipationService.retrieveParticipationForRepository(repositoryTypeOrUserName, localVCRepositoryUri.toString()); } catch (EntityNotFoundException e) { throw new LocalVCInternalException( From 38b741d3a1d918689061f38c133089e94ba18767 Mon Sep 17 00:00:00 2001 From: Simon Entholzer <33342534+SimonEntholzer@users.noreply.github.com> Date: Tue, 22 Oct 2024 08:08:12 +0200 Subject: [PATCH 7/7] Update src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java --- .../service/ProgrammingExerciseParticipationService.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java b/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java index 749bbf43f8ed..bd8db678b5a2 100644 --- a/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseParticipationService.java @@ -520,14 +520,6 @@ public ProgrammingExerciseParticipation retrieveParticipationForRepository(Strin if (repositoryTypeOrUserName.equals(RepositoryType.AUXILIARY.toString())) { throw new EntityNotFoundException("Auxiliary repositories do not have participations."); } - var opt = studentParticipationRepository.findByRepositoryUri(repositoryURI); - if (opt.isEmpty()) { - var all = studentParticipationRepository.findAll(); - var li = all.stream().map(ProgrammingExerciseStudentParticipation::getRepositoryUri).toList(); - String listString = String.join(", ", li); - throw new EntityNotFoundException(listString + "\nrepori:: " + repositoryURI); - } - return studentParticipationRepository.findByRepositoryUriElseThrow(repositoryURI); }