From 9101d7b3068c4f7d7af85fe738142405e41da6a2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 18 Feb 2021 10:55:08 +0100 Subject: [PATCH] =?UTF-8?q?Use=20for-loop=20in=20GitHub.findTickets(?= =?UTF-8?q?=E2=80=A6)=20instead=20offloading=20ticket=20lookup=20to=20the?= =?UTF-8?q?=20executor=20service.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now ensure that we do not block the executor service to avoid deadlocks caused by a blocked event loop. Resolves #174. --- .../data/release/issues/github/GitHub.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java b/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java index c514b66..fbd6b55 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java @@ -23,7 +23,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; @@ -49,9 +48,7 @@ import org.springframework.data.release.model.Project; import org.springframework.data.release.model.Projects; import org.springframework.data.release.model.Tracker; import org.springframework.data.release.model.TrainIteration; -import org.springframework.data.release.utils.ExecutionUtils; import org.springframework.data.release.utils.Logger; -import org.springframework.data.util.Streamable; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -92,16 +89,13 @@ class GitHub extends GitHubSupport implements IssueTracker { private final Logger logger; private final GitHubProperties properties; - private final ExecutorService executorService; - public GitHub(@Qualifier("tracker") RestTemplateBuilder templateBuilder, Logger logger, GitHubProperties properties, - ExecutorService executorService) { + public GitHub(@Qualifier("tracker") RestTemplateBuilder templateBuilder, Logger logger, GitHubProperties properties) { super(createOperations(templateBuilder, properties)); this.logger = logger; this.properties = properties; - this.executorService = executorService; } /* @@ -481,9 +475,16 @@ class GitHub extends GitHubSupport implements IssueTracker { String repositoryName = GitProject.of(moduleIteration.getProject()).getRepositoryName(); logger.log(moduleIteration, "Looking up GitHub issues …"); - Collection foundIssues = ExecutionUtils.runAndReturn(executorService, - Streamable.of(() -> ticketIds.stream().filter(it -> it.startsWith("#"))), - ticketReference -> getTicket(issues, repositoryName, ticketReference)); + Collection foundIssues = ticketIds.stream().filter(it -> it.startsWith("#")).flatMap(it -> { + + GitHubReadIssue ticket = getTicket(issues, repositoryName, it); + + if (ticket != null) { + return Stream.of(ticket); + } + + return Stream.empty(); + }).collect(Collectors.toList()); List gitHubIssues = foundIssues.stream().filter(it -> { Ticket ticket = toTicket(it);