From d72cf99fa6c1c2f8fd2115cf50bf65b92fd351bb Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 21 Feb 2023 17:46:55 +0400 Subject: [PATCH] #92 -- Fix saving in transaction --- .../ru/ulstu/extractor/branch/service/BranchService.java | 7 ++++--- .../ru/ulstu/extractor/commit/service/CommitService.java | 8 -------- .../extractor/gitrepository/service/IndexService.java | 4 ++-- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java b/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java index cb8537e..e123a71 100644 --- a/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java +++ b/src/main/java/ru/ulstu/extractor/branch/service/BranchService.java @@ -41,6 +41,7 @@ public class BranchService { @Transactional public Branch save(Branch branch, List commits) { LOG.debug("Start save {} branch with {} commits ", branch.getName(), commits.size()); + LOG.debug("Current branch contains {} commits ", branch.getCommits().size()); List commitsToRemoveIds = branch.getCommits().stream().map(BaseEntity::getId).collect(Collectors.toList()); branch.setCommits(commitService.save(commits)); LOG.debug("Save branch {} ", branch.getName()); @@ -50,12 +51,12 @@ public class BranchService { return branch; } + @Transactional public Branch addCommits(Branch branch, List commits) { LOG.debug("Start add commits to {} branch with {} commits ", branch.getName(), commits.size()); - commitService.save(commits); + branch.getCommits().addAll(commitService.save(commits)); LOG.debug("Save branch {} ", branch.getName()); - commitService.updateBranchId(commits, branch.getId()); - return branch; + return save(branch); } public Branch findByRepositoryAndName(GitRepository gitRepository, String branchName) { diff --git a/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java b/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java index df8d389..79aaa9b 100644 --- a/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java +++ b/src/main/java/ru/ulstu/extractor/commit/service/CommitService.java @@ -44,14 +44,6 @@ public class CommitService { jdbcTemplate.update("DELETE FROM commit where branch_id is null"); } - public void updateBranchId(List commits, Integer branchId) { - List commitIds = commits.stream().map(c -> c.getId().toString()).collect(Collectors.toList()); - String updateQuery = "update commit set branch_id = ? where id in (%s)"; - updateQuery = String.format(updateQuery, String.join(",", commitIds)); - jdbcTemplate.update(updateQuery, branchId); - } - - public List findByRepositoryIdAndName(Integer repositoryId, String branchName) { return commitRepository.findByRepositoryIdAndBranchName(repositoryId, branchName); } diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java b/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java index 6d43000..7345254 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/service/IndexService.java @@ -74,9 +74,9 @@ public class IndexService { commitsTo += COMMITS_PAGE_SIZE; commits = gitRepositoryService.getCommits(gitRepository.getUrl(), branch.getName(), commitsFrom, commitsTo, false); } - final Branch branchForSave = branch; + branch = branchService.findByBranchId(branch.getId()).orElseThrow(() -> new RuntimeException("Branch not found by id")); + final Branch branchForSave = branchService.updateStatus(branch, IndexingStatus.FINISHED); timeSeriesCreators.forEach(tsCreator -> tsCreator.addTimeSeries(branchForSave)); - branchService.updateStatus(branch, IndexingStatus.FINISHED); LOG.debug("Complete indexing {} branch", branch.getName()); }