This is an automated email from the ASF dual-hosted git repository. dpavlov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/master by this push: new 05a81e4 Fixed error propagation, improved monitoring 05a81e4 is described below commit 05a81e4d1fff719616ab1e9b5126661865839f3e Author: Dmitriy Pavlov <dpav...@apache.org> AuthorDate: Thu Feb 14 19:27:41 2019 +0300 Fixed error propagation, improved monitoring --- .../ignite/ci/jira/ignited/JiraTicketSync.java | 16 +++++++++++-- .../ignite/ci/jira/pure/IJiraIntegration.java | 6 ++--- .../java/org/apache/ignite/ci/jira/pure/Jira.java | 26 ++++------------------ .../ignite/ci/tcbot/conf/IJiraServerConfig.java | 20 +++++++++++++++++ .../apache/ignite/ci/web/rest/TriggerBuilds.java | 17 ++++++++------ 5 files changed, 51 insertions(+), 34 deletions(-) diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java index dca8033..b269176 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java @@ -30,9 +30,12 @@ import org.apache.ignite.ci.jira.pure.Fields; import org.apache.ignite.ci.jira.pure.IJiraIntegration; import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider; import org.apache.ignite.ci.jira.pure.Ticket; +import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig; import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited; import org.apache.ignite.internal.util.typedef.F; import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import static org.apache.ignite.ci.util.UrlUtil.escape; @@ -40,6 +43,9 @@ import static org.apache.ignite.ci.util.UrlUtil.escape; * Sync serving requests for all JIRA servers. */ public class JiraTicketSync { + /** Logger. */ + private static final Logger logger = LoggerFactory.getLogger(JiraTicketSync.class); + /** Scheduler. */ @Inject private IScheduler scheduler; @@ -94,18 +100,23 @@ public class JiraTicketSync { .map(Field::getName) .collect(Collectors.joining(",")); - String projectCode = jira.config().projectCodeForVisa(); + IJiraServerConfig cfg = jira.config(); + String projectCode = cfg.projectCodeForVisa(); String baseUrl = "search?jql=" + escape("project=" + projectCode + " order by updated DESC") + "&" + "fields=" + reqFields + "&maxResults=100"; + String url = baseUrl; + + logger.info("Requesting JIRA tickets using URL " + url + ("\n" + cfg.restApiUrl() + url)); Tickets tickets = jira.getTicketsPage(url); Collection<Ticket> page = tickets.issuesNotNull(); if (F.isEmpty(page)) - return "Something went wrong - no tickets found. Check jira availability."; + return "Something went wrong - no tickets found. Check jira availability: " + + "[project=" + projectCode + ", url=" + url + "]"; int ticketsSaved = jiraDao.saveChunk(srvIdMaskHigh, page, projectCode); @@ -115,6 +126,7 @@ public class JiraTicketSync { while (tickets.nextStart() > 0) { url = baseUrl + "&startAt=" + tickets.nextStart(); + logger.info("Requesting JIRA tickets using URL " + url + ("\n" + cfg.restApiUrl() + url)); tickets = jira.getTicketsPage(url); page = tickets.issuesNotNull(); diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java index 1af7fdc..891997a 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java @@ -59,8 +59,8 @@ public interface IJiraIntegration { */ public String generateCommentUrl(String ticketFullName, int commentId); - String restApiUrl(); - - + /** + * + */ public IJiraServerConfig config(); } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java index 33f9d8d..fab758a 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java @@ -61,9 +61,9 @@ class Jira implements IJiraIntegration { String errMsg = "Exception happened during receiving JIRA tickets " + "[url=" + url + ", errMsg=" + e.getMessage() + ']'; - logger.error(errMsg); + logger.error(errMsg, e); - return new Tickets(); + throw new IllegalStateException(errMsg, e); } } @@ -92,36 +92,18 @@ class Jira implements IJiraIntegration { /** {@inheritDoc} */ @AutoProfiling @Override public String postJiraComment(String ticket, String comment) throws IOException { - String jiraApiUrl = restApiUrl(); + String jiraApiUrl = config().restApiUrl(); String url = jiraApiUrl + "issue/" + ticket + "/comment"; return HttpUtil.sendPostAsStringToJira(config().decodedHttpAuthToken(), url, "{\"body\": \"" + comment + "\"}"); } - /** {@inheritDoc} */ - @Override @NotNull public String restApiUrl() { - String jiraUrl = config().getUrl(); - - if (isNullOrEmpty(jiraUrl)) - throw new IllegalStateException("JIRA API URL is not configured for this server."); - - StringBuilder apiUrl = new StringBuilder(); - - apiUrl.append(jiraUrl); - if (!jiraUrl.endsWith("/")) - apiUrl.append("/"); - - apiUrl.append("rest/api/2/"); - - return apiUrl.toString(); - } - /** * @param url Url, relative, should not contain any start slashes. * @return Response as gson string. */ public String sendGetToJira(String url) throws IOException { - return HttpUtil.sendGetToJira(config().decodedHttpAuthToken(), restApiUrl() + url); + return HttpUtil.sendGetToJira(config().decodedHttpAuthToken(), config().restApiUrl() + url); } } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java index a48b0f8..06933cf 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java @@ -19,6 +19,8 @@ package org.apache.ignite.ci.tcbot.conf; import com.google.common.base.Strings; import org.jetbrains.annotations.Nullable; +import static com.google.common.base.Strings.isNullOrEmpty; + /** * Abstract JIRA server config. */ @@ -52,4 +54,22 @@ public interface IJiraServerConfig { return !Strings.isNullOrEmpty(decodedHttpAuthToken()); } + + public default String restApiUrl() { + String jiraUrl = getUrl(); + + if (isNullOrEmpty(jiraUrl)) + throw new IllegalStateException("JIRA API URL is not configured for this server."); + + StringBuilder apiUrl = new StringBuilder(); + + apiUrl.append(jiraUrl); + if (!jiraUrl.endsWith("/")) + apiUrl.append("/"); + + apiUrl.append("rest/api/2/"); + + return apiUrl.toString(); + } + } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java index 037cead..bd953d7 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java @@ -36,6 +36,8 @@ import org.apache.ignite.ci.github.pure.IGitHubConnection; import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider; import org.apache.ignite.ci.jira.pure.IJiraIntegration; import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider; +import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig; +import org.apache.ignite.ci.tcbot.conf.ITcBotConfig; import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider; import org.apache.ignite.ci.user.ICredentialsProv; import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService; @@ -111,24 +113,25 @@ public class TriggerBuilds { @GET @Path("integrationUrls") - public Set<ServerIntegrationLinks> getIntegrationUrls(@NotNull @QueryParam("serverIds") String srvIds) { + public Set<ServerIntegrationLinks> getIntegrationUrls(@NotNull @QueryParam("serverIds") String srvCodes) { ICredentialsProv prov = ICredentialsProv.get(req); Injector injector = CtxListener.getInjector(ctx); + ITcBotConfig cfg = injector.getInstance(ITcBotConfig.class); ITeamcityIgnitedProvider tcIgnProv = injector.getInstance(ITeamcityIgnitedProvider.class); - String[] srvIds0 = srvIds.split(","); + String[] srvCodesArr = srvCodes.split(","); - return Arrays.stream(srvIds0).map(srvId -> { - if (!tcIgnProv.hasAccess(srvId, prov)) + return Arrays.stream(srvCodesArr).map(srvCode -> { + if (!tcIgnProv.hasAccess(srvCode, prov)) return null; - IJiraIntegration jira = injector.getInstance(IJiraIntegrationProvider.class).server(srvId); + IGitHubConnection gh = injector.getInstance(IGitHubConnectionProvider.class).server(srvCode); - IGitHubConnection gh = injector.getInstance(IGitHubConnectionProvider.class).server(srvId); + IJiraServerConfig jiraCfg = cfg.getJiraConfig(srvCode); - return new ServerIntegrationLinks(srvId, gh.gitApiUrl(), jira.restApiUrl()); + return new ServerIntegrationLinks(srvCode, gh.gitApiUrl(), jiraCfg.restApiUrl()); }).filter(Objects::nonNull).collect(Collectors.toSet()); } }