From 842468a175ea1ec8e884505a875d967ffc797a0b Mon Sep 17 00:00:00 2001 From: LSmyrnaios Date: Wed, 27 Sep 2023 12:24:22 +0300 Subject: [PATCH] Improve performance and error-handling in "InterfaceComplianceService.cleanUp()". --- .../service/InterfaceComplianceService.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/eu/dnetlib/repo/manager/service/InterfaceComplianceService.java b/src/main/java/eu/dnetlib/repo/manager/service/InterfaceComplianceService.java index 2a59c31..30a46fc 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/InterfaceComplianceService.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/InterfaceComplianceService.java @@ -39,19 +39,26 @@ public class InterfaceComplianceService { @Scheduled(cron = "0 0 0 * * *") // every day at 00:00 public void cleanUp() { Set requests = getOutdated(); - for (InterfaceComplianceRequest request : requests) { + for ( InterfaceComplianceRequest request : requests ) + { + String repoId = request.getRepositoryId(); + String interfaceId = request.getInterfaceId(); try { - Map repositoryInterfaceMap = repositoryService.getRepositoryInterface(request.getRepositoryId()) + Map repositoryInterfaceMap = repositoryService.getRepositoryInterface(repoId) .stream() .collect(Collectors.toMap(ApiDetails::getId, i -> i)); - Repository repo = repositoryService.getRepositoryById(request.getRepositoryId()); - RepositoryInterface iFace = repositoryInterfaceMap.get(request.getInterfaceId()); - List repositoryAdmins = authorizationService.getAdminsOfRepo(request.getRepositoryId()); + RepositoryInterface iFace = repositoryInterfaceMap.get(interfaceId); + if ( iFace == null ) { + logger.error("The repository-interface \"" + interfaceId + "\" does not exist! | the request had the \"repoId\": \"" + repoId + "\""); + continue; + } + Repository repo = repositoryService.getRepositoryById(repoId); + List repositoryAdmins = authorizationService.getAdminsOfRepo(repoId); emailUtils.sendUserUpdateInterfaceComplianceFailure(repositoryAdmins.stream().map(User::getEmail).collect(Collectors.toList()), repo, iFace, request); emailUtils.sendAdminUpdateInterfaceComplianceFailure(repo, iFace, request); } catch (ResourceNotFoundException e) { - logger.error("Error", e); - } + logger.error("Error for request with \"repoId\": \"" + repoId + "\" and \"interfaceId\": \"" + interfaceId + "\"", e); + } // Continue to the next request. } repository.deleteAll(requests); }