You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2018/10/06 15:03:22 UTC
[ignite-teamcity-bot] branch master updated: IGNITE-9800: UI major
changes: index page is selection of use case;
Contribution check is now possible using table with PRs open
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 469b396 IGNITE-9800: UI major changes: index page is selection of use case; Contribution check is now possible using table with PRs open
469b396 is described below
commit 469b396a07eabf96bbc3f964ad230371b378c094
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Sat Oct 6 18:03:18 2018 +0300
IGNITE-9800: UI major changes: index page is selection of use case; Contribution check is now possible using table with PRs open
---
ignite-tc-helper-web/build.gradle | 11 +
.../java/org/apache/ignite/ci/HelperConfig.java | 4 +-
.../org/apache/ignite/ci/ITcServerProvider.java | 2 +-
.../main/java/org/apache/ignite/ci/ITeamcity.java | 42 +-
.../apache/ignite/ci/IgnitePersistentTeamcity.java | 32 +-
.../apache/ignite/ci/IgniteTeamcityConnection.java | 79 +-
.../main/java/org/apache/ignite/ci/TcHelper.java | 2 +-
.../apache/ignite/ci/analysis/LogCheckResult.java | 2 +
.../org/apache/ignite/ci/di/IgniteTcBotModule.java | 9 +-
.../org/apache/ignite/ci/di/MonitoredTask.java | 3 +
.../scheduler/IScheduler.java} | 30 +-
.../apache/ignite/ci/di/scheduler/NamedTask.java | 155 +
.../ignite/ci/di/scheduler/SchedulerModule.java | 15 +-
.../ignite/ci/di/scheduler/TcBotScheduler.java | 82 +
.../GitHubBranch.java} | 32 +-
.../github/{PullRequest.java => GitHubUser.java} | 55 +-
.../org/apache/ignite/ci/github/PullRequest.java | 91 +-
.../ci/github/ignited/GitHubConnIgnitedImpl.java | 166 +
.../ignited/GitHubIgnitedModule.java} | 13 +-
.../ci/github/ignited/GitHubIgnitedProvImpl.java | 56 +
.../ci/github/ignited/IGitHubConnIgnited.java | 17 +-
.../ignited/IGitHubConnIgnitedProvider.java} | 11 +-
.../ci/github/pure/GitHubCachingProvider.java | 51 +
.../ci/github/pure/GitHubConnectionImpl.java | 190 +
.../pure/GitHubIntegrationModule.java} | 12 +-
.../ignite/ci/github/pure/IGitHubConnection.java | 54 +
.../pure/IGitHubConnectionProvider.java} | 9 +-
.../org/apache/ignite/ci/issue/IssueDetector.java | 5 +-
.../ignite/ci/runners/GenerateStatusHtml.java | 2 +-
.../runners/IgniteTeamcityHelperRunnerExample.java | 4 +-
.../TcBotSystemProperties.java} | 6 +-
.../ci/{ => tcbot}/chain/BuildChainProcessor.java | 2 +-
.../ci/{ => tcbot}/chain/PrChainsProcessor.java | 9 +-
.../chain/TrackedBranchChainsProcessor.java | 4 +-
.../visa/ContributionToCheck.java} | 12 +-
.../visa/TcBotTriggerAndSignOffService.java} | 257 +-
.../{ => pure}/FileRecordingInputStream.java | 2 +-
.../ignite/ci/teamcity/{ => pure}/ITcLogin.java | 2 +-
.../{ => pure}/ITeamcityHttpConnection.java | 2 +-
.../{ => pure}/TcConnectionStaticLinker.java | 2 +-
.../ignite/ci/teamcity/{ => pure}/TcLoginImpl.java | 2 +-
.../{ => pure}/TcRealConnectionModule.java | 2 +-
.../ci/teamcity/{ => pure}/TeamcityRecorder.java | 2 +-
.../{ => pure}/TeamcityRecordingConnection.java | 2 +-
.../java/org/apache/ignite/ci/util/HttpUtil.java | 19 +-
.../java/org/apache/ignite/ci/web/CtxListener.java | 5 +-
.../java/org/apache/ignite/ci/web/Launcher.java | 7 +
.../org/apache/ignite/ci/web/model/Version.java | 2 +-
.../ci/web/model/current/SuiteCurrentStatus.java | 3 +-
.../ignite/ci/web/model/current/UpdateInfo.java | 7 +-
.../ignite/ci/web/rest/GetChainResultsAsHtml.java | 2 +-
.../org/apache/ignite/ci/web/rest/Metrics.java | 2 +-
.../apache/ignite/ci/web/rest/TriggerBuild.java | 157 +-
.../ci/web/rest/build/GetBuildTestFailures.java | 2 +-
.../web/rest/exception/ExeptionsTraceLogger.java | 12 +-
.../org/apache/ignite/ci/web/rest/login/Login.java | 3 +-
.../ignite/ci/web/rest/login/UserService.java | 2 +-
.../ci/web/rest/monitoring/MonitoringService.java | 4 +-
.../ignite/ci/web/rest/pr/GetPrTestFailures.java | 13 +-
.../rest/tracked/GetTrackedBranchTestResults.java | 2 +-
.../ignite/ci/web/rest/visa/TcBotVisaService.java | 62 +
.../src/main/webapp/css/style-1.5.css | 6 +
ignite-tc-helper-web/src/main/webapp/guard.html | 75 +
ignite-tc-helper-web/src/main/webapp/index.html | 111 +-
.../src/main/webapp/{index.html => index0.html} | 0
.../src/main/webapp/js/common-1.6.js | 2 +-
ignite-tc-helper-web/src/main/webapp/pr.html | 12 +-
ignite-tc-helper-web/src/main/webapp/prs.html | 340 +
ignite-tc-helper-web/src/main/webapp/services.html | 222 +-
ignite-tc-helper-web/src/main/webapp/user.html | 6 +-
.../ignite/ci/github/pure/GitHubPrsParseTest.java | 55 +
.../org/apache/ignite/ci/user/LoginAuthTest.java | 2 +-
.../src/test/resources/prsList.json | 10008 +++++++++++++++++++
jetty-launcher/build.gradle | 2 +-
.../apache/ignite/ci/TcHelperJettyLauncher.java | 3 +
75 files changed, 11770 insertions(+), 920 deletions(-)
diff --git a/ignite-tc-helper-web/build.gradle b/ignite-tc-helper-web/build.gradle
index cbcb9d7..41adbc0 100644
--- a/ignite-tc-helper-web/build.gradle
+++ b/ignite-tc-helper-web/build.gradle
@@ -65,4 +65,15 @@ dependencies {
compile group: 'javax.inject', name: 'javax.inject', version: '1'
compile group: 'com.google.inject', name: 'guice', version: '4.2.0'
+}
+
+processResources {
+
+ // Minify json resources
+ from(sourceSets.test.resources.srcDirs) {
+ include "**/*.json"
+
+ // Minify every file here
+ }
+
}
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java
index c39fd1e..0b6b0a8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java
@@ -100,7 +100,7 @@ public class HelperConfig {
return props;
}
- static String prepareConfigName(String tcName) {
+ public static String prepareConfigName(String tcName) {
return prefixedWithServerName(tcName, CONFIG_FILE_NAME);
}
@@ -136,7 +136,7 @@ public class HelperConfig {
* @param props Properties, where token is placed.
* @return Null or decoded auth token for Github.
*/
- @Nullable static String prepareGithubHttpAuthToken(Properties props) {
+ @Nullable public static String prepareGithubHttpAuthToken(Properties props) {
String tok = props.getProperty(GITHUB_AUTH_TOKEN);
if (isNullOrEmpty(tok))
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcServerProvider.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcServerProvider.java
index 96d4ad1..702ca22 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcServerProvider.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcServerProvider.java
@@ -24,5 +24,5 @@ import javax.annotation.Nullable;
* Provides instance to server with appropriate credentials, may cache instances to avoid odd server instances.
*/
public interface ITcServerProvider {
- IAnalyticsEnabledTeamcity server(String srvId, @Nullable ICredentialsProv prov);
+ public IAnalyticsEnabledTeamcity server(String srvId, @Nullable ICredentialsProv prov);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
index e404b70..e0aa4df 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
@@ -28,8 +28,7 @@ import javax.annotation.Nullable;
import org.apache.ignite.ci.analysis.LogCheckResult;
import org.apache.ignite.ci.analysis.MultBuildRunCtx;
import org.apache.ignite.ci.analysis.SingleBuildRunCtx;
-import org.apache.ignite.ci.chain.BuildChainProcessor;
-import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.tcbot.chain.BuildChainProcessor;
import org.apache.ignite.ci.tcmodel.agent.Agent;
import org.apache.ignite.ci.tcmodel.changes.Change;
import org.apache.ignite.ci.tcmodel.changes.ChangeRef;
@@ -275,15 +274,6 @@ public interface ITeamcity {
*/
boolean isTeamCityTokenAvailable();
- /**
- * @param token GitHub authorization token.
- */
- void setGitToken(String token);
-
- /**
- * @return {@code True} if GitHub authorization token is available.
- */
- boolean isGitTokenAvailable();
/**
* @param tok Jira authorization token.
@@ -296,21 +286,6 @@ public interface ITeamcity {
boolean isJiraTokenAvailable();
/**
- * Send POST request with given body.
- *
- * @param url Url.
- * @param body Request body.
- * @return {@code True} - if GitHub was notified. {@code False} - otherwise.
- */
- boolean notifyGit(String url, String body);
-
- /**
- * @param branch TeamCity's branch name. Looks like "pull/123/head".
- * @return Pull Request.
- */
- PullRequest getPullRequest(String branch);
-
- /**
* @param ticket JIRA ticket full name.
* @param comment Comment to be placed in the ticket conversation.
* @return {@code True} if ticket was succesfully commented. Otherwise - {@code false}.
@@ -321,16 +296,6 @@ public interface ITeamcity {
String sendJiraComment(String ticket, String comment) throws IOException;
/**
- * @param url URL for git integration.
- */
- void setGitApiUrl(String url);
-
- /**
- * @return URL for git integration.
- */
- String getGitApiUrl();
-
- /**
* @param url URL for JIRA integration.
*/
void setJiraApiUrl(String url);
@@ -340,9 +305,9 @@ public interface ITeamcity {
*/
String getJiraApiUrl();
- default void setAuthData(String user, String password) {
+ default void setAuthData(String user, String pwd) {
setAuthToken(
- Base64Util.encodeUtf8String(user + ":" + password));
+ Base64Util.encodeUtf8String(user + ":" + pwd));
}
/**
@@ -357,4 +322,5 @@ public interface ITeamcity {
void init(String serverId);
User getUserByUsername(String username);
+
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgnitePersistentTeamcity.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgnitePersistentTeamcity.java
index 35e5d63..2010f0c 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgnitePersistentTeamcity.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgnitePersistentTeamcity.java
@@ -60,7 +60,6 @@ import org.apache.ignite.ci.analysis.TestInBranch;
import org.apache.ignite.ci.db.DbMigrations;
import org.apache.ignite.ci.db.TcHelperDb;
import org.apache.ignite.ci.di.AutoProfiling;
-import org.apache.ignite.ci.github.PullRequest;
import org.apache.ignite.ci.tcmodel.agent.Agent;
import org.apache.ignite.ci.tcmodel.changes.Change;
import org.apache.ignite.ci.tcmodel.changes.ChangesList;
@@ -82,7 +81,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXParseException;
-import static org.apache.ignite.ci.chain.BuildChainProcessor.normalizeBranch;
+import static org.apache.ignite.ci.tcbot.chain.BuildChainProcessor.normalizeBranch;
/**
* Apache Ignite based cache over teamcity responses
@@ -1143,16 +1142,6 @@ public class IgnitePersistentTeamcity implements IAnalyticsEnabledTeamcity, ITea
}
/** {@inheritDoc} */
- @Override public void setGitToken(String tok) {
- teamcity.setGitToken(tok);
- }
-
- /** {@inheritDoc} */
- @Override public boolean isGitTokenAvailable() {
- return teamcity.isGitTokenAvailable();
- }
-
- /** {@inheritDoc} */
@Override public void setJiraToken(String tok) {
teamcity.setJiraToken(tok);
}
@@ -1167,15 +1156,6 @@ public class IgnitePersistentTeamcity implements IAnalyticsEnabledTeamcity, ITea
return teamcity.sendJiraComment(ticket, comment);
}
- /** {@inheritDoc} */
- @Override public void setGitApiUrl(String url) {
- teamcity.setGitApiUrl(url);
- }
-
- /** {@inheritDoc} */
- @Override public String getGitApiUrl() {
- return teamcity.getGitApiUrl();
- }
/** {@inheritDoc} */
@Override public void setJiraApiUrl(String url) {
@@ -1188,16 +1168,6 @@ public class IgnitePersistentTeamcity implements IAnalyticsEnabledTeamcity, ITea
}
/** {@inheritDoc} */
- @Override public PullRequest getPullRequest(String branchForTc) {
- return teamcity.getPullRequest(branchForTc);
- }
-
- /** {@inheritDoc} */
- @Override public boolean notifyGit(String url, String body) {
- return teamcity.notifyGit(url, body);
- }
-
- /** {@inheritDoc} */
@Override public List<Agent> agents(boolean connected, boolean authorized) {
return teamcity.agents(connected, authorized);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java
index aa0e76c..1b8f4a9 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityConnection.java
@@ -21,7 +21,6 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Stopwatch;
import com.google.common.base.Strings;
import com.google.common.util.concurrent.MoreExecutors;
-import com.google.gson.Gson;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -51,7 +50,6 @@ import org.apache.ignite.ci.analysis.LogCheckResult;
import org.apache.ignite.ci.analysis.LogCheckTask;
import org.apache.ignite.ci.analysis.SingleBuildRunCtx;
import org.apache.ignite.ci.di.AutoProfiling;
-import org.apache.ignite.ci.github.PullRequest;
import org.apache.ignite.ci.logs.BuildLogStreamChecker;
import org.apache.ignite.ci.tcmodel.agent.Agent;
import org.apache.ignite.ci.tcmodel.agent.AgentsRef;
@@ -70,7 +68,7 @@ import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrenceFull;
import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrences;
import org.apache.ignite.ci.tcmodel.user.User;
import org.apache.ignite.ci.tcmodel.user.Users;
-import org.apache.ignite.ci.teamcity.ITeamcityHttpConnection;
+import org.apache.ignite.ci.teamcity.pure.ITeamcityHttpConnection;
import org.apache.ignite.ci.util.ExceptionUtil;
import org.apache.ignite.ci.util.HttpUtil;
import org.apache.ignite.ci.util.UrlUtil;
@@ -111,15 +109,9 @@ public class IgniteTeamcityConnection implements ITeamcity {
/** Teamcity http connection. */
@Inject private ITeamcityHttpConnection teamcityHttpConn;
- /** GitHub authorization token. */
- private String gitAuthTok;
-
/** JIRA authorization token. */
private String jiraBasicAuthTok;
- /** URL for git integration. */
- private String gitApiUrl;
-
/** URL for JIRA integration. */
private String jiraApiUrl;
@@ -129,6 +121,7 @@ public class IgniteTeamcityConnection implements ITeamcity {
/** Build logger processing running. */
private ConcurrentHashMap<Integer, CompletableFuture<LogCheckTask>> buildLogProcessingRunning = new ConcurrentHashMap<>();
+ /** {@inheritDoc} */
public void init(@Nullable String tcName) {
this.tcName = tcName;
final File workDir = HelperConfig.resolveWorkDir();
@@ -149,9 +142,6 @@ public class IgniteTeamcityConnection implements ITeamcity {
logger.error("Failed to set credentials", e);
}
- setGitToken(HelperConfig.prepareGithubHttpAuthToken(props));
- setGitApiUrl(props.getProperty(HelperConfig.GIT_API_URL));
-
setJiraToken(HelperConfig.prepareJiraHttpAuthToken(props));
setJiraApiUrl(props.getProperty(HelperConfig.JIRA_API_URL));
@@ -173,16 +163,6 @@ public class IgniteTeamcityConnection implements ITeamcity {
}
/** {@inheritDoc} */
- @Override public void setGitToken(String tok) {
- gitAuthTok = tok;
- }
-
- /** {@inheritDoc} */
- @Override public boolean isGitTokenAvailable() {
- return gitAuthTok != null;
- }
-
- /** {@inheritDoc} */
@Override public void setJiraToken(String tok) {
jiraBasicAuthTok = tok;
}
@@ -204,16 +184,6 @@ public class IgniteTeamcityConnection implements ITeamcity {
}
/** {@inheritDoc} */
- @Override public void setGitApiUrl(String url) {
- gitApiUrl = url;
- }
-
- /** {@inheritDoc} */
- @Override public String getGitApiUrl() {
- return gitApiUrl;
- }
-
- /** {@inheritDoc} */
@Override public void setJiraApiUrl(String url) {
jiraApiUrl = url;
}
@@ -223,51 +193,6 @@ public class IgniteTeamcityConnection implements ITeamcity {
return jiraApiUrl;
}
- /** {@inheritDoc} */
- @AutoProfiling
- @Override public PullRequest getPullRequest(String branchForTc) {
- if (isNullOrEmpty(gitApiUrl))
- throw new IllegalStateException("Git API URL is not configured for this server.");
-
- String id = null;
-
- // Get PR id from string "pull/XXXX/head"
- for (int i = 5; i < branchForTc.length(); i++) {
- char c = branchForTc.charAt(i);
-
- if (!Character.isDigit(c)) {
- id = branchForTc.substring(5, i);
-
- break;
- }
- }
-
- String pr = gitApiUrl + "pulls/" + id;
-
- try (InputStream is = HttpUtil.sendGetToGit(gitAuthTok, pr)) {
- InputStreamReader reader = new InputStreamReader(is);
-
- return new Gson().fromJson(reader, PullRequest.class);
- }
- catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- }
-
- /** {@inheritDoc} */
- @AutoProfiling
- @Override public boolean notifyGit(String url, String body) {
- try {
- HttpUtil.sendPostAsStringToGit(gitAuthTok, url, body);
-
- return true;
- }
- catch (IOException e) {
- logger.error("Failed to notify Git [errMsg="+e.getMessage()+']');
-
- return false;
- }
- }
/** {@inheritDoc} */
@AutoProfiling
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
index 51484c6..5be9135 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
@@ -17,7 +17,7 @@
package org.apache.ignite.ci;
-import org.apache.ignite.ci.chain.PrChainsProcessor;
+import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
import org.apache.ignite.ci.conf.BranchesTracked;
import org.apache.ignite.ci.issue.IssueDetector;
import org.apache.ignite.ci.issue.IssuesStorage;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/LogCheckResult.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/LogCheckResult.java
index 2ceda10..790f80a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/LogCheckResult.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/LogCheckResult.java
@@ -65,10 +65,12 @@ public class LogCheckResult implements IVersionedEntity {
return lastStartedTest;
}
+ /** {@inheritDoc} */
@Override public int version() {
return _version == null ? -1 : _version;
}
+ /** {@inheritDoc} */
@Override public int latestVersion() {
return LATEST_VERSION;
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
index 5445dc0..2f802d4 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
@@ -25,11 +25,13 @@ import com.google.inject.matcher.Matchers;
import org.apache.ignite.Ignite;
import org.apache.ignite.ci.*;
import org.apache.ignite.ci.db.Ignite1Init;
+import org.apache.ignite.ci.di.scheduler.SchedulerModule;
+import org.apache.ignite.ci.github.ignited.GitHubIgnitedModule;
import org.apache.ignite.ci.issue.IssueDetector;
import org.apache.ignite.ci.jira.IJiraIntegration;
import org.apache.ignite.ci.observer.BuildObserver;
import org.apache.ignite.ci.observer.ObserverTask;
-import org.apache.ignite.ci.teamcity.TcRealConnectionModule;
+import org.apache.ignite.ci.teamcity.pure.TcRealConnectionModule;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.util.ExceptionUtil;
import org.apache.ignite.ci.web.BackgroundUpdater;
@@ -42,6 +44,9 @@ import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+/**
+ *
+ */
public class IgniteTcBotModule extends AbstractModule {
/** Ignite future. */
private Future<Ignite> igniteFut;
@@ -81,6 +86,8 @@ public class IgniteTcBotModule extends AbstractModule {
bind(BackgroundUpdater.class).in(new SingletonScope());
install(new TcRealConnectionModule());
+ install(new GitHubIgnitedModule());
+ install(new SchedulerModule());
}
//todo fallback to TC big class
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/MonitoredTask.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/MonitoredTask.java
index 8b235e2..a5a1575 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/MonitoredTask.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/MonitoredTask.java
@@ -23,6 +23,9 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD)
public @interface MonitoredTask {
+ /**
+ * @return Display name for monitoring page.
+ */
String name() default "";
/**
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/IScheduler.java
similarity index 51%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/IScheduler.java
index 2decbb1..79836d8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/IScheduler.java
@@ -14,23 +14,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.di.scheduler;
-import org.apache.ignite.ci.IgniteTeamcityConnection;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.TimeUnit;
-/**
- * Factory for non-guice creation of TC Connection instance.
- */
-public class TcConnectionStaticLinker {
+public interface IScheduler {
/**
- * @param srv Server ID.
+ * Creates and executes a one-shot action that becomes enabled
+ * after the given delay.
+ *
+ * @param cmd the task to execute.
+ * @param delay the time from now to delay execution.
+ * @param unit the time unit of the delay parameter.
+ *
+ * @throws RejectedExecutionException if the task cannot be
+ * scheduled for execution
+ * @throws NullPointerException if command is null
*/
- public static IgniteTeamcityConnection create(String srv) {
- final IgniteTeamcityConnection conn = new IgniteTeamcityConnection();
+ public void invokeLater(Runnable cmd, long delay, TimeUnit unit);
- conn.setHttpConn(new TeamcityRecordingConnection());
- conn.init(srv);
+ public void sheduleNamed(String fullName, Runnable cmd, long queitPeriod, TimeUnit unit);
- return conn;
- }
+ public void stop();
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/NamedTask.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/NamedTask.java
new file mode 100644
index 0000000..ef634ee
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/NamedTask.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.di.scheduler;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.StampedLock;
+import javax.annotation.Nonnull;
+import javax.annotation.concurrent.GuardedBy;
+
+class NamedTask {
+ private final StampedLock lock = new StampedLock();
+ private final String name;
+
+ @GuardedBy("lock")
+ private volatile Runnable cmd;
+
+ @GuardedBy("lock")
+ private volatile long lastFinishedTs = 0;
+
+ @GuardedBy("lock")
+ private volatile Status status = Status.CREATED;
+
+ @GuardedBy("lock")
+ private volatile long resValidityMs = 0;
+
+ enum Status {
+ CREATED, RUNNING, COMPLETED ;
+ }
+
+ public NamedTask(String name) {
+ this.name = name;
+ }
+
+ public void sheduleWithQuitePeriod(@Nonnull Runnable cmd, long period, TimeUnit unit) {
+ long resValidityMs = unit.toMillis(period);
+
+ boolean canSkip = false;
+
+ long optReadStamp = lock.tryOptimisticRead();
+
+ if (status == Status.RUNNING)
+ canSkip = true;
+
+ if (this.resValidityMs == 0 || this.resValidityMs > resValidityMs)
+ canSkip = false;
+
+ boolean optRead = lock.validate(optReadStamp);
+
+ if (optRead && canSkip)
+ return;
+
+ long writeLockStamp = lock.writeLock();
+ try {
+ this.cmd = cmd;
+ if (this.resValidityMs != 0)
+ this.resValidityMs = Math.min(this.resValidityMs, resValidityMs);
+ else
+ this.resValidityMs = resValidityMs;
+ }
+ finally {
+ lock.unlock(writeLockStamp);
+ }
+
+ }
+
+ public Runnable needRun() {
+ long optReadStamp = lock.tryOptimisticRead();
+ boolean canSkip = canSkipStartNow();
+ boolean optRead = lock.validate(optReadStamp);
+
+ if (optRead) {
+ if (canSkip)
+ return null;
+ }
+ else {
+ long readStamp = lock.readLock();
+ boolean canSkipStartNow;
+
+ try {
+ canSkipStartNow = canSkipStartNow();
+ }
+ finally {
+ lock.unlockRead(readStamp);
+ }
+
+ if (canSkipStartNow)
+ return null;
+ }
+
+ Runnable cmd;
+ long writeLockStamp = lock.writeLock();
+ try {
+ cmd = this.cmd;
+ this.cmd = null;
+
+ // because here lock is not upgraded from read lock cmd may come here with null
+ if (cmd != null)
+ status = Status.RUNNING;
+ }
+ finally {
+ lock.unlock(writeLockStamp);
+ }
+
+ if (cmd == null)
+ return null;
+
+ try {
+ cmd.run();
+ }
+ finally {
+ long writeLockStamp2 = lock.writeLock();
+ try {
+ lastFinishedTs = System.currentTimeMillis();
+ status = Status.COMPLETED;
+ }
+ finally {
+ lock.unlock(writeLockStamp2);
+ }
+ }
+
+ return cmd;
+ }
+
+ public boolean canSkipStartNow() {
+ boolean canSkip = false;
+ if (status == Status.RUNNING)
+ canSkip = true;
+
+ if (status == Status.COMPLETED) {
+ if (cmd == null)
+ canSkip = true; // No one asked to run
+
+ if (lastFinishedTs != 0 && (System.currentTimeMillis() - lastFinishedTs) < resValidityMs) {
+ //result is still fresh
+ canSkip = true;
+ }
+ }
+ return canSkip;
+ }
+
+}
diff --git a/jetty-launcher/src/main/java/org/apache/ignite/ci/TcHelperJettyLauncher.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/SchedulerModule.java
similarity index 70%
copy from jetty-launcher/src/main/java/org/apache/ignite/ci/TcHelperJettyLauncher.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/SchedulerModule.java
index d11a8e3..6379fbd 100644
--- a/jetty-launcher/src/main/java/org/apache/ignite/ci/TcHelperJettyLauncher.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/SchedulerModule.java
@@ -15,15 +15,14 @@
* limitations under the License.
*/
-package org.apache.ignite.ci;
+package org.apache.ignite.ci.di.scheduler;
-import static org.apache.ignite.ci.web.Launcher.*;
+import com.google.inject.AbstractModule;
+import com.google.inject.internal.SingletonScope;
-/**
- * Starts TC Helper REST server in production mode.
- */
-public class TcHelperJettyLauncher {
- public static void main(String[] args) throws Exception {
- runServer(false);
+public class SchedulerModule extends AbstractModule {
+ /** {@inheritDoc} */
+ @Override protected void configure() {
+ bind(IScheduler.class).to(TcBotScheduler.class).in(new SingletonScope());
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java
new file mode 100644
index 0000000..f3d2c8e
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.di.scheduler;
+
+import com.google.common.base.Preconditions;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.ignite.ci.di.MonitoredTask;
+
+class TcBotScheduler implements IScheduler {
+ /** Initial guard. */
+ private AtomicBoolean initGuard = new AtomicBoolean();
+
+ /** Executor service. */
+ private volatile ScheduledExecutorService executorSvc;
+
+ /** Submit named task checker guard. */
+ private AtomicBoolean tickGuard = new AtomicBoolean();
+
+ private final ConcurrentMap<String, NamedTask> namedTasks = new ConcurrentHashMap<>();
+
+ @Override public void invokeLater(Runnable cmd, long delay, TimeUnit unit) {
+ service().schedule(cmd, delay, unit);
+ }
+
+ @Override public void sheduleNamed(String fullName, Runnable cmd, long queitPeriod, TimeUnit unit) {
+ NamedTask task = namedTasks.computeIfAbsent(fullName, NamedTask::new);
+
+ task.sheduleWithQuitePeriod(cmd, queitPeriod, unit);
+
+ if (tickGuard.compareAndSet(false, true))
+ service().scheduleAtFixedRate(this::checkNamedTasks, 0, 1, TimeUnit.SECONDS);
+ }
+
+ /**
+ *
+ */
+ @MonitoredTask(name = "Run Named Scheduled Tasks")
+ protected String checkNamedTasks() {
+ AtomicInteger started = new AtomicInteger();
+ namedTasks.forEach((s, task) -> {
+ Runnable runnable = task.needRun();
+ if (runnable != null)
+ started.incrementAndGet();
+ });
+ return "Started " + started.get();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void stop() {
+ if (executorSvc != null)
+ executorSvc.shutdown();
+ }
+
+ private ScheduledExecutorService service() {
+ if (executorSvc == null && initGuard.compareAndSet(false, true))
+ executorSvc = Executors.newScheduledThreadPool(3);
+
+ Preconditions.checkNotNull(executorSvc, "Service should be created");
+
+ return executorSvc;
+ }
+}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/GitHubBranch.java
similarity index 56%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/GitHubBranch.java
index 2decbb1..a4b3dea 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/GitHubBranch.java
@@ -14,23 +14,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.github;
-import org.apache.ignite.ci.IgniteTeamcityConnection;
+import com.google.common.base.Objects;
-/**
- * Factory for non-guice creation of TC Connection instance.
- */
-public class TcConnectionStaticLinker {
- /**
- * @param srv Server ID.
- */
- public static IgniteTeamcityConnection create(String srv) {
- final IgniteTeamcityConnection conn = new IgniteTeamcityConnection();
+public class GitHubBranch {
+ private String label;
+ private String ref;
+ private String sha;
- conn.setHttpConn(new TeamcityRecordingConnection());
- conn.init(srv);
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ GitHubBranch branch = (GitHubBranch)o;
+ return Objects.equal(label, branch.label) &&
+ Objects.equal(ref, branch.ref) &&
+ Objects.equal(sha, branch.sha);
+ }
- return conn;
+ @Override public int hashCode() {
+ return Objects.hashCode(label, ref, sha);
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/GitHubUser.java
similarity index 53%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/GitHubUser.java
index 43a6b83..3157acc 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/GitHubUser.java
@@ -14,52 +14,43 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.ignite.ci.github;
+import com.google.common.base.Objects;
import com.google.gson.annotations.SerializedName;
-/**
- *
- */
-public class PullRequest {
- /** Pull Request number. You can see it at {@code apache/ignite/pull/"number"}. */
- @SerializedName("number") private int num;
-
- /** Pull Request state. */
- private String state;
-
- /** Pull Request title. */
- private String title;
-
- /** Pull Request statuses URL. */
- @SerializedName("statuses_url") private String statusesUrl;
+public class GitHubUser {
+ @SerializedName("login") private String login;
+ @SerializedName("avatar_url") private String avatarUrl;
+ /*See full example in prsList.json */
/**
- * @return Pull Request number.
+ * @return Login.
*/
- public int getNumber() {
- return num;
+ public String login() {
+ return login;
}
/**
- * @return Pull Request state.
+ * @return Avatar url.
*/
- public String getState() {
- return state;
+ public String avatarUrl() {
+ return avatarUrl;
}
- /**
- * @return Pull Request title.
- */
- public String getTitle() {
- return title;
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ GitHubUser user = (GitHubUser)o;
+ return Objects.equal(login, user.login) &&
+ Objects.equal(avatarUrl, user.avatarUrl);
}
- /**
- * @return Url to get PR statuses.
- */
- public String getStatusesUrl() {
- return statusesUrl;
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hashCode(login, avatarUrl);
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java
index 43a6b83..959e3a1 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/PullRequest.java
@@ -17,12 +17,24 @@
package org.apache.ignite.ci.github;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
import com.google.gson.annotations.SerializedName;
+import org.apache.ignite.ci.analysis.IVersionedEntity;
+import org.apache.ignite.ci.db.Persisted;
/**
*
*/
-public class PullRequest {
+@Persisted
+public class PullRequest implements IVersionedEntity {
+ public static final String OPEN = "open";
+ /** Latest version. */
+ private static final int LATEST_VERSION = 7;
+
+ /** Entity version. */
+ @SuppressWarnings("FieldCanBeLocal") private Integer _ver = LATEST_VERSION;
+
/** Pull Request number. You can see it at {@code apache/ignite/pull/"number"}. */
@SerializedName("number") private int num;
@@ -32,9 +44,20 @@ public class PullRequest {
/** Pull Request title. */
private String title;
+ @SerializedName("html_url") private String htmlUrl;
+
+ @SerializedName("updated_at") private String updatedAt;
+
/** Pull Request statuses URL. */
@SerializedName("statuses_url") private String statusesUrl;
+ @SerializedName("user") private GitHubUser gitHubUser;
+
+ @SerializedName("head") private GitHubBranch head;
+
+ @SerializedName("base") private GitHubBranch base;
+
+
/**
* @return Pull Request number.
*/
@@ -62,4 +85,70 @@ public class PullRequest {
public String getStatusesUrl() {
return statusesUrl;
}
+
+ /**
+ * @return Git hub user.
+ */
+ public GitHubUser gitHubUser() {
+ return gitHubUser;
+ }
+
+ /**
+ * @return Html url.
+ */
+ public String htmlUrl() {
+ return htmlUrl;
+ }
+
+ /**
+ * @return Head.
+ */
+ public GitHubBranch head() {
+ return head;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("num", num)
+ .add("state", state)
+ .add("title", title)
+ .add("statusesUrl", statusesUrl)
+ .toString();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ PullRequest req = (PullRequest)o;
+ return num == req.num &&
+ Objects.equal(_ver, req._ver) &&
+ Objects.equal(state, req.state) &&
+ Objects.equal(title, req.title) &&
+ Objects.equal(htmlUrl, req.htmlUrl) &&
+ Objects.equal(updatedAt, req.updatedAt) &&
+ Objects.equal(statusesUrl, req.statusesUrl) &&
+ Objects.equal(gitHubUser, req.gitHubUser) &&
+ Objects.equal(base, req.base) &&
+ Objects.equal(head, req.head);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hashCode(_ver, num, state, title, htmlUrl, updatedAt, statusesUrl, gitHubUser, base, head);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int version() {
+ return _ver == null ? -1 : _ver;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int latestVersion() {
+ return LATEST_VERSION;
+ }
+
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubConnIgnitedImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubConnIgnitedImpl.java
new file mode 100644
index 0000000..f44dae4
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubConnIgnitedImpl.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.github.ignited;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.ci.di.AutoProfiling;
+import org.apache.ignite.ci.di.MonitoredTask;
+import org.apache.ignite.ci.di.scheduler.IScheduler;
+import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.jetbrains.annotations.NotNull;
+
+class GitHubConnIgnitedImpl implements IGitHubConnIgnited {
+ public static final String GIT_HUB_PR = "gitHubPr";
+ private String srvId;
+ private IGitHubConnection conn;
+
+ @Inject Provider<Ignite> igniteProvider;
+ @Inject IScheduler scheduler;
+
+ @Deprecated
+ private final Cache<String, List<PullRequest>> prListCache
+ = CacheBuilder.newBuilder()
+ .maximumSize(100)
+ .expireAfterWrite(5, TimeUnit.MINUTES)
+ .softValues()
+ .build();
+
+ /** Server ID mask for cache Entries. */
+ private long srvIdMaskHigh;
+
+ private IgniteCache<Long, PullRequest> prCache;
+
+ private volatile boolean firstRun = true;
+
+ public void init(String srvId, IGitHubConnection conn) {
+ this.srvId = srvId;
+ this.conn = conn;
+
+ srvIdMaskHigh = srvId.hashCode();
+
+ prCache = igniteProvider.get().getOrCreateCache(getCache8PartsConfig(GIT_HUB_PR));
+ }
+
+ @NotNull
+ public static <K, V> CacheConfiguration<K, V> getCache8PartsConfig(String name) {
+ CacheConfiguration<K, V> ccfg = new CacheConfiguration<>(name);
+
+ ccfg.setAffinity(new RendezvousAffinityFunction(false, 8));
+
+ return ccfg;
+ }
+
+ /** {@inheritDoc} */
+ @AutoProfiling
+ @Override public List<PullRequest> getPullRequests() {
+ scheduler.sheduleNamed(IGitHubConnIgnited.class.getSimpleName() + ".actualizePrs",
+ this::actualizePrs, 2, TimeUnit.MINUTES);
+
+ return StreamSupport.stream(prCache.spliterator(), false)
+ .filter(entry -> entry.getKey() >> 32 == srvIdMaskHigh)
+ .filter(entry -> PullRequest.OPEN.equals(entry.getValue().getState()))
+ .map(javax.cache.Cache.Entry::getValue)
+ .collect(Collectors.toList());
+
+ /* try {
+ return prListCache.get("", conn::getPullRequests);
+ }
+ catch (ExecutionException e) {
+ throw ExceptionUtil.propagateException(e);
+ }*/
+ }
+
+ private void actualizePrs() {
+ runAtualizePrs(srvId, false);
+
+ // schedule full resync later
+ scheduler.sheduleNamed(IGitHubConnIgnited.class.getSimpleName() + ".fullReindex",
+ this::fullReindex, 60, TimeUnit.MINUTES);
+ }
+
+ private void fullReindex() {
+ runAtualizePrs(srvId, true);
+ }
+
+ /**
+ * @param srvId Server id.
+ * @param fullReindex Reindex all open PRs
+ */
+ @MonitoredTask(name = "Actualize PRs, full resync", nameExtArgIndex = 1)
+ @AutoProfiling
+ protected String runAtualizePrs(String srvId, boolean fullReindex) {
+ AtomicReference<String> outLinkNext = new AtomicReference<>();
+
+ List<PullRequest> ghData = conn.getPullRequests(null, outLinkNext);
+ int cntSaved = saveChunk(ghData);
+ int totalChecked = ghData.size();
+ while (outLinkNext.get() != null) {
+ String nextPageUrl = outLinkNext.get();
+ ghData = conn.getPullRequests(nextPageUrl, outLinkNext);
+ cntSaved += saveChunk(ghData);
+ totalChecked += ghData.size();
+
+ if(!fullReindex)
+ break; // 2 pages
+ }
+
+ return "Entries saved " + cntSaved + " PRs checked " + totalChecked;
+ }
+
+ private int saveChunk(List<PullRequest> ghData) {
+ Set<Long> ids = ghData.stream().map(PullRequest::getNumber)
+ .map(this::prNumberToCacheKey)
+ .collect(Collectors.toSet());
+
+ Map<Long, PullRequest> existingEntries = prCache.getAll(ids);
+ Map<Long, PullRequest> entriesToPut = new TreeMap<>();
+
+ for (PullRequest next : ghData) {
+ long cacheKey = prNumberToCacheKey(next.getNumber());
+ PullRequest prPersisted = existingEntries.get(cacheKey);
+
+ if (prPersisted == null || !prPersisted.equals(next))
+ entriesToPut.put(cacheKey, next);
+ }
+
+ int size = entriesToPut.size();
+ if (size != 0)
+ prCache.putAll(entriesToPut);
+ return size;
+ }
+
+ private long prNumberToCacheKey(int prNumber) {
+ return (long)prNumber | srvIdMaskHigh << 32;
+ }
+}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubIgnitedModule.java
similarity index 70%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubIgnitedModule.java
index e71c678..22c39f9 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubIgnitedModule.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.github.ignited;
import com.google.inject.AbstractModule;
import com.google.inject.internal.SingletonScope;
+import org.apache.ignite.ci.github.pure.GitHubIntegrationModule;
/**
- * Guice module to setup real connected server and all related implementations.
+ * Requires {@link org.apache.ignite.ci.di.scheduler.SchedulerModule} to be installed
*/
-public class TcRealConnectionModule extends AbstractModule {
+public class GitHubIgnitedModule extends AbstractModule {
/** {@inheritDoc} */
@Override protected void configure() {
- bind(ITeamcityHttpConnection.class).to(TeamcityRecordingConnection.class);
- bind(TeamcityRecorder.class).in(new SingletonScope());
- bind(ITcLogin.class).to(TcLoginImpl.class).in(new SingletonScope());
+ install(new GitHubIntegrationModule());
+
+ bind(IGitHubConnIgnitedProvider.class).to(GitHubIgnitedProvImpl.class).in(new SingletonScope());
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubIgnitedProvImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubIgnitedProvImpl.java
new file mode 100644
index 0000000..bba2356
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/GitHubIgnitedProvImpl.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.github.ignited;
+
+import com.google.common.base.Strings;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
+import org.apache.ignite.ci.util.ExceptionUtil;
+
+class GitHubIgnitedProvImpl implements IGitHubConnIgnitedProvider {
+ @Inject IGitHubConnectionProvider pureConnProv;
+ @Inject Provider<GitHubConnIgnitedImpl> ignitedProvider;
+
+ private final Cache<String, IGitHubConnIgnited> srvs
+ = CacheBuilder.newBuilder()
+ .maximumSize(100)
+ .expireAfterAccess(60, TimeUnit.MINUTES)
+ //.softValues()
+ .build();
+
+ /** {@inheritDoc} */
+ @Override public IGitHubConnIgnited server(String srvId) {
+ try {
+ return srvs.get(Strings.nullToEmpty(srvId), () -> {
+ IGitHubConnection srv = pureConnProv.server(srvId);
+ GitHubConnIgnitedImpl ignited = ignitedProvider.get();
+ ignited.init(srvId, srv);
+ return ignited;
+ });
+ }
+ catch (ExecutionException e) {
+ throw ExceptionUtil.propagateException(e);
+ }
+ }
+
+}
diff --git a/jetty-launcher/src/main/java/org/apache/ignite/ci/TcHelperJettyLauncher.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/IGitHubConnIgnited.java
similarity index 75%
copy from jetty-launcher/src/main/java/org/apache/ignite/ci/TcHelperJettyLauncher.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/IGitHubConnIgnited.java
index d11a8e3..31dd8f7 100644
--- a/jetty-launcher/src/main/java/org/apache/ignite/ci/TcHelperJettyLauncher.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/IGitHubConnIgnited.java
@@ -14,16 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.ignite.ci.github.ignited;
-package org.apache.ignite.ci;
-
-import static org.apache.ignite.ci.web.Launcher.*;
+import java.util.List;
+import org.apache.ignite.ci.github.PullRequest;
/**
- * Starts TC Helper REST server in production mode.
+ *
*/
-public class TcHelperJettyLauncher {
- public static void main(String[] args) throws Exception {
- runServer(false);
- }
+public interface IGitHubConnIgnited {
+ /**
+ * @return list of open pull requests
+ */
+ public List<PullRequest> getPullRequests();
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/IGitHubConnIgnitedProvider.java
similarity index 80%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/IGitHubConnIgnitedProvider.java
index fdcf9be..729e77e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/ignited/IGitHubConnIgnitedProvider.java
@@ -14,7 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.user;
+package org.apache.ignite.ci.github.ignited;
-public class TcBotUserLoginService {
+/**
+ *
+ */
+public interface IGitHubConnIgnitedProvider {
+ /**
+ * @param srvId Server id.
+ */
+ public IGitHubConnIgnited server(String srvId);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubCachingProvider.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubCachingProvider.java
new file mode 100644
index 0000000..67adcae
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubCachingProvider.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.github.pure;
+
+import com.google.common.base.Strings;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import org.apache.ignite.ci.util.ExceptionUtil;
+
+class GitHubCachingProvider implements IGitHubConnectionProvider {
+ @Inject Provider<IGitHubConnection> factory;
+ private final Cache<String, IGitHubConnection> srvs
+ = CacheBuilder.newBuilder()
+ .maximumSize(100)
+ .expireAfterAccess(16, TimeUnit.MINUTES)
+ .softValues()
+ .build();
+
+ /** {@inheritDoc} */
+ @Override public IGitHubConnection server(String srvId) {
+ try {
+ return srvs.get(Strings.nullToEmpty(srvId), () -> {
+ IGitHubConnection conn = factory.get();
+ conn.init(srvId);
+ return conn;
+ });
+ }
+ catch (ExecutionException e) {
+ throw ExceptionUtil.propagateException(e);
+ }
+ }
+
+}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java
new file mode 100644
index 0000000..3c3c8d4
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.github.pure;
+
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UncheckedIOException;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Properties;
+import java.util.StringTokenizer;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.ci.HelperConfig;
+import org.apache.ignite.ci.di.AutoProfiling;
+import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.util.ExceptionUtil;
+import org.apache.ignite.ci.util.HttpUtil;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static com.google.common.base.Strings.isNullOrEmpty;
+
+class GitHubConnectionImpl implements IGitHubConnection {
+ /** Logger. */
+ private static final Logger logger = LoggerFactory.getLogger(GitHubConnectionImpl.class);
+
+ /** URL for git integration. */
+ private String gitApiUrl;
+
+ /** GitHub authorization token. */
+ private String gitAuthTok;
+
+ @Nullable public static String parseNextLinkFromLinkRspHeader(String s) {
+ String nextLink = null;
+ StringTokenizer tokenizer = new StringTokenizer(s, ",");
+ for (; tokenizer.hasMoreTokens(); ) {
+ String tok = tokenizer.nextToken();
+
+ List<String> linkAndRel = new ArrayList<>();
+ StringTokenizer tokenizerForLink = new StringTokenizer(tok, ";");
+ for (; tokenizerForLink.hasMoreTokens(); ) {
+ String nextTok = tokenizerForLink.nextToken();
+ linkAndRel.add(nextTok);
+ }
+
+ if (linkAndRel.size() >= 2) {
+ String linkType = linkAndRel.get(1);
+ if ("rel=\"next\"".equals(linkType.trim()))
+ nextLink = linkAndRel.get(0).trim();
+ }
+ }
+
+ if (!isNullOrEmpty(nextLink)) {
+ if (nextLink.startsWith("<"))
+ nextLink = nextLink.substring(1);
+ if (nextLink.endsWith(">"))
+ nextLink = nextLink.substring(0, nextLink.length() - 1);
+ }
+ return nextLink;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void init(String srvId) {
+ final File workDir = HelperConfig.resolveWorkDir();
+
+ String cfgName = HelperConfig.prepareConfigName(srvId);
+
+ final Properties props = HelperConfig.loadAuthProperties(workDir, cfgName);
+
+ gitAuthTok = (HelperConfig.prepareGithubHttpAuthToken(props));
+ gitApiUrl = (props.getProperty(HelperConfig.GIT_API_URL));
+ }
+
+ /** {@inheritDoc} */
+ @AutoProfiling
+ @Override public PullRequest getPullRequest(String branchForTc) {
+ Preconditions.checkState(!isNullOrEmpty(gitApiUrl), "Git API URL is not configured for this server.");
+
+ String id = null;
+
+ // Get PR id from string "pull/XXXX/head"
+ for (int i = 5; i < branchForTc.length(); i++) {
+ char c = branchForTc.charAt(i);
+
+ if (!Character.isDigit(c)) {
+ id = branchForTc.substring(5, i);
+
+ break;
+ }
+ }
+
+ String pr = gitApiUrl + "pulls/" + id;
+
+ try (InputStream is = HttpUtil.sendGetToGit(gitAuthTok, pr, null)) {
+ InputStreamReader reader = new InputStreamReader(is);
+
+ return new Gson().fromJson(reader, PullRequest.class);
+ }
+ catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @AutoProfiling
+ @Override public boolean notifyGit(String url, String body) {
+ try {
+ HttpUtil.sendPostAsStringToGit(gitAuthTok, url, body);
+
+ return true;
+ }
+ catch (IOException e) {
+ logger.error("Failed to notify Git [errMsg=" + e.getMessage() + ']');
+
+ return false;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isGitTokenAvailable() {
+ return gitAuthTok != null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String gitApiUrl() {
+ return gitApiUrl;
+ }
+
+ /** {@inheritDoc} */
+ @AutoProfiling
+ @Override public List<PullRequest> getPullRequests(@Nullable String fullUrl,
+ @Nullable AtomicReference<String> outLinkNext) {
+ Preconditions.checkState(!isNullOrEmpty(gitApiUrl), "Git API URL is not configured for this server.");
+
+ String url = fullUrl != null ? fullUrl : gitApiUrl + "pulls?sort=updated&direction=desc";
+
+ HashMap<String, String> rspHeaders = new HashMap<>();
+ if (outLinkNext != null) {
+ outLinkNext.set(null);
+ rspHeaders.put("Link", null); // requesting header
+ }
+
+ try (InputStream stream = HttpUtil.sendGetToGit(gitAuthTok, url, rspHeaders)) {
+ InputStreamReader reader = new InputStreamReader(stream);
+ Type listType = new TypeToken<ArrayList<PullRequest>>() {
+ }.getType();
+
+ List<PullRequest> list = new Gson().fromJson(reader, listType);
+ String link = rspHeaders.get("Link");
+ if (link != null) {
+
+ String nextLink = parseNextLinkFromLinkRspHeader(link);
+ if (nextLink != null)
+ outLinkNext.set(nextLink);
+ }
+ System.err.println(link);
+ return list;
+ }
+ catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubIntegrationModule.java
similarity index 70%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubIntegrationModule.java
index e71c678..8b2911e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubIntegrationModule.java
@@ -14,19 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.github.pure;
import com.google.inject.AbstractModule;
import com.google.inject.internal.SingletonScope;
-/**
- * Guice module to setup real connected server and all related implementations.
- */
-public class TcRealConnectionModule extends AbstractModule {
+public class GitHubIntegrationModule extends AbstractModule {
/** {@inheritDoc} */
@Override protected void configure() {
- bind(ITeamcityHttpConnection.class).to(TeamcityRecordingConnection.class);
- bind(TeamcityRecorder.class).in(new SingletonScope());
- bind(ITcLogin.class).to(TcLoginImpl.class).in(new SingletonScope());
+ bind(IGitHubConnection.class).to(GitHubConnectionImpl.class);
+ bind(IGitHubConnectionProvider.class).to(GitHubCachingProvider.class).in(new SingletonScope());
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/IGitHubConnection.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/IGitHubConnection.java
new file mode 100644
index 0000000..268d2c7
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/IGitHubConnection.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.github.pure;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.ci.github.PullRequest;
+import org.jetbrains.annotations.Nullable;
+
+public interface IGitHubConnection {
+
+ void init(String srvId);
+
+ /**
+ * @param branch TeamCity's branch name. Looks like "pull/123/head".
+ * @return Pull Request.
+ */
+ PullRequest getPullRequest(String branch);
+
+ /**
+ * Send POST request with given body.
+ *
+ * @param url Url.
+ * @param body Request body.
+ * @return {@code True} - if GitHub was notified. {@code False} - otherwise.
+ */
+ boolean notifyGit(String url, String body);
+
+ /**
+ * @return {@code True} if GitHub authorization token is available.
+ */
+ boolean isGitTokenAvailable();
+
+ /**
+ * @return URL for git integration.
+ */
+ String gitApiUrl();
+
+ List<PullRequest> getPullRequests(@Nullable String fullUrl, @Nullable AtomicReference<String> outLinkNext);
+}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/IGitHubConnectionProvider.java
similarity index 80%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/IGitHubConnectionProvider.java
index fdcf9be..71e7844 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/IGitHubConnectionProvider.java
@@ -14,7 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.user;
+package org.apache.ignite.ci.github.pure;
-public class TcBotUserLoginService {
+public interface IGitHubConnectionProvider {
+ /**
+ * @param srvId Server id.
+ *
+ */
+ public IGitHubConnection server(String srvId);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java
index af27880..7e2afa8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssueDetector.java
@@ -40,7 +40,7 @@ import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.RunStat;
import org.apache.ignite.ci.analysis.SuiteInBranch;
import org.apache.ignite.ci.analysis.TestInBranch;
-import org.apache.ignite.ci.chain.TrackedBranchChainsProcessor;
+import org.apache.ignite.ci.tcbot.chain.TrackedBranchChainsProcessor;
import org.apache.ignite.ci.di.AutoProfiling;
import org.apache.ignite.ci.di.MonitoredTask;
import org.apache.ignite.ci.jobs.CheckQueueJob;
@@ -62,7 +62,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static com.google.common.base.Strings.isNullOrEmpty;
-import static org.apache.ignite.ci.chain.BuildChainProcessor.normalizeBranch;
+import static org.apache.ignite.ci.tcbot.chain.BuildChainProcessor.normalizeBranch;
/**
*
@@ -80,6 +80,7 @@ public class IssueDetector {
private final AtomicBoolean init = new AtomicBoolean();
private ICredentialsProv backgroundOpsCreds;
private ITcHelper backgroundOpsTcHelper;
+ @Deprecated //todo use scheduler
private ScheduledExecutorService executorService;
@Inject private Provider<CheckQueueJob> checkQueueJobProv;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/GenerateStatusHtml.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/GenerateStatusHtml.java
index adc81ff..c986665 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/GenerateStatusHtml.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/GenerateStatusHtml.java
@@ -21,7 +21,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import org.apache.ignite.ci.IgniteTeamcityConnection;
import org.apache.ignite.ci.tcmodel.conf.BuildType;
-import org.apache.ignite.ci.teamcity.TcConnectionStaticLinker;
+import org.apache.ignite.ci.teamcity.pure.TcConnectionStaticLinker;
import java.io.*;
import java.util.*;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/IgniteTeamcityHelperRunnerExample.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/IgniteTeamcityHelperRunnerExample.java
index 33c0634..1c4500e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/IgniteTeamcityHelperRunnerExample.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/IgniteTeamcityHelperRunnerExample.java
@@ -18,14 +18,12 @@
package org.apache.ignite.ci.runners;
import com.google.common.base.Throwables;
-import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.TreeSet;
-import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
@@ -34,7 +32,7 @@ import org.apache.ignite.ci.IgniteTeamcityConnection;
import org.apache.ignite.ci.tcmodel.conf.BuildType;
import org.apache.ignite.ci.tcmodel.conf.bt.BuildTypeFull;
import org.apache.ignite.ci.tcmodel.conf.bt.SnapshotDependency;
-import org.apache.ignite.ci.teamcity.TcConnectionStaticLinker;
+import org.apache.ignite.ci.teamcity.pure.TcConnectionStaticLinker;
/**
* Local class for running specific checks
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotSystemProperties.java
similarity index 86%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotSystemProperties.java
index fdcf9be..a77dbd2 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotSystemProperties.java
@@ -14,7 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.user;
-public class TcBotUserLoginService {
+package org.apache.ignite.ci.tcbot;
+
+public class TcBotSystemProperties {
+ public static final String DEV_MODE = "DEV_MODE";
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/BuildChainProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
similarity index 99%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/BuildChainProcessor.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
index fd93f87..921619b 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/BuildChainProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.ci.chain;
+package org.apache.ignite.ci.tcbot.chain;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/PrChainsProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
similarity index 93%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/PrChainsProcessor.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
index 8e2030e..be2a7a3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/PrChainsProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.chain;
+package org.apache.ignite.ci.tcbot.chain;
import com.google.common.base.Strings;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
@@ -24,6 +24,8 @@ import org.apache.ignite.ci.analysis.FullChainRunCtx;
import org.apache.ignite.ci.analysis.mode.LatestRebuildMode;
import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
import org.apache.ignite.ci.di.AutoProfiling;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
import org.apache.ignite.ci.tcmodel.hist.BuildRef;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
@@ -47,6 +49,7 @@ public class PrChainsProcessor {
/** Tc server provider. */
@Inject ITcServerProvider tcSrvProvider;
+ @Inject IGitHubConnectionProvider gitHubConnProvider;
/**
* @param creds Credentials.
@@ -75,7 +78,9 @@ public class PrChainsProcessor {
//using here non persistent TC allows to skip update statistic
IAnalyticsEnabledTeamcity teamcity = tcSrvProvider.server(srvId, creds);
- res.setJavaFlags(teamcity);
+ IGitHubConnection gitHubConn = gitHubConnProvider.server(srvId);
+
+ res.setJavaFlags(teamcity, gitHubConn);
LatestRebuildMode rebuild;
if (FullQueryParams.HISTORY.equals(act))
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/TrackedBranchChainsProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
similarity index 97%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/TrackedBranchChainsProcessor.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
index 3e4dbff..c29a964 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/chain/TrackedBranchChainsProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
@@ -14,14 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.chain;
+package org.apache.ignite.ci.tcbot.chain;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import javax.inject.Inject;
-import javax.ws.rs.QueryParam;
import org.apache.ignite.ci.HelperConfig;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.ITcServerProvider;
@@ -32,7 +31,6 @@ import org.apache.ignite.ci.conf.BranchTracked;
import org.apache.ignite.ci.di.AutoProfiling;
import org.apache.ignite.ci.tcmodel.hist.BuildRef;
import org.apache.ignite.ci.user.ICredentialsProv;
-import org.apache.ignite.ci.web.TcUpdatePool;
import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
import org.apache.ignite.ci.web.rest.parms.FullQueryParams;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
similarity index 77%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
index fdcf9be..e627bcc 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/TcBotUserLoginService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
@@ -14,7 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.user;
+package org.apache.ignite.ci.tcbot.visa;
-public class TcBotUserLoginService {
+/**
+ *
+ */
+public class ContributionToCheck {
+ public Integer prNumber;
+ public String prTitle;
+ public String prAuthor;
+ public String prAuthorAvatarUrl;
+ public String prHtmlUrl;
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
similarity index 51%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index 83e7911..d3429e3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -15,136 +15,83 @@
* limitations under the License.
*/
-package org.apache.ignite.ci.web.rest;
+package org.apache.ignite.ci.tcbot.visa;
import com.google.common.base.Strings;
-import java.util.Arrays;
+import com.google.inject.Provider;
import java.util.List;
-import java.util.Objects;
-import java.util.Set;
import java.util.stream.Collectors;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
+import javax.inject.Inject;
import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import org.apache.ignite.ci.ITcHelper;
+import org.apache.ignite.ci.ITcServerProvider;
import org.apache.ignite.ci.ITeamcity;
-import org.apache.ignite.ci.conf.ServerIntegrationLinks;
+import org.apache.ignite.ci.github.GitHubUser;
+import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
+import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.jira.IJiraIntegration;
import org.apache.ignite.ci.observer.BuildObserver;
import org.apache.ignite.ci.tcmodel.result.Build;
import org.apache.ignite.ci.user.ICredentialsProv;
-import org.apache.ignite.ci.web.CtxListener;
-import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException;
import org.apache.ignite.ci.web.model.SimpleResult;
import org.apache.ignite.internal.util.typedef.F;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-@Path("build")
-@Produces(MediaType.APPLICATION_JSON)
-public class TriggerBuild {
- @Context
- private ServletContext context;
-
- @Context
- private HttpServletRequest req;
-
- @GET
- @Path("trigger")
- public SimpleResult triggerBuild(
- @Nullable @QueryParam("serverId") String srvId,
- @Nullable @QueryParam("branchName") String branchForTc,
- @Nullable @QueryParam("suiteId") String suiteId,
- @Nullable @QueryParam("top") Boolean top,
- @Nullable @QueryParam("observe") Boolean observe,
- @Nullable @QueryParam("ticketId") String ticketId
- ) {
- String jiraRes = "";
- final ICredentialsProv prov = ICredentialsProv.get(req);
+/**
+ * Provides method for TC Bot Visa obtaining
+ */
+public class TcBotTriggerAndSignOffService {
- if (!prov.hasAccess(srvId))
- throw ServiceUnauthorizedException.noCreds(srvId);
+ @Inject Provider<BuildObserver> buildObserverProvider;
- ITcHelper helper = CtxListener.getTcHelper(context);
+ @Inject IGitHubConnectionProvider gitHubConnectionProvider;
+ @Inject IGitHubConnIgnitedProvider gitHubConnIgnitedProvider;
- final ITeamcity teamcity = helper.server(srvId, prov);
+ @Inject ITcServerProvider tcServerProvider;
- Build build = teamcity.triggerBuild(suiteId, branchForTc, false, top != null && top);
-
- if (observe != null && observe)
- jiraRes = observeJira(srvId, branchForTc, ticketId, teamcity, build, prov);
+ @Inject IJiraIntegration jiraIntegration;
- return new SimpleResult("Tests started." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : ""));
- }
+ /**
+ * @param pr Pull Request.
+ * @return JIRA ticket number.
+ */
+ @NotNull public static String getTicketId(PullRequest pr) {
+ String ticketId = "";
- @GET
- @Path("commentJira")
- public SimpleResult commentJira(
- @Nullable @QueryParam("serverId") String srvId,
- @Nullable @QueryParam("branchName") String branchForTc,
- @Nullable @QueryParam("suiteId") String suiteId,
- @Nullable @QueryParam("ticketId") String ticketId
- ) {
- try {
- return commentJiraEx(srvId, branchForTc, suiteId, ticketId);
- } catch (Exception e) {
- e.printStackTrace();
+ if (pr.getTitle().startsWith("IGNITE-")) {
+ int beginIdx = 7;
+ int endIdx = 7;
- //todo better exception handling at jersey level
+ while (endIdx < pr.getTitle().length() && Character.isDigit(pr.getTitle().charAt(endIdx)))
+ endIdx++;
- throw e;
+ ticketId = pr.getTitle().substring(beginIdx, endIdx);
}
- }
-
- @NotNull
- public SimpleResult commentJiraEx(
- @QueryParam("serverId") @Nullable String srvId,
- @QueryParam("branchName") @Nullable String branchForTc,
- @QueryParam("suiteId") @Nullable String suiteId,
- @QueryParam("ticketId") @Nullable String ticketId
- ) {
- final ICredentialsProv prov = ICredentialsProv.get(req);
- if (!prov.hasAccess(srvId))
- throw ServiceUnauthorizedException.noCreds(srvId);
+ return ticketId;
+ }
- ITcHelper helper = CtxListener.getTcHelper(context);
+ @NotNull public String triggerBuildAndObserve(
+ @Nullable String srvId,
+ @Nullable String branchForTc,
+ @Nullable String suiteId,
+ @Nullable Boolean top,
+ @Nullable Boolean observe,
+ @Nullable String ticketId,
+ ICredentialsProv prov) {
String jiraRes = "";
- final ITeamcity teamcity = helper.server(srvId, prov);
-
- if (Strings.isNullOrEmpty(ticketId)) {
- try {
- PullRequest pr = teamcity.getPullRequest(branchForTc);
-
- ticketId = getTicketId(pr);
+ final ITeamcity teamcity = tcServerProvider.server(srvId, prov);
- if (ticketId.isEmpty()) {
- jiraRes = "JIRA ticket can't be commented - " +
- "PR title \"" + pr.getTitle() + "\" should starts with \"IGNITE-XXXX\"." +
- " Please, rename PR according to the" +
- " <a href='https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" +
- "#HowtoContribute-1.CreateGitHubpull-request'>contributing guide</a>" +
- " or enter ticket id in the form.";
- }
- }
- catch (RuntimeException e) {
- jiraRes = "Exception happened when server tried to get ticket ID from Pull Request - " + e.getMessage();
- }
- }
+ Build build = teamcity.triggerBuild(suiteId, branchForTc, false, top != null && top);
- if (!Strings.isNullOrEmpty(ticketId)) {
- jiraRes = helper.notifyJira(srvId, prov, suiteId, branchForTc, "ignite-" + ticketId);
+ if (observe != null && observe)
+ jiraRes = observeJira(srvId, branchForTc, ticketId, teamcity, build, prov);
- return new SimpleResult(jiraRes);
- }
- else
- return new SimpleResult("JIRA wasn't commented." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : ""));
+ return jiraRes;
}
/**
@@ -166,7 +113,9 @@ public class TriggerBuild {
) {
if (F.isEmpty(ticketId)) {
try {
- PullRequest pr = teamcity.getPullRequest(branchForTc);
+ IGitHubConnection gitHubConnection = gitHubConnectionProvider.server(srvId);
+
+ PullRequest pr = gitHubConnection.getPullRequest(branchForTc);
ticketId = getTicketId(pr);
@@ -185,77 +134,69 @@ public class TriggerBuild {
}
}
- BuildObserver observer = CtxListener.getInjector(context).getInstance(BuildObserver.class);
-
- observer.observe(build, srvId, prov, "ignite-" + ticketId);
+ buildObserverProvider.get().observe(build, srvId, prov, "ignite-" + ticketId);
return "JIRA ticket IGNITE-" + ticketId + " will be notified after the tests are completed.";
}
- /**
- * @param pr Pull Request.
- * @return JIRA ticket number.
- */
- @NotNull private String getTicketId(PullRequest pr) {
- String ticketId = "";
+ @NotNull
+ public SimpleResult commentJiraEx(
+ @QueryParam("serverId") @Nullable String srvId,
+ @QueryParam("branchName") @Nullable String branchForTc,
+ @QueryParam("suiteId") @Nullable String suiteId,
+ @QueryParam("ticketId") @Nullable String ticketId,
+ ICredentialsProv prov) {
+ String jiraRes = "";
- if (pr.getTitle().startsWith("IGNITE-")) {
- int beginIdx = 7;
- int endIdx = 7;
+ if (Strings.isNullOrEmpty(ticketId)) {
+ try {
+ IGitHubConnection gitHubConn = gitHubConnectionProvider.server(srvId);
+ PullRequest pr = gitHubConn.getPullRequest(branchForTc);
- while (endIdx < pr.getTitle().length() && Character.isDigit(pr.getTitle().charAt(endIdx)))
- endIdx++;
+ ticketId = getTicketId(pr);
- ticketId = pr.getTitle().substring(beginIdx, endIdx);
+ if (ticketId.isEmpty()) {
+ jiraRes = "JIRA ticket can't be commented - " +
+ "PR title \"" + pr.getTitle() + "\" should starts with \"IGNITE-XXXX\"." +
+ " Please, rename PR according to the" +
+ " <a href='https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" +
+ "#HowtoContribute-1.CreateGitHubpull-request'>contributing guide</a>" +
+ " or enter ticket id in the form.";
+ }
+ }
+ catch (RuntimeException e) {
+ jiraRes = "Exception happened when server tried to get ticket ID from Pull Request - " + e.getMessage();
+ }
}
- return ticketId;
- }
-
- @GET
- @Path("triggerBuilds")
- public SimpleResult triggerBuilds(
- @Nullable @QueryParam("serverId") String serverId,
- @Nullable @QueryParam("branchName") String branchName,
- @NotNull @QueryParam("suiteIdList") String suiteIdList,
- @Nullable @QueryParam("top") Boolean top) {
-
- final ICredentialsProv prov = ICredentialsProv.get(req);
-
- if (!prov.hasAccess(serverId))
- throw ServiceUnauthorizedException.noCreds(serverId);
-
- List<String> strings = Arrays.asList(suiteIdList.split(","));
- if (strings.isEmpty())
- return new SimpleResult("Error: nothing to run");
-
- final ITeamcity helper = CtxListener.getTcHelper(context).server(serverId, prov);
-
- boolean queueToTop = top != null && top;
-
- for (String suiteId : strings) {
- System.out.println("Triggering [ " + suiteId + "," + branchName + "," + "top=" + queueToTop + "]");
+ if (!Strings.isNullOrEmpty(ticketId)) {
+ jiraRes = jiraIntegration.notifyJira(srvId, prov, suiteId, branchForTc, "ignite-" + ticketId);
- helper.triggerBuild(suiteId, branchName, false, queueToTop);
+ return new SimpleResult(jiraRes);
}
-
- return new SimpleResult("OK");
+ else
+ return new SimpleResult("JIRA wasn't commented." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : ""));
}
- @GET
- @Path("integrationUrls")
- public Set<ServerIntegrationLinks> getIntegrationUrls(@NotNull @QueryParam("serverIds") String srvIds) {
- final ICredentialsProv prov = ICredentialsProv.get(req);
-
- String[] srvIds0 = srvIds.split(",");
-
- return Arrays.stream(srvIds0).map(srvId -> {
- if (!prov.hasAccess(srvId))
- return null;
-
- ITeamcity teamcity = CtxListener.server(srvId, context, req);
+ public List<ContributionToCheck> getContributionsToCheck(String srvId) {
+ IGitHubConnIgnited gitHubConn = gitHubConnIgnitedProvider.server(srvId);
+ List<PullRequest> requests = gitHubConn.getPullRequests();
+ if (requests == null)
+ return null;
+
+ return requests.stream().map(pr -> {
+ ContributionToCheck check = new ContributionToCheck();
+ check.prNumber = pr.getNumber();
+ check.prTitle = pr.getTitle();
+ check.prHtmlUrl = pr.htmlUrl();
+
+ GitHubUser user = pr.gitHubUser();
+ if (user != null) {
+ check.prAuthor = user.login();
+ check.prAuthorAvatarUrl = user.avatarUrl();
+ }
- return new ServerIntegrationLinks(srvId, teamcity.getGitApiUrl(), teamcity.getGitApiUrl());
- }).filter(Objects::nonNull).collect(Collectors.toSet());
+ return check;
+ }).collect(Collectors.toList());
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/FileRecordingInputStream.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/FileRecordingInputStream.java
similarity index 98%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/FileRecordingInputStream.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/FileRecordingInputStream.java
index 25e6854..45d1cdf 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/FileRecordingInputStream.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/FileRecordingInputStream.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import com.google.common.base.Charsets;
import com.google.common.base.Preconditions;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ITcLogin.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITcLogin.java
similarity index 96%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ITcLogin.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITcLogin.java
index 867da4a..7fb46b2 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ITcLogin.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITcLogin.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import org.apache.ignite.ci.tcmodel.user.User;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ITeamcityHttpConnection.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityHttpConnection.java
similarity index 96%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ITeamcityHttpConnection.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityHttpConnection.java
index bfb0976..8f26955 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ITeamcityHttpConnection.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityHttpConnection.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import java.io.IOException;
import java.io.InputStream;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcConnectionStaticLinker.java
similarity index 96%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcConnectionStaticLinker.java
index 2decbb1..aafbe4f 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcConnectionStaticLinker.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcConnectionStaticLinker.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import org.apache.ignite.ci.IgniteTeamcityConnection;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcLoginImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcLoginImpl.java
similarity index 98%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcLoginImpl.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcLoginImpl.java
index 590b6e8..f8aad00 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcLoginImpl.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcLoginImpl.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.tcmodel.user.User;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcRealConnectionModule.java
similarity index 96%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcRealConnectionModule.java
index e71c678..4d154e7 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TcRealConnectionModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TcRealConnectionModule.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import com.google.inject.AbstractModule;
import com.google.inject.internal.SingletonScope;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TeamcityRecorder.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TeamcityRecorder.java
similarity index 98%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TeamcityRecorder.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TeamcityRecorder.java
index 40ec487..7cae7f3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TeamcityRecorder.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TeamcityRecorder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import com.google.common.base.Charsets;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TeamcityRecordingConnection.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TeamcityRecordingConnection.java
similarity index 96%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TeamcityRecordingConnection.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TeamcityRecordingConnection.java
index 4b41e1c..72ded81 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/TeamcityRecordingConnection.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/TeamcityRecordingConnection.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.teamcity;
+package org.apache.ignite.ci.teamcity.pure;
import org.apache.ignite.ci.util.HttpUtil;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java
index 60db238..817fa04 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java
@@ -31,8 +31,10 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
+import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException;
+import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,6 +47,9 @@ public class HttpUtil {
/** Logger. */
private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class);
+ /**
+ * @param inputStream Input stream.
+ */
private static String readIsToString(InputStream inputStream) throws IOException {
if (inputStream == null)
return "<null>";
@@ -92,10 +97,11 @@ public class HttpUtil {
*
* @param githubAuthTok Authorization OAuth token.
* @param url URL.
+ * @param rspHeaders [IN] - required codes name->null, [OUT] required codes: name->value.
* @return Input stream from connection.
* @throws IOException If failed.
*/
- public static InputStream sendGetToGit(String githubAuthTok, String url) throws IOException {
+ public static InputStream sendGetToGit(String githubAuthTok, String url, @Nullable Map<String, String> rspHeaders) throws IOException {
Stopwatch started = Stopwatch.createStarted();
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection)obj.openConnection();
@@ -107,8 +113,17 @@ public class HttpUtil {
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Keep-Alive", "header");
+ int resCode = con.getResponseCode();
+
+ if(rspHeaders != null) {
+ rspHeaders.keySet().forEach((k) -> {
+ String link = con.getHeaderField(k);
+
+ rspHeaders.put(k, link);
+ });
+ }
logger.info(Thread.currentThread().getName() + ": Required: " + started.elapsed(TimeUnit.MILLISECONDS)
- + "ms : Sending 'GET' request to : " + url);
+ + "ms : Sending 'GET' request to : " + url + " Response: " + resCode);
return getInputStream(con);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
index 073b865..249d554 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
@@ -34,8 +34,9 @@ import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.TcHelper;
import org.apache.ignite.ci.db.TcHelperDb;
import org.apache.ignite.ci.di.IgniteTcBotModule;
+import org.apache.ignite.ci.di.scheduler.IScheduler;
import org.apache.ignite.ci.observer.BuildObserver;
-import org.apache.ignite.ci.teamcity.TeamcityRecorder;
+import org.apache.ignite.ci.teamcity.pure.TeamcityRecorder;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.jetbrains.annotations.Nullable;
@@ -114,6 +115,8 @@ public class CtxListener implements ServletContextListener {
try {
injector.getInstance(TcUpdatePool.class).stop();
injector.getInstance(BuildObserver.class).stop();
+
+ injector.getInstance(IScheduler.class).stop();
}
catch (Exception e) {
e.printStackTrace();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/Launcher.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/Launcher.java
index 9c07fce..4ff0f81 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/Launcher.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/Launcher.java
@@ -22,6 +22,7 @@ import java.io.Console;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
+import org.apache.ignite.ci.tcbot.TcBotSystemProperties;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.webapp.WebAppContext;
@@ -34,7 +35,13 @@ public class Launcher {
runServer(true);
}
+ /**
+ * @param dev Dev mode.
+ */
public static void runServer(boolean dev) throws Exception {
+ if(dev)
+ System.setProperty(TcBotSystemProperties.DEV_MODE, "true");
+
Server srv = new Server();
ServerConnector connector = new ServerConnector(srv);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index ff9946a..f6f7415 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -23,7 +23,7 @@ package org.apache.ignite.ci.web.model;
public static final String GITHUB_REF = "https://github.com/apache/ignite-teamcity-bot";
/** TC Bot Version. */
- public static final String VERSION = "20181004";
+ public static final String VERSION = "20181006";
/** TC Bot Version. */
public String version = VERSION;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java
index 86adfa3..9498654 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java
@@ -32,7 +32,6 @@ import javax.annotation.Nullable;
import org.apache.ignite.ci.ITcAnalytics;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.ITestFailureOccurrences;
-import org.apache.ignite.ci.analysis.LogCheckResult;
import org.apache.ignite.ci.analysis.MultBuildRunCtx;
import org.apache.ignite.ci.analysis.RunStat;
import org.apache.ignite.ci.analysis.SuiteInBranch;
@@ -45,7 +44,7 @@ import org.apache.ignite.ci.web.model.hist.FailureSummary;
import org.apache.ignite.ci.web.rest.GetBuildLog;
import org.jetbrains.annotations.NotNull;
-import static org.apache.ignite.ci.chain.BuildChainProcessor.normalizeBranch;
+import static org.apache.ignite.ci.tcbot.chain.BuildChainProcessor.normalizeBranch;
import static org.apache.ignite.ci.util.TimeUtil.millisToDurationPrintable;
import static org.apache.ignite.ci.util.UrlUtil.escape;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java
index 2aeafc6..788dd57 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/UpdateInfo.java
@@ -18,6 +18,7 @@
package org.apache.ignite.ci.web.model.current;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
/**
* Created by Дмитрий on 19.02.2018
@@ -55,12 +56,14 @@ import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
/**
* @param teamcity TeamCity to get info about tokens.
+ * @param gitHubConnection
*/
- public void setJavaFlags(IAnalyticsEnabledTeamcity teamcity) {
+ public void setJavaFlags(IAnalyticsEnabledTeamcity teamcity,
+ IGitHubConnection gitHubConnection) {
if (teamcity.isTeamCityTokenAvailable())
javaFlags |= TEAMCITY_FLAG;
- if (teamcity.isGitTokenAvailable())
+ if (gitHubConnection.isGitTokenAvailable())
javaFlags |= GITHUB_FLAG;
if (teamcity.isJiraTokenAvailable())
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
index 920e548..78811ae 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
@@ -29,7 +29,7 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import com.google.inject.Injector;
-import org.apache.ignite.ci.chain.BuildChainProcessor;
+import org.apache.ignite.ci.tcbot.chain.BuildChainProcessor;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.FullChainRunCtx;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/Metrics.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/Metrics.java
index 97fad42..1afb02a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/Metrics.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/Metrics.java
@@ -33,7 +33,7 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.chain.BuildChainProcessor;
+import org.apache.ignite.ci.tcbot.chain.BuildChainProcessor;
import org.apache.ignite.ci.HelperConfig;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.FullChainRunCtx;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
index 83e7911..63539fb 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
@@ -17,7 +17,7 @@
package org.apache.ignite.ci.web.rest;
-import com.google.common.base.Strings;
+import com.google.inject.Injector;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -34,23 +34,24 @@ import javax.ws.rs.core.MediaType;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.conf.ServerIntegrationLinks;
-import org.apache.ignite.ci.github.PullRequest;
-import org.apache.ignite.ci.observer.BuildObserver;
-import org.apache.ignite.ci.tcmodel.result.Build;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
import org.apache.ignite.ci.web.CtxListener;
import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException;
import org.apache.ignite.ci.web.model.SimpleResult;
-import org.apache.ignite.internal.util.typedef.F;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@Path("build")
@Produces(MediaType.APPLICATION_JSON)
public class TriggerBuild {
+ /** Servlet Context. */
@Context
- private ServletContext context;
+ private ServletContext ctx;
+ /** Current Request. */
@Context
private HttpServletRequest req;
@@ -64,24 +65,20 @@ public class TriggerBuild {
@Nullable @QueryParam("observe") Boolean observe,
@Nullable @QueryParam("ticketId") String ticketId
) {
- String jiraRes = "";
+
final ICredentialsProv prov = ICredentialsProv.get(req);
if (!prov.hasAccess(srvId))
throw ServiceUnauthorizedException.noCreds(srvId);
- ITcHelper helper = CtxListener.getTcHelper(context);
-
- final ITeamcity teamcity = helper.server(srvId, prov);
-
- Build build = teamcity.triggerBuild(suiteId, branchForTc, false, top != null && top);
-
- if (observe != null && observe)
- jiraRes = observeJira(srvId, branchForTc, ticketId, teamcity, build, prov);
+ String jiraRes = CtxListener.getInjector(ctx)
+ .getInstance(TcBotTriggerAndSignOffService.class)
+ .triggerBuildAndObserve(srvId, branchForTc, suiteId, top, observe, ticketId, prov);
return new SimpleResult("Tests started." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : ""));
}
+
@GET
@Path("commentJira")
public SimpleResult commentJira(
@@ -90,126 +87,14 @@ public class TriggerBuild {
@Nullable @QueryParam("suiteId") String suiteId,
@Nullable @QueryParam("ticketId") String ticketId
) {
- try {
- return commentJiraEx(srvId, branchForTc, suiteId, ticketId);
- } catch (Exception e) {
- e.printStackTrace();
-
- //todo better exception handling at jersey level
-
- throw e;
- }
- }
-
- @NotNull
- public SimpleResult commentJiraEx(
- @QueryParam("serverId") @Nullable String srvId,
- @QueryParam("branchName") @Nullable String branchForTc,
- @QueryParam("suiteId") @Nullable String suiteId,
- @QueryParam("ticketId") @Nullable String ticketId
- ) {
final ICredentialsProv prov = ICredentialsProv.get(req);
if (!prov.hasAccess(srvId))
throw ServiceUnauthorizedException.noCreds(srvId);
- ITcHelper helper = CtxListener.getTcHelper(context);
- String jiraRes = "";
-
- final ITeamcity teamcity = helper.server(srvId, prov);
-
- if (Strings.isNullOrEmpty(ticketId)) {
- try {
- PullRequest pr = teamcity.getPullRequest(branchForTc);
-
- ticketId = getTicketId(pr);
-
- if (ticketId.isEmpty()) {
- jiraRes = "JIRA ticket can't be commented - " +
- "PR title \"" + pr.getTitle() + "\" should starts with \"IGNITE-XXXX\"." +
- " Please, rename PR according to the" +
- " <a href='https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" +
- "#HowtoContribute-1.CreateGitHubpull-request'>contributing guide</a>" +
- " or enter ticket id in the form.";
- }
- }
- catch (RuntimeException e) {
- jiraRes = "Exception happened when server tried to get ticket ID from Pull Request - " + e.getMessage();
- }
- }
-
- if (!Strings.isNullOrEmpty(ticketId)) {
- jiraRes = helper.notifyJira(srvId, prov, suiteId, branchForTc, "ignite-" + ticketId);
-
- return new SimpleResult(jiraRes);
- }
- else
- return new SimpleResult("JIRA wasn't commented." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : ""));
- }
-
- /**
- * @param srvId Server id.
- * @param branchForTc Branch for TeamCity.
- * @param ticketId JIRA ticket number.
- * @param teamcity TeamCity.
- * @param build Build.
- * @param prov Credentials.
- * @return Message with result.
- */
- private String observeJira(
- String srvId,
- String branchForTc,
- @Nullable String ticketId,
- ITeamcity teamcity,
- Build build,
- ICredentialsProv prov
- ) {
- if (F.isEmpty(ticketId)) {
- try {
- PullRequest pr = teamcity.getPullRequest(branchForTc);
-
- ticketId = getTicketId(pr);
-
- if (ticketId.isEmpty()) {
- return "JIRA ticket will not be notified after the tests are completed - " +
- "PR title \"" + pr.getTitle() + "\" should starts with \"IGNITE-XXXX\"." +
- " Please, rename PR according to the" +
- " <a href='https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" +
- "#HowtoContribute-1.CreateGitHubpull-request'>contributing guide</a>.";
- }
- }
- catch (Exception e) {
- return "JIRA ticket will not be notified after the tests are completed - " +
- "exception happened when server tried to get ticket ID from Pull Request [errMsg=" +
- e.getMessage() + ']';
- }
- }
-
- BuildObserver observer = CtxListener.getInjector(context).getInstance(BuildObserver.class);
-
- observer.observe(build, srvId, prov, "ignite-" + ticketId);
-
- return "JIRA ticket IGNITE-" + ticketId + " will be notified after the tests are completed.";
- }
-
- /**
- * @param pr Pull Request.
- * @return JIRA ticket number.
- */
- @NotNull private String getTicketId(PullRequest pr) {
- String ticketId = "";
-
- if (pr.getTitle().startsWith("IGNITE-")) {
- int beginIdx = 7;
- int endIdx = 7;
-
- while (endIdx < pr.getTitle().length() && Character.isDigit(pr.getTitle().charAt(endIdx)))
- endIdx++;
-
- ticketId = pr.getTitle().substring(beginIdx, endIdx);
- }
-
- return ticketId;
+ return CtxListener.getInjector(ctx)
+ .getInstance(TcBotTriggerAndSignOffService.class)
+ .commentJiraEx(srvId, branchForTc, suiteId, ticketId, prov);
}
@GET
@@ -229,7 +114,7 @@ public class TriggerBuild {
if (strings.isEmpty())
return new SimpleResult("Error: nothing to run");
- final ITeamcity helper = CtxListener.getTcHelper(context).server(serverId, prov);
+ final ITeamcity helper = CtxListener.getTcHelper(ctx).server(serverId, prov);
boolean queueToTop = top != null && top;
@@ -253,9 +138,15 @@ public class TriggerBuild {
if (!prov.hasAccess(srvId))
return null;
- ITeamcity teamcity = CtxListener.server(srvId, context, req);
+ Injector injector = CtxListener.getInjector(ctx);
+
+ ITcHelper tcHelper = injector.getInstance(ITcHelper.class);
+ final ICredentialsProv creds = ICredentialsProv.get(req);
+ ITeamcity teamcity = tcHelper.server(srvId, creds);
+
+ IGitHubConnection gh = injector.getInstance(IGitHubConnectionProvider.class).server(srvId);
- return new ServerIntegrationLinks(srvId, teamcity.getGitApiUrl(), teamcity.getGitApiUrl());
+ return new ServerIntegrationLinks(srvId, gh.gitApiUrl(), teamcity.getJiraApiUrl());
}).filter(Objects::nonNull).collect(Collectors.toSet());
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java
index e80a73f..15692c8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java
@@ -18,7 +18,7 @@
package org.apache.ignite.ci.web.rest.build;
import com.google.inject.Injector;
-import org.apache.ignite.ci.chain.BuildChainProcessor;
+import org.apache.ignite.ci.tcbot.chain.BuildChainProcessor;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.ITeamcity;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java
index 482af1d..20958fa 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java
@@ -18,6 +18,8 @@ package org.apache.ignite.ci.web.rest.exception;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
+import javax.ws.rs.core.Response;
+import org.apache.ignite.ci.tcbot.TcBotSystemProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,10 +32,12 @@ public class ExeptionsTraceLogger implements ExceptionMapper<Throwable> {
private static final Logger logger = LoggerFactory.getLogger(ExeptionsTraceLogger.class);
/** {@inheritDoc} */
- @Override public javax.ws.rs.core.Response toResponse(Throwable t) {
+ @Override public Response toResponse(Throwable t) {
logger.error("Error during processing request (Internal Server Error [500]). Caused by: ", t);
- return javax.ws.rs.core.Response.serverError()
- .entity(t.getMessage())
- .build();
+
+ if (Boolean.valueOf(System.getProperty(TcBotSystemProperties.DEV_MODE)))
+ t.printStackTrace();
+
+ return Response.serverError().entity(t.getMessage()).build();
}
}
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/Login.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/Login.java
index 5d8b561..7b29353 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/Login.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/Login.java
@@ -22,7 +22,7 @@ import com.google.inject.Injector;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.tcmodel.user.User;
-import org.apache.ignite.ci.teamcity.ITcLogin;
+import org.apache.ignite.ci.teamcity.pure.ITcLogin;
import org.apache.ignite.ci.user.TcHelperUser;
import org.apache.ignite.ci.user.UserAndSessionsStorage;
import org.apache.ignite.ci.util.Base64Util;
@@ -47,6 +47,7 @@ public class Login {
public static final int SESS_ID_LEN = 8;
public static final int SALT_LEN = 16;
+ /** Context. */
@Context
private ServletContext ctx;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
index aad7ffd..43feeae 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
@@ -36,7 +36,7 @@ import com.google.inject.Injector;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.issue.IssueDetector;
import org.apache.ignite.ci.tcmodel.user.User;
-import org.apache.ignite.ci.teamcity.ITcLogin;
+import org.apache.ignite.ci.teamcity.pure.ITcLogin;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.user.TcHelperUser;
import org.apache.ignite.ci.user.UserAndSessionsStorage;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java
index 18750de..bb66618 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java
@@ -22,9 +22,7 @@ import org.apache.ignite.cache.CacheMetrics;
import org.apache.ignite.cache.affinity.Affinity;
import org.apache.ignite.ci.di.AutoProfilingInterceptor;
import org.apache.ignite.ci.di.MonitoredTaskInterceptor;
-import org.apache.ignite.ci.teamcity.ITeamcityHttpConnection;
-import org.apache.ignite.ci.teamcity.TeamcityRecorder;
-import org.apache.ignite.ci.teamcity.TeamcityRecordingConnection;
+import org.apache.ignite.ci.teamcity.pure.TeamcityRecorder;
import org.apache.ignite.ci.web.CtxListener;
import javax.annotation.security.PermitAll;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java
index e113b6a..ca93dc5 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java
@@ -21,8 +21,9 @@ import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import com.google.inject.Injector;
-import org.apache.ignite.ci.*;
-import org.apache.ignite.ci.chain.PrChainsProcessor;
+import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
+import org.apache.ignite.ci.github.pure.IGitHubConnection;
+import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
import org.apache.ignite.ci.github.PullRequest;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.web.BackgroundUpdater;
@@ -132,12 +133,14 @@ public class GetPrTestFailures {
if (!branchForTc.startsWith("pull/"))
return "Given branch is not a pull request. Notify works only for pull requests.";
- IAnalyticsEnabledTeamcity teamcity = CtxListener.server(srvId, ctx, req);
+ final Injector injector = CtxListener.getInjector(ctx);
+ final ICredentialsProv creds = ICredentialsProv.get(req);
+ final IGitHubConnection srv = injector.getInstance(IGitHubConnectionProvider.class).server(srvId);
PullRequest pr;
try {
- pr = teamcity.getPullRequest(branchForTc);
+ pr = srv.getPullRequest(branchForTc);
}
catch (RuntimeException e) {
return "Exception happened - " + e.getMessage();
@@ -145,7 +148,7 @@ public class GetPrTestFailures {
String statusesUrl = pr.getStatusesUrl();
- teamcity.notifyGit(statusesUrl, msg);
+ srv.notifyGit(statusesUrl, msg);
return "Git was notified.";
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
index e68c992..582b9e3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/tracked/GetTrackedBranchTestResults.java
@@ -17,7 +17,7 @@
package org.apache.ignite.ci.web.rest.tracked;
-import org.apache.ignite.ci.chain.TrackedBranchChainsProcessor;
+import org.apache.ignite.ci.tcbot.chain.TrackedBranchChainsProcessor;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.web.BackgroundUpdater;
import org.apache.ignite.ci.web.CtxListener;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
new file mode 100644
index 0000000..9b9da8c
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.web.rest.visa;
+
+import java.util.List;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.ci.tcbot.visa.ContributionToCheck;
+import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
+import org.apache.ignite.ci.web.CtxListener;
+import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException;
+import org.jetbrains.annotations.Nullable;
+
+@Path("visa")
+@Produces(MediaType.APPLICATION_JSON)
+public class TcBotVisaService {
+ /** Servlet Context. */
+ @Context
+ private ServletContext ctx;
+
+ /** Current Request. */
+ @Context
+ private HttpServletRequest req;
+
+ @GET
+ @Path("contributions")
+ public List<ContributionToCheck> contributions(
+ @Nullable @QueryParam("serverId") String srvId
+ ) {
+
+ final ICredentialsProv prov = ICredentialsProv.get(req);
+
+ if (!prov.hasAccess(srvId))
+ throw ServiceUnauthorizedException.noCreds(srvId);
+
+ TcBotTriggerAndSignOffService instance = CtxListener.getInjector(ctx)
+ .getInstance(TcBotTriggerAndSignOffService.class);
+
+ return instance.getContributionsToCheck(srvId);
+ }
+}
diff --git a/ignite-tc-helper-web/src/main/webapp/css/style-1.5.css b/ignite-tc-helper-web/src/main/webapp/css/style-1.5.css
index 77c8508..d670800 100644
--- a/ignite-tc-helper-web/src/main/webapp/css/style-1.5.css
+++ b/ignite-tc-helper-web/src/main/webapp/css/style-1.5.css
@@ -127,6 +127,12 @@ form, .formgroup {
box-shadow: 3px 2px 6px -2px rgba(0,0,0,0.64);
}
+.idxpgbutton {
+ width: 100px;
+ min-height: 100px;
+ height: 100px;
+}
+
html {
min-height: 100%;
//background: radial-gradient(ellipse at center, #FFFFFF 0%, #f2fff0 100%);
diff --git a/ignite-tc-helper-web/src/main/webapp/guard.html b/ignite-tc-helper-web/src/main/webapp/guard.html
new file mode 100644
index 0000000..cf9b78e
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/webapp/guard.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>Ignite Teamcity Helper - Tracked Branches status</title>
+ <link rel="icon" href="img/leaf-icon-png-7066.png">
+
+ <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
+
+ <link rel="stylesheet" href="css/style-1.5.css">
+
+ <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
+ <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
+
+ <script src="js/common-1.6.js"></script>
+ <script>
+$(document).ready(function() {
+ $.getScript("js/common-1.6.js", function(data, textStatus, jqxhr){ });
+
+ $( document ).tooltip();
+ loadData();
+});
+
+function loadData() {
+ $("#loadStatus").html("<img src='https://www.wallies.com/filebin/images/loading_apple.gif' width=20px height=20px> Please wait");
+
+ $.ajax({
+ url: "rest/branches/version",
+ success: showVersionInfo,
+ error: showErrInLoadStatus
+ });
+
+ $.ajax({
+ url: "rest/branches/getIds",
+ success: function(result) {
+ $("#loadStatus").html("");
+ showTrackedBranchesLinks(result);
+ },
+ error: showErrInLoadStatus
+ });
+
+
+}
+
+function showTrackedBranchesLinks(result) {
+ var res = "";
+ for (var i = 0; i < result.length; i++) {
+ var id = result[i];
+ // res += "<div class='formgroup'>";
+ res += id + ":";
+ res += "<a href='current.html?branch=" + id + "'><button>Latest (" + id + ")</button></a>";
+ res += " <a href='current.html?branch=" + id + "&checkAllLogs=true' title='With logs processing'><button>Latest (" + id + " + logs)</button></a>";
+ res += " <a href='all.html?branch=" + id + "'><button title='Failures from last 10 runs merged'>History (" + id + ")</button></a>";
+ // res += "</div>";
+ res += "<br>";
+ }
+
+ res += "</table>";
+
+
+ $("#branchesStatus").html(res);
+}
+
+</script>
+</head>
+<body>
+<div class="formgroup">
+ Monitoring. Current Failed Tests: <br>
+ <div id="branchesStatus"></div>
+</div>
+<br>
+
+<div id="loadStatus"></div>
+<div id="version"></div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/webapp/index.html b/ignite-tc-helper-web/src/main/webapp/index.html
index 3e2cfff..3e4909b 100644
--- a/ignite-tc-helper-web/src/main/webapp/index.html
+++ b/ignite-tc-helper-web/src/main/webapp/index.html
@@ -17,137 +17,40 @@ $(document).ready(function() {
$( document ).tooltip();
loadData();
- //todo fix setInterval(loadData, 90000);
});
function loadData() {
$("#loadStatus").html("<img src='https://www.wallies.com/filebin/images/loading_apple.gif' width=20px height=20px> Please wait");
+ $("#version").html(" " + "<a href=\"monitoring.html\">TC Bot Moniroting Page</a> <br>");
$.ajax({
url: "rest/branches/version",
success: showVersionInfo,
error: showErrInLoadStatus
});
- $.ajax({
- url: "rest/branches/getIds",
- success: function(result) {
- $("#loadStatus").html("");
- showCurrentBranchesData(result);
- },
- error: showErrInLoadStatus
- });
-
- $.ajax({
- url: "rest/branches/suites",
- success: function(result) {
- $("#loadStatus").html("");
- showFormAndSuitesForPrCheck(result);
- tryToFillAutocompleteLists();
- },
- error: showErrInLoadStatus
- });
$.ajax({
url: "rest/branches/getServerIds",
success: function(result) {
$("#loadStatus").html("");
- setupAutocompleteList(result);
- showBuildsOnServers(result);
},
error: showErrInLoadStatus
});
}
-function showCurrentBranchesData(result) {
- var res = "";
- for (var i = 0; i < result.length; i++) {
- var id = result[i];
- // res += "<div class='formgroup'>";
- res += id + ":";
- res += "<a href='current.html?branch=" + id + "'><button>Latest (" + id + ")</button></a>";
- res += " <a href='current.html?branch=" + id + "&checkAllLogs=true' title='With logs processing'><button>Latest (" + id + " + logs)</button></a>";
- res += " <a href='all.html?branch=" + id + "'><button title='Failures from last 10 runs merged'>History (" + id + ")</button></a>";
- // res += "</div>";
- res += "<br>";
- }
-
- res += "</table>";
-
- $("#branchesStatus").html(res);
-}
-
-function showFormAndSuitesForPrCheck(result) {
- var res = "";
-
- for (var i = 0; i < result.length; i++) {
- var chainAtServer = result[i];
-
- res += "<form action='pr.html'>";
- res += "Server: <input type='text' name='serverId' value=" + chainAtServer.serverId + " readonly>";
- res += "Chain: <input type='text' name='suiteId' value=" + chainAtServer.suiteId + ">";
- res += "Base branch: <input class='branchForTc" + chainAtServer.serverId +
- "' type='text' name='baseBranchForTc' title='Etalon branch, e.g refs/heads/master'> ";
- res += "<b>Branch:</b> <input class='branchForTc" + chainAtServer.serverId +
- "' type='text' name='branchForTc' title='Tested branch, e.g. pull/4790/head or ignite-9349' required> ";
- res += "<input type='submit' name='action' value='Latest' title='Show latest runs'>";
- // res+="<input type='submit' name='action' value='Chain'>";
- res += "<input type='submit' name='action' value='History' title='Show last 10 runs merged'>";
- res += "</form>";
- }
-
- $("#suitesForPrCheck").html(res);
-}
-
-function showBuildsOnServers(result) {
- var res = "";
- for (var i = 0; i < result.length; i++) {
- var serverId = result[i];
- //res+="<a href='pr.html?serverId=private&branchForTc=ignite-gg-12790-1&suiteId=id8xIgniteGridGainTests_RunAll="+id+"'>Check PR</a><br>";
-
- res+="<form action='build.html'>";
- res+="Server: <input type='text' name='serverId' value=" + serverId +" readonly>" ;
- res+="Check Logs: <input type='text' name='checkAllLogs' style='width: 20%;' value='true' readonly>" ;
- res+="Build Id: <input type='text' name='buildId' required> ";
- res+="<input type='submit' name='action' value='Check'>";
- res+="</form>";
- }
- $("#buildsCheck").html(res);
-}
</script>
</head>
<body>
-<div class="formgroup">
- Monitoring. Current Failed Tests: <br>
- <div id="branchesStatus"></div>
-</div>
-<br>
-
-<div class="formgroup">
- Contribution. Check branch/PR:
- <div id="suitesForPrCheck"></div>
+<div class="formgroup" style="text-align: center">
+ <div style="text-align: center">I need to:</div>
+ <a href="prs.html"><button class="idxpgbutton"><font size="30px">🔍</font><br>Inspect Contribution</button></a>
+ <a href="guard.html"><button class="idxpgbutton"><font size="30px">🛡️</font><br>Monitor TC state</button></a>
+ <a href="comparison.html"><button class="idxpgbutton"><font size="30px">📉</font><br>See test progres</button></a>
+ <a href="index0.html"><button class="idxpgbutton"><font size="30px">λ</font><br>I like old home page</button></a>
</div>
-<br>
-
-<div class="formgroup">
- Check build: <br>
- <div id="buildsCheck"></div>
-</div>
-<br>
-
-Statistics: <br>
-<!--<a href="chart.html">Build metrics daily history</a><br>
-<a href="restpretty.html?url=top/failing">Top failing tests</a> (JSON) <br>
-<a href="restpretty.html?url=top/longRunning">Top long running tests</a> (JSON) <br>
-<a href="restpretty.html?url=top/failingSuite">Top failing suites</a> (JSON) <br>
-<a href="./status">Current Build Status (obsolete)</a><br>
-<br>-->
-<a href="comparison.html">Comparison master's branch in the date interval</a><br>
-Other: <br>
-<a href="ignval.html">Ignite Log Values pretty-print</a>
-<a href="monitoring.html">Bot moniroting page</a> <br>
<div id="loadStatus"></div>
<div id="version"></div>
diff --git a/ignite-tc-helper-web/src/main/webapp/index.html b/ignite-tc-helper-web/src/main/webapp/index0.html
similarity index 100%
copy from ignite-tc-helper-web/src/main/webapp/index.html
copy to ignite-tc-helper-web/src/main/webapp/index0.html
diff --git a/ignite-tc-helper-web/src/main/webapp/js/common-1.6.js b/ignite-tc-helper-web/src/main/webapp/js/common-1.6.js
index 3a4688d..b1a925c 100644
--- a/ignite-tc-helper-web/src/main/webapp/js/common-1.6.js
+++ b/ignite-tc-helper-web/src/main/webapp/js/common-1.6.js
@@ -128,7 +128,7 @@ function showMenu(menuData) {
res += "<div class=\"navbar\">";
res += "<a href=\"/\">Home</a>";
res += "<a href=\"/compare.html\">Compare builds</a>";
- res += "<a href=\"/services.html\">PR/Branch check</a>";
+ res += "<a href=\"/prs.html\">PR/Branch check</a>";
res += "<a href=\"/comparison.html\">Master Trends</a>";
diff --git a/ignite-tc-helper-web/src/main/webapp/pr.html b/ignite-tc-helper-web/src/main/webapp/pr.html
index 70d71ce..3988da3 100644
--- a/ignite-tc-helper-web/src/main/webapp/pr.html
+++ b/ignite-tc-helper-web/src/main/webapp/pr.html
@@ -63,12 +63,12 @@ function checkForUpdate() {
$.ajax({
url: curFailuresUrl,
- success: function(result) {
- if (g_shownDataHashCodeHex!="" && isDefinedAndFilled(result.hashCodeHex)) {
- if(g_shownDataHashCodeHex==result.hashCodeHex) {
- var updRunning = isDefinedAndFilled(result.runningUpdates) && result.runningUpdates>0
+ success: function (result) {
+ if (g_shownDataHashCodeHex !== "" && isDefinedAndFilled(result.hashCodeHex)) {
+ if (g_shownDataHashCodeHex === result.hashCodeHex) {
+ var updRunning = isDefinedAndFilled(result.runningUpdates) && result.runningUpdates > 0;
var fastCheckNeeded = result.updateRequired || updRunning;
- var ms = fastCheckNeeded ? 3000 : 30000 ;
+ var ms = fastCheckNeeded ? 3000 : 30000;
setTimeout(checkForUpdate, ms);
@@ -93,7 +93,7 @@ function loadData() {
url: curFailuresUrl,
success: function(result) {
if(result.updateRequired || (isDefinedAndFilled(result.runningUpdates) && result.runningUpdates>0)) {
- setTimeout(checkForUpdate, 3000)
+ setTimeout(checkForUpdate, 3000);
$("#loadStatus").html("<img src='https://www.wallies.com/filebin/images/loading_apple.gif' width=20px height=20px> Updating");
} else {
$("#loadStatus").html("");
diff --git a/ignite-tc-helper-web/src/main/webapp/prs.html b/ignite-tc-helper-web/src/main/webapp/prs.html
new file mode 100644
index 0000000..0bf9b07
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/webapp/prs.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Services</title>
+ <link rel="icon" href="img/leaf-icon-png-7066.png">
+
+ <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
+ <link rel="stylesheet" href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
+
+ <link rel="stylesheet" href="css/style-1.5.css">
+
+ <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
+ <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
+ <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.js"></script>
+ <script src="https://cdn.datatables.net/1.10.16/js/dataTables.jqueryui.js"></script>
+
+ <script src="js/common-1.6.js"></script>
+ <script src="js/testfails-2.1.js"></script>
+
+ <style>
+
+ </style>
+ <script>
+ function updateAccordionSize() {
+ let height = $(window).height();
+ let number = (height - 120);
+ if (number > 100)
+ $("#mainaccordion").css('height', number + 'px');
+ // update accordion height
+ //$("#mainaccordion").accordion("resize");
+ }
+
+ $(document).ready(function() {
+ $.getScript("js/common-1.6.js", function(data, textStatus, jqxhr){ });
+
+ $( document ).tooltip();
+ updateAccordionSize();
+ $( "#mainaccordion" ).accordion({
+ heightStyle: "fill",
+ //heightStyle: "content"
+ });
+ $(window).resize(function () {
+ updateAccordionSize();
+ });
+
+ loadData();
+ });
+
+ function loadData() {
+ $("#loadStatus").html("<img src='https://www.wallies.com/filebin/images/loading_apple.gif' width=20px height=20px> Please wait");
+
+ $.ajax({
+ url: "rest/branches/version",
+ success: showVersionInfo,
+ error: showErrInLoadStatus
+ });
+
+ $.ajax({
+ url: "rest/branches/suites",
+ success: function(result) {
+ $("#loadStatus").html("");
+ showSuitesForTeamCityRunData(result);
+ showFormAndSuitesForPrCheck(result);
+ tryToFillAutocompleteLists();
+ showCommentJiraForm(result);
+ },
+ error: showErrInLoadStatus
+ });
+
+ $.ajax({
+ url: "rest/branches/getServerIds",
+ success:
+ function (result) {
+ setupAutocompleteList(result);
+ for (let srvId of result)
+ requestTableForServer(srvId, "");
+ }
+ });
+ }
+
+ function requestTableForServer(srvId) {
+ // TODO multiple servers
+ if (srvId != "apache")
+ return;
+
+
+ $.ajax({
+ url: "rest/visa/contributions?serverId="+srvId,
+ success:
+ function (result) {
+ showTable(result, srvId)
+ }
+ });
+ }
+
+ function showTable( result, srvId) {
+
+ let tableForSrv = $('#serverContributions-' + srvId);
+
+ tableForSrv.dataTable().fnDestroy();
+
+ tableForSrv.DataTable({
+ data: result,
+ "iDisplayLength": 100, //rows to be shown by default
+ //"dom": '<lf<t>ip>',
+ //"dom": '<"wrapper"flipt>',
+ columns: [
+ {
+ "data": "prHtmlUrl",
+ title: "PR Number",
+ "render": function(data, type, row, meta){
+ if(type === 'display'){
+ data = "<a href='"+data+"'>#"+row.prNumber+"</a>";
+ }
+
+ return data;
+ }
+ }
+ , {
+ "data": "prTitle",
+ title: "Title"
+ },
+ {
+ "data": "prAuthor",
+ title: "Author",
+ "render": function(data, type, row, meta){
+ if(type === 'display'){
+ data = "<img src='"+row.prAuthorAvatarUrl+"' width='20px' height='20px'> "+data+"";
+ }
+
+ return data;
+ }
+
+ },
+ {
+ "data": "prNumber",
+ title: "Existing RunAll",
+ "render": function(data, type, row, meta){
+ if(type === 'display'){
+ data = '<a href="/pr.html?serverId='+srvId+'&' +
+ //todo customizable suite
+ 'suiteId=IgniteTests24Java8_RunAll' +
+ //'&baseBranchForTc=' +
+ '&branchForTc=pull%2F' +data+ '%2Fhead&action=Latest"><button>Open /' + data + '/head</button></a>';
+ }
+
+ return data;
+ }
+ }
+ ]
+ });
+ }
+
+ function showSuitesForTeamCityRunData(result) {
+ var res = "";
+
+ for (var i = 0; i < result.length; i++) {
+ var chainAtServer = result[i];
+
+ // TODO multiple servers
+ if (chainAtServer.serverId != "apache")
+ continue;
+
+ res += "Server: <input type='text' name='serverId' value='" + chainAtServer.serverId + "' readonly>";
+ res += "Chain: <input type='text' name='suiteId' value='" + chainAtServer.suiteId + "' readonly>";
+ res += "Branch: <input type='text' name='branchForTc' class='branchForTc" + chainAtServer.serverId +
+ "' required> ";
+ res += "Ticket: <input type='text' name='ticketId'>";
+ res += "<button name='jira' type='button' onclick='trigBuild(\"tests\")'>Start tests</button>";
+ res += "<button name='jira' onclick='trigBuild(\"tests+jira\")'>Start tests and comment JIRA ticket on ready</button>";
+ //res += "<button name='git' onclick='trigBuild(\"tests+jira\")'>Start tests and comment GitHub PR on ready</button>";
+ /*
+ res+="Server: <input type='text' name='serverId' value=" + serverId +" readonly>" ;
+ res+="Pull Request #<input type='text' name='prId' onkeypress='return trigBuild(event)'> ";
+ res+="<button onclick='trigBuild()'>Run All</button><br>";
+ */
+ }
+
+ $("#suitesForRunAll").html(res);
+ }
+
+ /**
+ * This form allows user to startIgnite TeamCity Run All build.
+ */
+ function showCommentJiraForm(result) {
+ var res = "";
+
+ for (var i = 0; i < result.length; i++) {
+ var chainAtServer = result[i];
+
+ // TODO multiple servers
+ if (chainAtServer.serverId != "apache")
+ continue;
+
+ res += "Server: <input type='text' name='serverId' value=" + chainAtServer.serverId +" readonly>" ;
+ res += "Chain: <input type='text' name='suiteId' value='" + chainAtServer.suiteId + "' readonly>";
+ res += "Branch: <input type='text' name='branchForTc' class='branchForTc" + chainAtServer.serverId +
+ "' required> ";
+ res += "Ticket: <input type='text' name='ticketId'> ";
+ res += "<button name='action' onclick='notifyJira()'>Notify</button>";
+ }
+
+ $("#notifyJira").html(res);
+ }
+
+ /**
+ * Start Run All build on TeamCity and comment in JIRA ticket when build will be finished.
+ */
+ function trigBuild(trigCase) {
+ var fields = document.getElementById("suitesForRunAll").children;
+
+ var srvId = fields.namedItem("serverId").value;
+ var suiteId = fields.namedItem("suiteId").value;
+ var branchName = branchForTc(fields.namedItem("branchForTc").value);
+ var ticketId = jiraTicketNumber(fields.namedItem("ticketId").value);
+
+ triggerBuild(srvId, suiteId, branchName, false, trigCase !== "tests", ticketId)
+ }
+
+ /**
+ * Comment in JIRA ticket with results for the given PR.
+ */
+ function notifyJira() {
+ var fields = document.getElementById("notifyJira").children;
+
+ var srvId = fields.namedItem("serverId").value;
+ var suiteId = fields.namedItem("suiteId").value;
+ var branchName = branchForTc(fields.namedItem("branchForTc").value);
+ var ticketId = jiraTicketNumber(fields.namedItem("ticketId").value);
+
+ commentJira(srvId, suiteId, branchName, ticketId)
+ }
+
+ /**
+ * Converts PR number to branch for TeamCity.
+ *
+ * @param pr - Pull Request number.
+ * @returns {String} Branch for TeamCity.
+ */
+ function branchForTc(pr) {
+ var regExpr = /(\d*)/i;
+
+ if (regExpr.exec(pr)[0] === pr)
+ return "pull/" + regExpr.exec(pr)[0] + "/head";
+
+ return pr;
+ }
+
+ /**
+ * Converts JIRA ticket full name to the tickets number.
+ *
+ * @param ticket - JIRA ticket.
+ * @returns {string} JIRA ticket number.
+ */
+ function jiraTicketNumber(ticket) {
+ var regExpr = /(ignite-)?(\d*)/i;
+
+ return regExpr.exec(ticket)[2];
+ }
+
+ function showFormAndSuitesForPrCheck(result) {
+ var res = "";
+
+ for (var i = 0; i < result.length; i++) {
+ var chainAtServer = result[i];
+
+ res += "<form action='pr.html'>";
+ res += "Server: <input type='text' name='serverId' value=" + chainAtServer.serverId + " readonly>";
+ res += "Chain: <input type='text' name='suiteId' value=" + chainAtServer.suiteId + ">";
+ res += "Base branch: <input class='branchForTc" + chainAtServer.serverId +
+ "' type='text' name='baseBranchForTc' title='Etalon branch to take base data from, e.g refs/heads/master'> ";
+ res += "<b>Branch:</b> <input class='branchForTc" + chainAtServer.serverId +
+ "' type='text' name='branchForTc' title='Tested branch, e.g. pull/4790/head or ignite-9349' required> ";
+ res += "<input type='submit' name='action' value='Latest' title='Show latest runs'>";
+ // res+="<input type='submit' name='action' value='Chain'>";
+ res += "<input type='submit' name='action' value='History' title='Show last 10 runs merged'>";
+ res += "</form>";
+ }
+
+ $("#suitesForPrCheck").html(res);
+ }
+ </script>
+</head>
+<body>
+<div id="loadStatus"></div>
+
+
+<div id="mainaccordion" style="height: 500px">
+ <h3>Select PR</h3>
+ <div id="contributionsToCheck">
+ <table id="serverContributions-apache" class="ui-widget ui-widget-content">
+ <thead>
+ <tr class="ui-widget-header ">
+ <th>...</th>
+ <th>Loading</th>
+ <th>...</th>
+ <th>.</th>
+ </tr>
+ </thead>
+ </table>
+
+ </div>
+
+ <h3>I'll enter branch data</h3>
+ <div>
+ <div class="formgroup">
+ Trigger new TeamCity Run All for a PR/Branch: <br>
+ <div id="suitesForRunAll"></div>
+ </div>
+ <br>
+
+ <div class="formgroup">
+ Notify JIRA (save TC Bot visa to a ticket comment): <br>
+ <div id="notifyJira"></div>
+ </div>
+ <br>
+
+ <br>Check results of branch/PR TeamCity Run All:
+ <div id="suitesForPrCheck"></div>
+
+
+ <!--Notify GitHub: <br>
+ <div id="notifyGitHub">
+ <form>
+ Server: <input type='text' name='serverId' value="apache" readonly>
+ Branch: <input type='text' name='branchForTc' required>
+ <input type='submit' name='action' value='Notify'>
+ </form>
+ </div>
+ <br>-->
+ </div>
+</div>
+
+
+<div id="version"></div>
+
+<div style="visibility:hidden"><div id="triggerConfirm" title="Trigger Confirmation"></div><div id="triggerDialog" title="Trigger Result"></div></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/webapp/services.html b/ignite-tc-helper-web/src/main/webapp/services.html
index f913fa4..2493653 100644
--- a/ignite-tc-helper-web/src/main/webapp/services.html
+++ b/ignite-tc-helper-web/src/main/webapp/services.html
@@ -1,219 +1,3 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>Services</title>
- <link rel="icon" href="img/leaf-icon-png-7066.png">
-
- <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
-
- <link rel="stylesheet" href="css/style-1.5.css">
-
- <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
- <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
-
- <script src="js/common-1.6.js"></script>
- <script src="js/testfails-2.1.js"></script>
-
- <style>
-
- </style>
- <script>
-$(document).ready(function() {
- $.getScript("js/common-1.6.js", function(data, textStatus, jqxhr){ });
-
- $( document ).tooltip();
- loadData();
-});
-
-function loadData() {
- $("#loadStatus").html("<img src='https://www.wallies.com/filebin/images/loading_apple.gif' width=20px height=20px> Please wait");
-
- $.ajax({
- url: "rest/branches/version",
- success: showVersionInfo,
- error: showErrInLoadStatus
- });
-
- $.ajax({
- url: "rest/branches/suites",
- success: function(result) {
- $("#loadStatus").html("");
- showSuitesForTeamCityRunData(result);
- showFormAndSuitesForPrCheck(result);
- tryToFillAutocompleteLists();
- showCommentJiraForm(result);
- },
- error: showErrInLoadStatus
- });
-
- $.ajax({
- url: "rest/branches/getServerIds",
- success: setupAutocompleteList
- });
-}
-
-function showSuitesForTeamCityRunData(result) {
- var res = "";
-
- for (var i = 0; i < result.length; i++) {
- var chainAtServer = result[i];
-
- // TODO multiple servers
- if (chainAtServer.serverId != "apache")
- continue;
-
- res += "Server: <input type='text' name='serverId' value='" + chainAtServer.serverId + "' readonly>";
- res += "Chain: <input type='text' name='suiteId' value='" + chainAtServer.suiteId + "' readonly>";
- res += "Branch: <input type='text' name='branchForTc' class='branchForTc" + chainAtServer.serverId +
- "' required> ";
- res += "Ticket: <input type='text' name='ticketId'>";
- res += "<button name='jira' type='button' onclick='trigBuild(\"tests\")'>Start tests</button>";
- res += "<button name='jira' onclick='trigBuild(\"tests+jira\")'>Start tests and comment JIRA ticket on ready</button>";
- //res += "<button name='git' onclick='trigBuild(\"tests+jira\")'>Start tests and comment GitHub PR on ready</button>";
- /*
- res+="Server: <input type='text' name='serverId' value=" + serverId +" readonly>" ;
- res+="Pull Request #<input type='text' name='prId' onkeypress='return trigBuild(event)'> ";
- res+="<button onclick='trigBuild()'>Run All</button><br>";
- */
- }
-
- $("#suitesForRunAll").html(res);
-}
-
-/**
- * This form allows user to startIgnite TeamCity Run All build.
- */
-function showCommentJiraForm(result) {
- var res = "";
-
- for (var i = 0; i < result.length; i++) {
- var chainAtServer = result[i];
-
- // TODO multiple servers
- if (chainAtServer.serverId != "apache")
- continue;
-
- res += "Server: <input type='text' name='serverId' value=" + chainAtServer.serverId +" readonly>" ;
- res += "Chain: <input type='text' name='suiteId' value='" + chainAtServer.suiteId + "' readonly>";
- res += "Branch: <input type='text' name='branchForTc' class='branchForTc" + chainAtServer.serverId +
- "' required> ";
- res += "Ticket: <input type='text' name='ticketId'> ";
- res += "<button name='action' onclick='notifyJira()'>Notify</button>";
- }
-
- $("#notifyJira").html(res);
-}
-
-/**
- * Start Run All build on TeamCity and comment in JIRA ticket when build will be finished.
- */
-function trigBuild(trigCase) {
- var fields = document.getElementById("suitesForRunAll").children;
-
- var srvId = fields.namedItem("serverId").value;
- var suiteId = fields.namedItem("suiteId").value;
- var branchName = branchForTc(fields.namedItem("branchForTc").value);
- var ticketId = jiraTicketNumber(fields.namedItem("ticketId").value);
-
- triggerBuild(srvId, suiteId, branchName, false, trigCase !== "tests", ticketId)
-}
-
-/**
- * Comment in JIRA ticket with results for the given PR.
- */
-function notifyJira() {
- var fields = document.getElementById("notifyJira").children;
-
- var srvId = fields.namedItem("serverId").value;
- var suiteId = fields.namedItem("suiteId").value;
- var branchName = branchForTc(fields.namedItem("branchForTc").value);
- var ticketId = jiraTicketNumber(fields.namedItem("ticketId").value);
-
- commentJira(srvId, suiteId, branchName, ticketId)
-}
-
-/**
- * Converts PR number to branch for TeamCity.
- *
- * @param pr - Pull Request number.
- * @returns {String} Branch for TeamCity.
- */
-function branchForTc(pr) {
- var regExpr = /(\d*)/i;
-
- if (regExpr.exec(pr)[0] === pr)
- return "pull/" + regExpr.exec(pr)[0] + "/head";
-
- return pr;
-}
-
-/**
- * Converts JIRA ticket full name to the tickets number.
- *
- * @param ticket - JIRA ticket.
- * @returns {string} JIRA ticket number.
- */
-function jiraTicketNumber(ticket) {
- var regExpr = /(ignite-)?(\d*)/i;
-
- return regExpr.exec(ticket)[2];
-}
-
-function showFormAndSuitesForPrCheck(result) {
- var res = "";
-
- for (var i = 0; i < result.length; i++) {
- var chainAtServer = result[i];
-
- res += "<form action='pr.html'>";
- res += "Server: <input type='text' name='serverId' value=" + chainAtServer.serverId + " readonly>";
- res += "Chain: <input type='text' name='suiteId' value=" + chainAtServer.suiteId + ">";
- res += "Base branch: <input class='branchForTc" + chainAtServer.serverId +
- "' type='text' name='baseBranchForTc' title='Etalon branch to take base data from, e.g refs/heads/master'> ";
- res += "<b>Branch:</b> <input class='branchForTc" + chainAtServer.serverId +
- "' type='text' name='branchForTc' title='Tested branch, e.g. pull/4790/head or ignite-9349' required> ";
- res += "<input type='submit' name='action' value='Latest' title='Show latest runs'>";
- // res+="<input type='submit' name='action' value='Chain'>";
- res += "<input type='submit' name='action' value='History' title='Show last 10 runs merged'>";
- res += "</form>";
- }
-
- $("#suitesForPrCheck").html(res);
-}
- </script>
-</head>
-<body>
-<div id="loadStatus"></div>
-
-<div class="formgroup">
- Trigger new TeamCity Run All for a PR/Branch: <br>
- <div id="suitesForRunAll"></div>
-</div>
-<br>
-
-<div class="formgroup">
- Notify JIRA (save TC Bot visa to a ticket comment): <br>
- <div id="notifyJira"></div>
-</div>
-<br>
-
-<br>Check results of branch/PR TeamCity Run All:
-<div id="suitesForPrCheck"></div>
-
-
-<!--Notify GitHub: <br>
-<div id="notifyGitHub">
- <form>
- Server: <input type='text' name='serverId' value="apache" readonly>
- Branch: <input type='text' name='branchForTc' required>
- <input type='submit' name='action' value='Notify'>
- </form>
-</div>
-<br>-->
-
-<div id="version"></div>
-
-<div style="visibility:hidden"><div id="triggerConfirm" title="Trigger Confirmation"></div><div id="triggerDialog" title="Trigger Result"></div></div>
-</body>
-</html>
\ No newline at end of file
+<script>
+ window.location='prs.html';
+</script>
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/webapp/user.html b/ignite-tc-helper-web/src/main/webapp/user.html
index 5e8795d..4ce23cd 100644
--- a/ignite-tc-helper-web/src/main/webapp/user.html
+++ b/ignite-tc-helper-web/src/main/webapp/user.html
@@ -103,12 +103,14 @@ function addServiceCreds() {
url: url,
data: $("#addCred").serialize(),
success: function(data) {
+ let addCredsStatus = $("#addCredsStatus");
+
if(isDefinedAndFilled(data.result) && data.result.length>0) {
- $("#addCredsStatus").html('Unable to add credentials [' + data.result + "]");
+ addCredsStatus.html('Unable to add credentials [' + data.result + "]");
return;
}
- $("#addCredsStatus").html("");
+ addCredsStatus.html("");
dialog.dialog("close");
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/github/pure/GitHubPrsParseTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/github/pure/GitHubPrsParseTest.java
new file mode 100644
index 0000000..adb25f7
--- /dev/null
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/github/pure/GitHubPrsParseTest.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.github.pure;
+
+import com.google.common.base.Preconditions;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.github.pure.GitHubConnectionImpl;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class GitHubPrsParseTest {
+
+ @Test
+ public void parse() {
+ InputStream stream = this.getClass().getResourceAsStream("/prsList.json");
+ Preconditions.checkNotNull(stream, "Can't find resource");
+ Type listType = new TypeToken<ArrayList<PullRequest>>() {
+ }.getType();
+ List<PullRequest> list = new Gson().fromJson(new InputStreamReader(stream), listType);
+
+ System.out.println(list.size());
+ System.out.println(list);
+ }
+
+ @Test
+ public void parseLinkRspHeader() {
+ String s = "<https://api.github.com/repositories/31006158/pulls?sort=updated&direction=desc&page=2>; rel=\"next\", <https://api.github.com/repositories/31006158/pulls?sort=updated&direction=desc&page=45>; rel=\"last\"\n";
+ String nextLink = GitHubConnectionImpl.parseNextLinkFromLinkRspHeader(s);
+
+ assertEquals("https://api.github.com/repositories/31006158/pulls?sort=updated&direction=desc&page=2", nextLink);
+ }
+
+}
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/user/LoginAuthTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/user/LoginAuthTest.java
index 47de277..1a21536 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/user/LoginAuthTest.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/user/LoginAuthTest.java
@@ -18,7 +18,7 @@
package org.apache.ignite.ci.user;
import org.apache.ignite.ci.tcmodel.user.User;
-import org.apache.ignite.ci.teamcity.ITcLogin;
+import org.apache.ignite.ci.teamcity.pure.ITcLogin;
import org.apache.ignite.ci.util.Base64Util;
import org.apache.ignite.ci.web.auth.AuthenticationFilter;
import org.apache.ignite.ci.web.rest.login.Login;
diff --git a/ignite-tc-helper-web/src/test/resources/prsList.json b/ignite-tc-helper-web/src/test/resources/prsList.json
new file mode 100644
index 0000000..c663deb
--- /dev/null
+++ b/ignite-tc-helper-web/src/test/resources/prsList.json
@@ -0,0 +1,10008 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+[
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4907",
+ "id": 220076105,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwMDc2MTA1",
+ "html_url": "https://github.com/apache/ignite/pull/4907",
+ "diff_url": "https://github.com/apache/ignite/pull/4907.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4907.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4907",
+ "number": 4907,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-9785 Introduce read-only state in local node context",
+ "user": {
+ "login": "glukos",
+ "id": 2736390,
+ "node_id": "MDQ6VXNlcjI3MzYzOTA=",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/2736390?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/glukos",
+ "html_url": "https://github.com/glukos",
+ "followers_url": "https://api.github.com/users/glukos/followers",
+ "following_url": "https://api.github.com/users/glukos/following{/other_user}",
+ "gists_url": "https://api.github.com/users/glukos/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/glukos/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/glukos/subscriptions",
+ "organizations_url": "https://api.github.com/users/glukos/orgs",
+ "repos_url": "https://api.github.com/users/glukos/repos",
+ "events_url": "https://api.github.com/users/glukos/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/glukos/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-10-03T15:14:51Z",
+ "updated_at": "2018-10-05T15:59:54Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "5175f1f5c8ff5f64dcb7d6fe2a3d776cfac413d4",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4907/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4907/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4907/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/cecdceb7ea5ceae8c3d3146b7ad8b409bb2fb343",
+ "head": {
+ "label": "gridgain:ignite-9785",
+ "ref": "ignite-9785",
+ "sha": "cecdceb7ea5ceae8c3d3146b7ad8b409bb2fb343",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "72b5c05ae94b068cfbefaa47901bce95ad8020d9",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4907"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4907"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4907"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4907/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4907/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4907/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/cecdceb7ea5ceae8c3d3146b7ad8b409bb2fb343"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4551",
+ "id": 208624874,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjA4NjI0ODc0",
+ "html_url": "https://github.com/apache/ignite/pull/4551",
+ "diff_url": "https://github.com/apache/ignite/pull/4551.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4551.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4551",
+ "number": 4551,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-9228 Spark SQL Table Schema Specification",
+ "user": {
+ "login": "stuartmacd",
+ "id": 29892836,
+ "node_id": "MDQ6VXNlcjI5ODkyODM2",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/29892836?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/stuartmacd",
+ "html_url": "https://github.com/stuartmacd",
+ "followers_url": "https://api.github.com/users/stuartmacd/followers",
+ "following_url": "https://api.github.com/users/stuartmacd/following{/other_user}",
+ "gists_url": "https://api.github.com/users/stuartmacd/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/stuartmacd/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/stuartmacd/subscriptions",
+ "organizations_url": "https://api.github.com/users/stuartmacd/orgs",
+ "repos_url": "https://api.github.com/users/stuartmacd/repos",
+ "events_url": "https://api.github.com/users/stuartmacd/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/stuartmacd/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-08-15T17:17:20Z",
+ "updated_at": "2018-10-05T15:52:29Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "a37f9af12556e6cd684ac8adc87015ac74779739",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4551/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4551/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4551/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/5797db46dc2bbc45eebafcd3850df36c40331367",
+ "head": {
+ "label": "stuartmacd:ignite-9228",
+ "ref": "ignite-9228",
+ "sha": "5797db46dc2bbc45eebafcd3850df36c40331367",
+ "user": {
+ "login": "stuartmacd",
+ "id": 29892836,
+ "node_id": "MDQ6VXNlcjI5ODkyODM2",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/29892836?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/stuartmacd",
+ "html_url": "https://github.com/stuartmacd",
+ "followers_url": "https://api.github.com/users/stuartmacd/followers",
+ "following_url": "https://api.github.com/users/stuartmacd/following{/other_user}",
+ "gists_url": "https://api.github.com/users/stuartmacd/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/stuartmacd/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/stuartmacd/subscriptions",
+ "organizations_url": "https://api.github.com/users/stuartmacd/orgs",
+ "repos_url": "https://api.github.com/users/stuartmacd/repos",
+ "events_url": "https://api.github.com/users/stuartmacd/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/stuartmacd/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 141716475,
+ "node_id": "MDEwOlJlcG9zaXRvcnkxNDE3MTY0NzU=",
+ "name": "ignite",
+ "full_name": "stuartmacd/ignite",
+ "private": false,
+ "owner": {
+ "login": "stuartmacd",
+ "id": 29892836,
+ "node_id": "MDQ6VXNlcjI5ODkyODM2",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/29892836?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/stuartmacd",
+ "html_url": "https://github.com/stuartmacd",
+ "followers_url": "https://api.github.com/users/stuartmacd/followers",
+ "following_url": "https://api.github.com/users/stuartmacd/following{/other_user}",
+ "gists_url": "https://api.github.com/users/stuartmacd/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/stuartmacd/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/stuartmacd/subscriptions",
+ "organizations_url": "https://api.github.com/users/stuartmacd/orgs",
+ "repos_url": "https://api.github.com/users/stuartmacd/repos",
+ "events_url": "https://api.github.com/users/stuartmacd/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/stuartmacd/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/stuartmacd/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/stuartmacd/ignite",
+ "forks_url": "https://api.github.com/repos/stuartmacd/ignite/forks",
+ "keys_url": "https://api.github.com/repos/stuartmacd/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/stuartmacd/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/stuartmacd/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/stuartmacd/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/stuartmacd/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/stuartmacd/ignite/events",
+ "assignees_url": "https://api.github.com/repos/stuartmacd/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/stuartmacd/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/stuartmacd/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/stuartmacd/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/stuartmacd/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/stuartmacd/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/stuartmacd/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/stuartmacd/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/stuartmacd/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/stuartmacd/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/stuartmacd/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/stuartmacd/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/stuartmacd/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/stuartmacd/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/stuartmacd/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/stuartmacd/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/stuartmacd/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/stuartmacd/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/stuartmacd/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/stuartmacd/ignite/merges",
+ "archive_url": "https://api.github.com/repos/stuartmacd/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/stuartmacd/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/stuartmacd/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/stuartmacd/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/stuartmacd/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/stuartmacd/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/stuartmacd/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/stuartmacd/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/stuartmacd/ignite/deployments",
+ "created_at": "2018-07-20T13:38:10Z",
+ "updated_at": "2018-09-07T09:02:08Z",
+ "pushed_at": "2018-10-05T09:43:57Z",
+ "git_url": "git://github.com/stuartmacd/ignite.git",
+ "ssh_url": "git@github.com:stuartmacd/ignite.git",
+ "clone_url": "https://github.com/stuartmacd/ignite.git",
+ "svn_url": "https://github.com/stuartmacd/ignite",
+ "homepage": "",
+ "size": 286871,
+ "stargazers_count": 0,
+ "watchers_count": 0,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 0,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 0,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 0,
+ "open_issues": 0,
+ "watchers": 0,
+ "default_branch": "master"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "a232b88fe823a9823b86a0efd93c259e0cf0f0bc",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4551"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4551"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4551"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4551/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4551/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4551/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/5797db46dc2bbc45eebafcd3850df36c40331367"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4920",
+ "id": 220744345,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwNzQ0MzQ1",
+ "html_url": "https://github.com/apache/ignite/pull/4920",
+ "diff_url": "https://github.com/apache/ignite/pull/4920.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4920.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4920",
+ "number": 4920,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-5935: WIP client origin transactions recovery",
+ "user": {
+ "login": "pavlukhin",
+ "id": 6750232,
+ "node_id": "MDQ6VXNlcjY3NTAyMzI=",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/6750232?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/pavlukhin",
+ "html_url": "https://github.com/pavlukhin",
+ "followers_url": "https://api.github.com/users/pavlukhin/followers",
+ "following_url": "https://api.github.com/users/pavlukhin/following{/other_user}",
+ "gists_url": "https://api.github.com/users/pavlukhin/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/pavlukhin/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/pavlukhin/subscriptions",
+ "organizations_url": "https://api.github.com/users/pavlukhin/orgs",
+ "repos_url": "https://api.github.com/users/pavlukhin/repos",
+ "events_url": "https://api.github.com/users/pavlukhin/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/pavlukhin/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-10-05T15:40:46Z",
+ "updated_at": "2018-10-05T15:40:46Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": null,
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4920/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4920/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4920/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/c3c2d9e49e2aade415a41d2e381b7b6605c07791",
+ "head": {
+ "label": "gridgain:ignite-5935-wip3",
+ "ref": "ignite-5935-wip3",
+ "sha": "c3c2d9e49e2aade415a41d2e381b7b6605c07791",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "aabacfa00f5fd7ef89c9a5bda7b236ff45ed2ac4",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4920"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4920"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4920"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4920/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4920/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4920/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/c3c2d9e49e2aade415a41d2e381b7b6605c07791"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4520",
+ "id": 207779884,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjA3Nzc5ODg0",
+ "html_url": "https://github.com/apache/ignite/pull/4520",
+ "diff_url": "https://github.com/apache/ignite/pull/4520.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4520.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4520",
+ "number": 4520,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-7196 Exchange stucks on reading WAL",
+ "user": {
+ "login": "Mmuzaf",
+ "id": 3415046,
+ "node_id": "MDQ6VXNlcjM0MTUwNDY=",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/3415046?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/Mmuzaf",
+ "html_url": "https://github.com/Mmuzaf",
+ "followers_url": "https://api.github.com/users/Mmuzaf/followers",
+ "following_url": "https://api.github.com/users/Mmuzaf/following{/other_user}",
+ "gists_url": "https://api.github.com/users/Mmuzaf/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/Mmuzaf/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/Mmuzaf/subscriptions",
+ "organizations_url": "https://api.github.com/users/Mmuzaf/orgs",
+ "repos_url": "https://api.github.com/users/Mmuzaf/repos",
+ "events_url": "https://api.github.com/users/Mmuzaf/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/Mmuzaf/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-08-11T15:39:20Z",
+ "updated_at": "2018-10-05T15:34:47Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "5b68d2067e9b7da8f61d2ea67933185da0de7319",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4520/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4520/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4520/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/ae49fa4f5212c5392f9d4792616686c5ba971e38",
+ "head": {
+ "label": "Mmuzaf:ignite-7196",
+ "ref": "ignite-7196",
+ "sha": "ae49fa4f5212c5392f9d4792616686c5ba971e38",
+ "user": {
+ "login": "Mmuzaf",
+ "id": 3415046,
+ "node_id": "MDQ6VXNlcjM0MTUwNDY=",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/3415046?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/Mmuzaf",
+ "html_url": "https://github.com/Mmuzaf",
+ "followers_url": "https://api.github.com/users/Mmuzaf/followers",
+ "following_url": "https://api.github.com/users/Mmuzaf/following{/other_user}",
+ "gists_url": "https://api.github.com/users/Mmuzaf/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/Mmuzaf/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/Mmuzaf/subscriptions",
+ "organizations_url": "https://api.github.com/users/Mmuzaf/orgs",
+ "repos_url": "https://api.github.com/users/Mmuzaf/repos",
+ "events_url": "https://api.github.com/users/Mmuzaf/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/Mmuzaf/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 99608641,
+ "node_id": "MDEwOlJlcG9zaXRvcnk5OTYwODY0MQ==",
+ "name": "ignite",
+ "full_name": "Mmuzaf/ignite",
+ "private": false,
+ "owner": {
+ "login": "Mmuzaf",
+ "id": 3415046,
+ "node_id": "MDQ6VXNlcjM0MTUwNDY=",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/3415046?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/Mmuzaf",
+ "html_url": "https://github.com/Mmuzaf",
+ "followers_url": "https://api.github.com/users/Mmuzaf/followers",
+ "following_url": "https://api.github.com/users/Mmuzaf/following{/other_user}",
+ "gists_url": "https://api.github.com/users/Mmuzaf/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/Mmuzaf/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/Mmuzaf/subscriptions",
+ "organizations_url": "https://api.github.com/users/Mmuzaf/orgs",
+ "repos_url": "https://api.github.com/users/Mmuzaf/repos",
+ "events_url": "https://api.github.com/users/Mmuzaf/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/Mmuzaf/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/Mmuzaf/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/Mmuzaf/ignite",
+ "forks_url": "https://api.github.com/repos/Mmuzaf/ignite/forks",
+ "keys_url": "https://api.github.com/repos/Mmuzaf/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/Mmuzaf/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/Mmuzaf/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/Mmuzaf/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/Mmuzaf/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/Mmuzaf/ignite/events",
+ "assignees_url": "https://api.github.com/repos/Mmuzaf/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/Mmuzaf/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/Mmuzaf/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/Mmuzaf/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/Mmuzaf/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/Mmuzaf/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/Mmuzaf/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/Mmuzaf/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/Mmuzaf/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/Mmuzaf/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/Mmuzaf/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/Mmuzaf/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/Mmuzaf/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/Mmuzaf/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/Mmuzaf/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/Mmuzaf/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/Mmuzaf/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/Mmuzaf/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/Mmuzaf/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/Mmuzaf/ignite/merges",
+ "archive_url": "https://api.github.com/repos/Mmuzaf/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/Mmuzaf/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/Mmuzaf/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/Mmuzaf/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/Mmuzaf/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/Mmuzaf/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/Mmuzaf/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/Mmuzaf/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/Mmuzaf/ignite/deployments",
+ "created_at": "2017-08-07T18:41:47Z",
+ "updated_at": "2018-10-04T04:52:26Z",
+ "pushed_at": "2018-10-05T15:34:47Z",
+ "git_url": "git://github.com/Mmuzaf/ignite.git",
+ "ssh_url": "git@github.com:Mmuzaf/ignite.git",
+ "clone_url": "https://github.com/Mmuzaf/ignite.git",
+ "svn_url": "https://github.com/Mmuzaf/ignite",
+ "homepage": "",
+ "size": 286189,
+ "stargazers_count": 0,
+ "watchers_count": 0,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": true,
+ "forks_count": 0,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 0,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 0,
+ "open_issues": 0,
+ "watchers": 0,
+ "default_branch": "master"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "95b6597638a5a6b0348d6919507db3f534841eaa",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4520"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4520"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4520"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4520/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4520/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4520/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/ae49fa4f5212c5392f9d4792616686c5ba971e38"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4837",
+ "id": 218290205,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjE4MjkwMjA1",
+ "html_url": "https://github.com/apache/ignite/pull/4837",
+ "diff_url": "https://github.com/apache/ignite/pull/4837.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4837.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4837",
+ "number": 4837,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-8717",
+ "user": {
+ "login": "antonovsergey93",
+ "id": 7319556,
+ "node_id": "MDQ6VXNlcjczMTk1NTY=",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/7319556?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/antonovsergey93",
+ "html_url": "https://github.com/antonovsergey93",
+ "followers_url": "https://api.github.com/users/antonovsergey93/followers",
+ "following_url": "https://api.github.com/users/antonovsergey93/following{/other_user}",
+ "gists_url": "https://api.github.com/users/antonovsergey93/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/antonovsergey93/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/antonovsergey93/subscriptions",
+ "organizations_url": "https://api.github.com/users/antonovsergey93/orgs",
+ "repos_url": "https://api.github.com/users/antonovsergey93/repos",
+ "events_url": "https://api.github.com/users/antonovsergey93/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/antonovsergey93/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "Cache configuration was moved to meta store. Verification of cache configuration on node joining was added.",
+ "created_at": "2018-09-26T12:04:18Z",
+ "updated_at": "2018-10-05T15:31:26Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "7ab516cfaa3b53b444f47155549a163bdea7072b",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4837/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4837/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4837/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/4b66f8fbb01ba5407cc2aa5a0108645aa2d5d45c",
+ "head": {
+ "label": "gridgain:ignite-8717",
+ "ref": "ignite-8717",
+ "sha": "4b66f8fbb01ba5407cc2aa5a0108645aa2d5d45c",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "29f13da6ea882becabd86e264ab0150074f8c20a",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4837"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4837"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4837"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4837/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4837/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4837/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/4b66f8fbb01ba5407cc2aa5a0108645aa2d5d45c"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4785",
+ "id": 216286828,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjE2Mjg2ODI4",
+ "html_url": "https://github.com/apache/ignite/pull/4785",
+ "diff_url": "https://github.com/apache/ignite/pull/4785.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4785.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4785",
+ "number": 4785,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-9550 Get operation returns null for a lost partition with READ_SAFE policy",
+ "user": {
+ "login": "ibessonov",
+ "id": 11615415,
+ "node_id": "MDQ6VXNlcjExNjE1NDE1",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/11615415?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/ibessonov",
+ "html_url": "https://github.com/ibessonov",
+ "followers_url": "https://api.github.com/users/ibessonov/followers",
+ "following_url": "https://api.github.com/users/ibessonov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/ibessonov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/ibessonov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/ibessonov/subscriptions",
+ "organizations_url": "https://api.github.com/users/ibessonov/orgs",
+ "repos_url": "https://api.github.com/users/ibessonov/repos",
+ "events_url": "https://api.github.com/users/ibessonov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/ibessonov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-09-18T12:18:30Z",
+ "updated_at": "2018-10-05T15:16:21Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "17d0426983cc28009ee8fc12fb3287cc9c48e337",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4785/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4785/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4785/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/648707612dfd39f0a943b5edfbbc6f65cfc297cc",
+ "head": {
+ "label": "gridgain:ignite-9550",
+ "ref": "ignite-9550",
+ "sha": "648707612dfd39f0a943b5edfbbc6f65cfc297cc",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "a03c6e9833e4767025c9aefeedbead07495da4a5",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4785"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4785"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4785"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4785/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4785/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4785/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/648707612dfd39f0a943b5edfbbc6f65cfc297cc"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4748",
+ "id": 215309310,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjE1MzA5MzEw",
+ "html_url": "https://github.com/apache/ignite/pull/4748",
+ "diff_url": "https://github.com/apache/ignite/pull/4748.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4748.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4748",
+ "number": 4748,
+ "state": "open",
+ "locked": false,
+ "title": "Ignite 2.5.1 master",
+ "user": {
+ "login": "macrergate",
+ "id": 18450574,
+ "node_id": "MDQ6VXNlcjE4NDUwNTc0",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/18450574?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/macrergate",
+ "html_url": "https://github.com/macrergate",
+ "followers_url": "https://api.github.com/users/macrergate/followers",
+ "following_url": "https://api.github.com/users/macrergate/following{/other_user}",
+ "gists_url": "https://api.github.com/users/macrergate/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/macrergate/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/macrergate/subscriptions",
+ "organizations_url": "https://api.github.com/users/macrergate/orgs",
+ "repos_url": "https://api.github.com/users/macrergate/repos",
+ "events_url": "https://api.github.com/users/macrergate/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/macrergate/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-09-13T14:47:41Z",
+ "updated_at": "2018-10-05T15:13:48Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": null,
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4748/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4748/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4748/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/3989736b1564c0b987178d45b55fc951b11d78da",
+ "head": {
+ "label": "gridgain:ignite-2.5.1-master",
+ "ref": "ignite-2.5.1-master",
+ "sha": "3989736b1564c0b987178d45b55fc951b11d78da",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:ignite-2.5",
+ "ref": "ignite-2.5",
+ "sha": "303bd35693da2ef15371baa31a23d075be262378",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4748"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4748"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4748"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4748/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4748/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4748/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/3989736b1564c0b987178d45b55fc951b11d78da"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/3953",
+ "id": 186365902,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MTg2MzY1OTAy",
+ "html_url": "https://github.com/apache/ignite/pull/3953",
+ "diff_url": "https://github.com/apache/ignite/pull/3953.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/3953.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/3953",
+ "number": 3953,
+ "state": "open",
+ "locked": false,
+ "title": "ignite-2.5.1-master",
+ "user": {
+ "login": "dgovorukhin",
+ "id": 21306401,
+ "node_id": "MDQ6VXNlcjIxMzA2NDAx",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/21306401?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/dgovorukhin",
+ "html_url": "https://github.com/dgovorukhin",
+ "followers_url": "https://api.github.com/users/dgovorukhin/followers",
+ "following_url": "https://api.github.com/users/dgovorukhin/following{/other_user}",
+ "gists_url": "https://api.github.com/users/dgovorukhin/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/dgovorukhin/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/dgovorukhin/subscriptions",
+ "organizations_url": "https://api.github.com/users/dgovorukhin/orgs",
+ "repos_url": "https://api.github.com/users/dgovorukhin/repos",
+ "events_url": "https://api.github.com/users/dgovorukhin/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/dgovorukhin/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-05-07T14:22:08Z",
+ "updated_at": "2018-10-05T15:13:47Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": null,
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/3953/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/3953/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/3953/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/3989736b1564c0b987178d45b55fc951b11d78da",
+ "head": {
+ "label": "gridgain:ignite-2.5.1-master",
+ "ref": "ignite-2.5.1-master",
+ "sha": "3989736b1564c0b987178d45b55fc951b11d78da",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "91c9271a06f7fb48f8fec5446390fb932e26523a",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/3953"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/3953"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/3953"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/3953/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/3953/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/3953/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/3989736b1564c0b987178d45b55fc951b11d78da"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4919",
+ "id": 220733269,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwNzMzMjY5",
+ "html_url": "https://github.com/apache/ignite/pull/4919",
+ "diff_url": "https://github.com/apache/ignite/pull/4919.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4919.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4919",
+ "number": 4919,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-8639: add test to check fix parse problem queries with CTE",
+ "user": {
+ "login": "tledkov-gridgain",
+ "id": 18483908,
+ "node_id": "MDQ6VXNlcjE4NDgzOTA4",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/18483908?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/tledkov-gridgain",
+ "html_url": "https://github.com/tledkov-gridgain",
+ "followers_url": "https://api.github.com/users/tledkov-gridgain/followers",
+ "following_url": "https://api.github.com/users/tledkov-gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/tledkov-gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/tledkov-gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/tledkov-gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/tledkov-gridgain/orgs",
+ "repos_url": "https://api.github.com/users/tledkov-gridgain/repos",
+ "events_url": "https://api.github.com/users/tledkov-gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/tledkov-gridgain/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-10-05T15:06:28Z",
+ "updated_at": "2018-10-05T15:06:28Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "b0d16ecb94671b1f20205e1fa1196e9022e53ca1",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4919/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4919/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4919/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/2bba9f425ae5e7a66d8f06ae4ab0735b26e1eaad",
+ "head": {
+ "label": "gridgain:ignite-8639",
+ "ref": "ignite-8639",
+ "sha": "2bba9f425ae5e7a66d8f06ae4ab0735b26e1eaad",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "aabacfa00f5fd7ef89c9a5bda7b236ff45ed2ac4",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4919"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4919"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4919"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4919/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4919/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4919/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/2bba9f425ae5e7a66d8f06ae4ab0735b26e1eaad"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4619",
+ "id": 210902792,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjEwOTAyNzky",
+ "html_url": "https://github.com/apache/ignite/pull/4619",
+ "diff_url": "https://github.com/apache/ignite/pull/4619.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4619.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4619",
+ "number": 4619,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-9272 j.u.zip.CRC32algo instead of PureJavaCrc32",
+ "user": {
+ "login": "zstan",
+ "id": 1107510,
+ "node_id": "MDQ6VXNlcjExMDc1MTA=",
+ "avatar_url": "https://avatars2.githubusercontent.com/u/1107510?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/zstan",
+ "html_url": "https://github.com/zstan",
+ "followers_url": "https://api.github.com/users/zstan/followers",
+ "following_url": "https://api.github.com/users/zstan/following{/other_user}",
+ "gists_url": "https://api.github.com/users/zstan/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/zstan/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/zstan/subscriptions",
+ "organizations_url": "https://api.github.com/users/zstan/orgs",
+ "repos_url": "https://api.github.com/users/zstan/repos",
+ "events_url": "https://api.github.com/users/zstan/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/zstan/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-08-25T13:34:01Z",
+ "updated_at": "2018-10-05T15:00:33Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "9c3298ca918692c77c554e1acedeb7c58075f895",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4619/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4619/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4619/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/3218a1ab74cf81398b8275fe2dcfcfb9e6fc1b28",
+ "head": {
+ "label": "gridgain:ignite-9272",
+ "ref": "ignite-9272",
+ "sha": "3218a1ab74cf81398b8275fe2dcfcfb9e6fc1b28",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "a03c6e9833e4767025c9aefeedbead07495da4a5",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4619"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4619"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4619"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4619/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4619/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4619/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/3218a1ab74cf81398b8275fe2dcfcfb9e6fc1b28"
+ }
+ },
+ "author_association": "NONE"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4913",
+ "id": 220301209,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwMzAxMjA5",
+ "html_url": "https://github.com/apache/ignite/pull/4913",
+ "diff_url": "https://github.com/apache/ignite/pull/4913.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4913.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4913",
+ "number": 4913,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-5935: WIP server origin transactions recovery",
+ "user": {
+ "login": "pavlukhin",
+ "id": 6750232,
+ "node_id": "MDQ6VXNlcjY3NTAyMzI=",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/6750232?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/pavlukhin",
+ "html_url": "https://github.com/pavlukhin",
+ "followers_url": "https://api.github.com/users/pavlukhin/followers",
+ "following_url": "https://api.github.com/users/pavlukhin/following{/other_user}",
+ "gists_url": "https://api.github.com/users/pavlukhin/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/pavlukhin/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/pavlukhin/subscriptions",
+ "organizations_url": "https://api.github.com/users/pavlukhin/orgs",
+ "repos_url": "https://api.github.com/users/pavlukhin/repos",
+ "events_url": "https://api.github.com/users/pavlukhin/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/pavlukhin/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-10-04T09:06:46Z",
+ "updated_at": "2018-10-05T14:31:41Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "6f2b8ec873c1f47989cd762a3c292bfe52fb91d3",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4913/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4913/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4913/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/ee33d4d919e4cd50b13f5a6ca22621e4ee992a68",
+ "head": {
+ "label": "gridgain:ignite-5935-wip2",
+ "ref": "ignite-5935-wip2",
+ "sha": "ee33d4d919e4cd50b13f5a6ca22621e4ee992a68",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "76d6ef032f9a634f15398d10e0019419f9798296",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4913"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4913"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4913"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4913/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4913/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4913/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/ee33d4d919e4cd50b13f5a6ca22621e4ee992a68"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4762",
+ "id": 215584745,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjE1NTg0NzQ1",
+ "html_url": "https://github.com/apache/ignite/pull/4762",
+ "diff_url": "https://github.com/apache/ignite/pull/4762.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4762.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4762",
+ "number": 4762,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-9601 Writing rollover record to the end of current segment.",
+ "user": {
+ "login": "andrey-kuznetsov",
+ "id": 3435602,
+ "node_id": "MDQ6VXNlcjM0MzU2MDI=",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/3435602?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/andrey-kuznetsov",
+ "html_url": "https://github.com/andrey-kuznetsov",
+ "followers_url": "https://api.github.com/users/andrey-kuznetsov/followers",
+ "following_url": "https://api.github.com/users/andrey-kuznetsov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/andrey-kuznetsov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/andrey-kuznetsov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/andrey-kuznetsov/subscriptions",
+ "organizations_url": "https://api.github.com/users/andrey-kuznetsov/orgs",
+ "repos_url": "https://api.github.com/users/andrey-kuznetsov/repos",
+ "events_url": "https://api.github.com/users/andrey-kuznetsov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/andrey-kuznetsov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-09-14T12:53:37Z",
+ "updated_at": "2018-10-05T13:40:10Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "a5a53df66dbc26bdb8dcf4c348e198f0c280e32c",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4762/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4762/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4762/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/3344f3f8a9b5347da8b809311582b6cbce4f80f3",
+ "head": {
+ "label": "andrey-kuznetsov:ignite-9601",
+ "ref": "ignite-9601",
+ "sha": "3344f3f8a9b5347da8b809311582b6cbce4f80f3",
+ "user": {
+ "login": "andrey-kuznetsov",
+ "id": 3435602,
+ "node_id": "MDQ6VXNlcjM0MzU2MDI=",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/3435602?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/andrey-kuznetsov",
+ "html_url": "https://github.com/andrey-kuznetsov",
+ "followers_url": "https://api.github.com/users/andrey-kuznetsov/followers",
+ "following_url": "https://api.github.com/users/andrey-kuznetsov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/andrey-kuznetsov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/andrey-kuznetsov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/andrey-kuznetsov/subscriptions",
+ "organizations_url": "https://api.github.com/users/andrey-kuznetsov/orgs",
+ "repos_url": "https://api.github.com/users/andrey-kuznetsov/repos",
+ "events_url": "https://api.github.com/users/andrey-kuznetsov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/andrey-kuznetsov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 87896293,
+ "node_id": "MDEwOlJlcG9zaXRvcnk4Nzg5NjI5Mw==",
+ "name": "ignite",
+ "full_name": "andrey-kuznetsov/ignite",
+ "private": false,
+ "owner": {
+ "login": "andrey-kuznetsov",
+ "id": 3435602,
+ "node_id": "MDQ6VXNlcjM0MzU2MDI=",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/3435602?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/andrey-kuznetsov",
+ "html_url": "https://github.com/andrey-kuznetsov",
+ "followers_url": "https://api.github.com/users/andrey-kuznetsov/followers",
+ "following_url": "https://api.github.com/users/andrey-kuznetsov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/andrey-kuznetsov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/andrey-kuznetsov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/andrey-kuznetsov/subscriptions",
+ "organizations_url": "https://api.github.com/users/andrey-kuznetsov/orgs",
+ "repos_url": "https://api.github.com/users/andrey-kuznetsov/repos",
+ "events_url": "https://api.github.com/users/andrey-kuznetsov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/andrey-kuznetsov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/andrey-kuznetsov/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/andrey-kuznetsov/ignite",
+ "forks_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/forks",
+ "keys_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/events",
+ "assignees_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/merges",
+ "archive_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/andrey-kuznetsov/ignite/deployments",
+ "created_at": "2017-04-11T06:10:57Z",
+ "updated_at": "2018-10-05T09:37:20Z",
+ "pushed_at": "2018-10-05T13:40:08Z",
+ "git_url": "git://github.com/andrey-kuznetsov/ignite.git",
+ "ssh_url": "git@github.com:andrey-kuznetsov/ignite.git",
+ "clone_url": "https://github.com/andrey-kuznetsov/ignite.git",
+ "svn_url": "https://github.com/andrey-kuznetsov/ignite",
+ "homepage": "",
+ "size": 284348,
+ "stargazers_count": 0,
+ "watchers_count": 0,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 0,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 2,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 0,
+ "open_issues": 2,
+ "watchers": 0,
+ "default_branch": "master"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "a6d0bd4b5551231b0516eaf0ebd8112b45bba86d",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4762"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4762"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4762"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4762/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4762/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4762/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/3344f3f8a9b5347da8b809311582b6cbce4f80f3"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4918",
+ "id": 220683064,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjIwNjgzMDY0",
+ "html_url": "https://github.com/apache/ignite/pull/4918",
+ "diff_url": "https://github.com/apache/ignite/pull/4918.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4918.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4918",
+ "number": 4918,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-9684: JDK9: pass JVM options to created process at HadoopComma…",
+ "user": {
+ "login": "tledkov-gridgain",
+ "id": 18483908,
+ "node_id": "MDQ6VXNlcjE4NDgzOTA4",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/18483908?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/tledkov-gridgain",
+ "html_url": "https://github.com/tledkov-gridgain",
+ "followers_url": "https://api.github.com/users/tledkov-gridgain/followers",
+ "following_url": "https://api.github.com/users/tledkov-gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/tledkov-gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/tledkov-gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/tledkov-gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/tledkov-gridgain/orgs",
+ "repos_url": "https://api.github.com/users/tledkov-gridgain/repos",
+ "events_url": "https://api.github.com/users/tledkov-gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/tledkov-gridgain/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "…ndLineTest#createProcessBuilder",
+ "created_at": "2018-10-05T12:21:21Z",
+ "updated_at": "2018-10-05T12:21:21Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "a1c6582363df38a86200123531ff2e675951be5f",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4918/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4918/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4918/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/5643ab12a7eff03fe7c230eee1c849664b4eb71a",
+ "head": {
+ "label": "gridgain:ignite-9684",
+ "ref": "ignite-9684",
+ "sha": "5643ab12a7eff03fe7c230eee1c849664b4eb71a",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "aabacfa00f5fd7ef89c9a5bda7b236ff45ed2ac4",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4918"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4918"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4918"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4918/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4918/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4918/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/5643ab12a7eff03fe7c230eee1c849664b4eb71a"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/3900",
+ "id": 183404606,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MTgzNDA0NjA2",
+ "html_url": "https://github.com/apache/ignite/pull/3900",
+ "diff_url": "https://github.com/apache/ignite/pull/3900.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/3900.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/3900",
+ "number": 3900,
+ "state": "open",
+ "locked": false,
+ "title": "Ignite 2.4 master",
+ "user": {
+ "login": "AMashenkov",
+ "id": 3877671,
+ "node_id": "MDQ6VXNlcjM4Nzc2NzE=",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/3877671?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/AMashenkov",
+ "html_url": "https://github.com/AMashenkov",
+ "followers_url": "https://api.github.com/users/AMashenkov/followers",
+ "following_url": "https://api.github.com/users/AMashenkov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/AMashenkov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/AMashenkov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/AMashenkov/subscriptions",
+ "organizations_url": "https://api.github.com/users/AMashenkov/orgs",
+ "repos_url": "https://api.github.com/users/AMashenkov/repos",
+ "events_url": "https://api.github.com/users/AMashenkov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/AMashenkov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "for test purposes.",
+ "created_at": "2018-04-23T11:31:27Z",
+ "updated_at": "2018-10-05T10:13:22Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "9953e1209fdad572b326844777c7c0ca92dddc02",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/3900/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/3900/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/3900/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/9b345d322570649f208cc0a12a3e642a72d068e4",
+ "head": {
+ "label": "gridgain:ignite-2.4-master",
+ "ref": "ignite-2.4-master",
+ "sha": "9b345d322570649f208cc0a12a3e642a72d068e4",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:ignite-2.4",
+ "ref": "ignite-2.4",
+ "sha": "68a43c39664bee9d416afd41b7ecfacae256e4e4",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/3900"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/3900"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/3900"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/3900/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/3900/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/3900/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/9b345d322570649f208cc0a12a3e642a72d068e4"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4611",
+ "id": 210677352,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjEwNjc3MzUy",
+ "html_url": "https://github.com/apache/ignite/pull/4611",
+ "diff_url": "https://github.com/apache/ignite/pull/4611.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4611.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4611",
+ "number": 4611,
+ "state": "open",
+ "locked": false,
+ "title": "Ignite 2.5-master",
+ "user": {
+ "login": "AMashenkov",
+ "id": 3877671,
+ "node_id": "MDQ6VXNlcjM4Nzc2NzE=",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/3877671?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/AMashenkov",
+ "html_url": "https://github.com/AMashenkov",
+ "followers_url": "https://api.github.com/users/AMashenkov/followers",
+ "following_url": "https://api.github.com/users/AMashenkov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/AMashenkov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/AMashenkov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/AMashenkov/subscriptions",
+ "organizations_url": "https://api.github.com/users/AMashenkov/orgs",
+ "repos_url": "https://api.github.com/users/AMashenkov/repos",
+ "events_url": "https://api.github.com/users/AMashenkov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/AMashenkov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-08-24T08:48:39Z",
+ "updated_at": "2018-10-05T09:59:17Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": null,
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4611/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4611/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4611/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/631d5fecdb56f9e2139c68d149d4262904ef05e0",
+ "head": {
+ "label": "gridgain:ignite-2.5-master",
+ "ref": "ignite-2.5-master",
+ "sha": "631d5fecdb56f9e2139c68d149d4262904ef05e0",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "2eb5d47a19ff7f9da6a68a00947a5d0faf5a5b45",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4611"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4611"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4611"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4611/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4611/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4611/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/631d5fecdb56f9e2139c68d149d4262904ef05e0"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4884",
+ "id": 219476556,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjE5NDc2NTU2",
+ "html_url": "https://github.com/apache/ignite/pull/4884",
+ "diff_url": "https://github.com/apache/ignite/pull/4884.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4884.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4884",
+ "number": 4884,
+ "state": "open",
+ "locked": false,
+ "title": "Ignite 2.4.11",
+ "user": {
+ "login": "Max-Pudov",
+ "id": 22145502,
+ "node_id": "MDQ6VXNlcjIyMTQ1NTAy",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/22145502?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/Max-Pudov",
+ "html_url": "https://github.com/Max-Pudov",
+ "followers_url": "https://api.github.com/users/Max-Pudov/followers",
+ "following_url": "https://api.github.com/users/Max-Pudov/following{/other_user}",
+ "gists_url": "https://api.github.com/users/Max-Pudov/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/Max-Pudov/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/Max-Pudov/subscriptions",
+ "organizations_url": "https://api.github.com/users/Max-Pudov/orgs",
+ "repos_url": "https://api.github.com/users/Max-Pudov/repos",
+ "events_url": "https://api.github.com/users/Max-Pudov/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/Max-Pudov/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-10-01T18:46:28Z",
+ "updated_at": "2018-10-05T09:55:05Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "0f61f6ed5f3da219fee3ce6af879632840755330",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4884/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4884/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4884/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/55c82c1c34ba8948f8a06f52ac36a1ade7f71838",
+ "head": {
+ "label": "gridgain:ignite-2.4.11",
+ "ref": "ignite-2.4.11",
+ "sha": "55c82c1c34ba8948f8a06f52ac36a1ade7f71838",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:ignite-2.4",
+ "ref": "ignite-2.4",
+ "sha": "68a43c39664bee9d416afd41b7ecfacae256e4e4",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4884"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4884"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4884"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4884/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4884/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4884/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/55c82c1c34ba8948f8a06f52ac36a1ade7f71838"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4870",
+ "id": 218989430,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjE4OTg5NDMw",
+ "html_url": "https://github.com/apache/ignite/pull/4870",
+ "diff_url": "https://github.com/apache/ignite/pull/4870.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4870.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4870",
+ "number": 4870,
+ "state": "open",
+ "locked": false,
+ "title": "Ignite 9171 for tests",
+ "user": {
+ "login": "tledkov-gridgain",
+ "id": 18483908,
+ "node_id": "MDQ6VXNlcjE4NDgzOTA4",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/18483908?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/tledkov-gridgain",
+ "html_url": "https://github.com/tledkov-gridgain",
+ "followers_url": "https://api.github.com/users/tledkov-gridgain/followers",
+ "following_url": "https://api.github.com/users/tledkov-gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/tledkov-gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/tledkov-gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/tledkov-gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/tledkov-gridgain/orgs",
+ "repos_url": "https://api.github.com/users/tledkov-gridgain/repos",
+ "events_url": "https://api.github.com/users/tledkov-gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/tledkov-gridgain/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "",
+ "created_at": "2018-09-28T14:36:00Z",
+ "updated_at": "2018-10-05T09:46:54Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "e229b65a4268f1da0cbfb40f06dcac071db0ce2d",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4870/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4870/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4870/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/4c64d39459bfb105a42032bfb1ac8aa1e8269b1a",
+ "head": {
+ "label": "gridgain:ignite-9171-1",
+ "ref": "ignite-9171-1",
+ "sha": "4c64d39459bfb105a42032bfb1ac8aa1e8269b1a",
+ "user": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 32432793,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMjQzMjc5Mw==",
+ "name": "apache-ignite",
+ "full_name": "gridgain/apache-ignite",
+ "private": false,
+ "owner": {
+ "login": "gridgain",
+ "id": 803592,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwMzU5Mg==",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/803592?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/gridgain",
+ "html_url": "https://github.com/gridgain",
+ "followers_url": "https://api.github.com/users/gridgain/followers",
+ "following_url": "https://api.github.com/users/gridgain/following{/other_user}",
+ "gists_url": "https://api.github.com/users/gridgain/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/gridgain/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/gridgain/subscriptions",
+ "organizations_url": "https://api.github.com/users/gridgain/orgs",
+ "repos_url": "https://api.github.com/users/gridgain/repos",
+ "events_url": "https://api.github.com/users/gridgain/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/gridgain/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/gridgain/apache-ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/gridgain/apache-ignite",
+ "forks_url": "https://api.github.com/repos/gridgain/apache-ignite/forks",
+ "keys_url": "https://api.github.com/repos/gridgain/apache-ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/gridgain/apache-ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/gridgain/apache-ignite/teams",
+ "hooks_url": "https://api.github.com/repos/gridgain/apache-ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/gridgain/apache-ignite/events",
+ "assignees_url": "https://api.github.com/repos/gridgain/apache-ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/gridgain/apache-ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/gridgain/apache-ignite/tags",
+ "blobs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/gridgain/apache-ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/gridgain/apache-ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/gridgain/apache-ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/gridgain/apache-ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/gridgain/apache-ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/gridgain/apache-ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/gridgain/apache-ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/gridgain/apache-ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/gridgain/apache-ignite/subscription",
+ "commits_url": "https://api.github.com/repos/gridgain/apache-ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/gridgain/apache-ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/gridgain/apache-ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/gridgain/apache-ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/gridgain/apache-ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/gridgain/apache-ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/gridgain/apache-ignite/merges",
+ "archive_url": "https://api.github.com/repos/gridgain/apache-ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/gridgain/apache-ignite/downloads",
+ "issues_url": "https://api.github.com/repos/gridgain/apache-ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/gridgain/apache-ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/gridgain/apache-ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/gridgain/apache-ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/gridgain/apache-ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/gridgain/apache-ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/gridgain/apache-ignite/deployments",
+ "created_at": "2015-03-18T02:19:44Z",
+ "updated_at": "2018-09-25T15:44:27Z",
+ "pushed_at": "2018-10-05T16:14:37Z",
+ "git_url": "git://github.com/gridgain/apache-ignite.git",
+ "ssh_url": "git@github.com:gridgain/apache-ignite.git",
+ "clone_url": "https://github.com/gridgain/apache-ignite.git",
+ "svn_url": "https://github.com/gridgain/apache-ignite",
+ "homepage": "",
+ "size": 367919,
+ "stargazers_count": 18,
+ "watchers_count": 18,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 7,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 16,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 7,
+ "open_issues": 16,
+ "watchers": 18,
+ "default_branch": "sprint-2"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "78c2d3bbbd620bb7795d9f362785e073d2dec0a2",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
+ "assignees_url": "https://api.github.com/repos/apache/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/apache/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/apache/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/apache/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/apache/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/apache/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/apache/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/apache/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/apache/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/apache/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/apache/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/apache/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/apache/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/apache/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/apache/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/apache/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/apache/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/apache/ignite/merges",
+ "archive_url": "https://api.github.com/repos/apache/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/apache/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/apache/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/apache/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/apache/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/apache/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/apache/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/apache/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/apache/ignite/deployments",
+ "created_at": "2015-02-19T08:00:05Z",
+ "updated_at": "2018-10-05T10:07:08Z",
+ "pushed_at": "2018-10-05T15:59:56Z",
+ "git_url": "git://github.com/apache/ignite.git",
+ "ssh_url": "git@github.com:apache/ignite.git",
+ "clone_url": "https://github.com/apache/ignite.git",
+ "svn_url": "https://github.com/apache/ignite",
+ "homepage": "",
+ "size": 290245,
+ "stargazers_count": 1992,
+ "watchers_count": 1992,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 1054,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 1332,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 1054,
+ "open_issues": 1332,
+ "watchers": 1992,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4870"
+ },
+ "html": {
+ "href": "https://github.com/apache/ignite/pull/4870"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4870"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/apache/ignite/issues/4870/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4870/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/apache/ignite/pulls/4870/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/apache/ignite/statuses/4c64d39459bfb105a42032bfb1ac8aa1e8269b1a"
+ }
+ },
+ "author_association": "CONTRIBUTOR"
+ },
+ {
+ "url": "https://api.github.com/repos/apache/ignite/pulls/4434",
+ "id": 204056257,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MjA0MDU2MjU3",
+ "html_url": "https://github.com/apache/ignite/pull/4434",
+ "diff_url": "https://github.com/apache/ignite/pull/4434.diff",
+ "patch_url": "https://github.com/apache/ignite/pull/4434.patch",
+ "issue_url": "https://api.github.com/repos/apache/ignite/issues/4434",
+ "number": 4434,
+ "state": "open",
+ "locked": false,
+ "title": "IGNITE-8361 Use discovery messages for service deployment",
+ "user": {
+ "login": "daradurvs",
+ "id": 11329797,
+ "node_id": "MDQ6VXNlcjExMzI5Nzk3",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/11329797?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/daradurvs",
+ "html_url": "https://github.com/daradurvs",
+ "followers_url": "https://api.github.com/users/daradurvs/followers",
+ "following_url": "https://api.github.com/users/daradurvs/following{/other_user}",
+ "gists_url": "https://api.github.com/users/daradurvs/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/daradurvs/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/daradurvs/subscriptions",
+ "organizations_url": "https://api.github.com/users/daradurvs/orgs",
+ "repos_url": "https://api.github.com/users/daradurvs/repos",
+ "events_url": "https://api.github.com/users/daradurvs/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/daradurvs/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "The PR contains changes to cover the following tasks:\r\n\r\n- [Use discovery messages for service deployment](https://issues.apache.org/jira/browse/IGNITE-8361)\r\n- [Collect service deployment results asynchronously on coordinator](https://issues.apache.org/jira/browse/IGNITE-8362)\r\n- [Propagate service deployment results from assigned nodes to initiator](https://issues.apache.org/jira/browse/IGNITE-3392)\r\n- [Handle topology changes during service deployment](https://i [...]
+ "created_at": "2018-07-26T07:51:25Z",
+ "updated_at": "2018-10-05T08:28:30Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "4b19cd8304a4e4f2ece1945b4bfb9df6e0ed02c1",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/apache/ignite/pulls/4434/commits",
+ "review_comments_url": "https://api.github.com/repos/apache/ignite/pulls/4434/comments",
+ "review_comment_url": "https://api.github.com/repos/apache/ignite/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/apache/ignite/issues/4434/comments",
+ "statuses_url": "https://api.github.com/repos/apache/ignite/statuses/674341eb6f204e4d2a5f8c23036d5e7627bb420b",
+ "head": {
+ "label": "daradurvs:ignite-8361-to-master",
+ "ref": "ignite-8361-to-master",
+ "sha": "674341eb6f204e4d2a5f8c23036d5e7627bb420b",
+ "user": {
+ "login": "daradurvs",
+ "id": 11329797,
+ "node_id": "MDQ6VXNlcjExMzI5Nzk3",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/11329797?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/daradurvs",
+ "html_url": "https://github.com/daradurvs",
+ "followers_url": "https://api.github.com/users/daradurvs/followers",
+ "following_url": "https://api.github.com/users/daradurvs/following{/other_user}",
+ "gists_url": "https://api.github.com/users/daradurvs/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/daradurvs/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/daradurvs/subscriptions",
+ "organizations_url": "https://api.github.com/users/daradurvs/orgs",
+ "repos_url": "https://api.github.com/users/daradurvs/repos",
+ "events_url": "https://api.github.com/users/daradurvs/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/daradurvs/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 77060192,
+ "node_id": "MDEwOlJlcG9zaXRvcnk3NzA2MDE5Mg==",
+ "name": "ignite",
+ "full_name": "daradurvs/ignite",
+ "private": false,
+ "owner": {
+ "login": "daradurvs",
+ "id": 11329797,
+ "node_id": "MDQ6VXNlcjExMzI5Nzk3",
+ "avatar_url": "https://avatars3.githubusercontent.com/u/11329797?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/daradurvs",
+ "html_url": "https://github.com/daradurvs",
+ "followers_url": "https://api.github.com/users/daradurvs/followers",
+ "following_url": "https://api.github.com/users/daradurvs/following{/other_user}",
+ "gists_url": "https://api.github.com/users/daradurvs/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/daradurvs/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/daradurvs/subscriptions",
+ "organizations_url": "https://api.github.com/users/daradurvs/orgs",
+ "repos_url": "https://api.github.com/users/daradurvs/repos",
+ "events_url": "https://api.github.com/users/daradurvs/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/daradurvs/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/daradurvs/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": true,
+ "url": "https://api.github.com/repos/daradurvs/ignite",
+ "forks_url": "https://api.github.com/repos/daradurvs/ignite/forks",
+ "keys_url": "https://api.github.com/repos/daradurvs/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/daradurvs/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/daradurvs/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/daradurvs/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/daradurvs/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/daradurvs/ignite/events",
+ "assignees_url": "https://api.github.com/repos/daradurvs/ignite/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/daradurvs/ignite/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/daradurvs/ignite/tags",
+ "blobs_url": "https://api.github.com/repos/daradurvs/ignite/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/daradurvs/ignite/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/daradurvs/ignite/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/daradurvs/ignite/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/daradurvs/ignite/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/daradurvs/ignite/languages",
+ "stargazers_url": "https://api.github.com/repos/daradurvs/ignite/stargazers",
+ "contributors_url": "https://api.github.com/repos/daradurvs/ignite/contributors",
+ "subscribers_url": "https://api.github.com/repos/daradurvs/ignite/subscribers",
+ "subscription_url": "https://api.github.com/repos/daradurvs/ignite/subscription",
+ "commits_url": "https://api.github.com/repos/daradurvs/ignite/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/daradurvs/ignite/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/daradurvs/ignite/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/daradurvs/ignite/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/daradurvs/ignite/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/daradurvs/ignite/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/daradurvs/ignite/merges",
+ "archive_url": "https://api.github.com/repos/daradurvs/ignite/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/daradurvs/ignite/downloads",
+ "issues_url": "https://api.github.com/repos/daradurvs/ignite/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/daradurvs/ignite/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/daradurvs/ignite/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/daradurvs/ignite/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/daradurvs/ignite/labels{/name}",
+ "releases_url": "https://api.github.com/repos/daradurvs/ignite/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/daradurvs/ignite/deployments",
+ "created_at": "2016-12-21T14:48:39Z",
+ "updated_at": "2018-10-02T18:10:07Z",
+ "pushed_at": "2018-10-05T08:28:29Z",
+ "git_url": "git://github.com/daradurvs/ignite.git",
+ "ssh_url": "git@github.com:daradurvs/ignite.git",
+ "clone_url": "https://github.com/daradurvs/ignite.git",
+ "svn_url": "https://github.com/daradurvs/ignite",
+ "homepage": "",
+ "size": 294402,
+ "stargazers_count": 0,
+ "watchers_count": 0,
+ "language": "Java",
+ "has_issues": false,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": false,
+ "has_pages": false,
+ "forks_count": 0,
+ "mirror_url": null,
+ "archived": false,
+ "open_issues_count": 0,
+ "license": {
+ "key": "apache-2.0",
+ "name": "Apache License 2.0",
+ "spdx_id": "Apache-2.0",
+ "url": "https://api.github.com/licenses/apache-2.0",
+ "node_id": "MDc6TGljZW5zZTI="
+ },
+ "forks": 0,
+ "open_issues": 0,
+ "watchers": 0,
+ "default_branch": "master"
+ }
+ },
+ "base": {
+ "label": "apache:master",
+ "ref": "master",
+ "sha": "a03c6e9833e4767025c9aefeedbead07495da4a5",
+ "user": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 31006158,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzMTAwNjE1OA==",
+ "name": "ignite",
+ "full_name": "apache/ignite",
+ "private": false,
+ "owner": {
+ "login": "apache",
+ "id": 47359,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/47359?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/apache",
+ "html_url": "https://github.com/apache",
+ "followers_url": "https://api.github.com/users/apache/followers",
+ "following_url": "https://api.github.com/users/apache/following{/other_user}",
+ "gists_url": "https://api.github.com/users/apache/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/apache/subscriptions",
+ "organizations_url": "https://api.github.com/users/apache/orgs",
+ "repos_url": "https://api.github.com/users/apache/repos",
+ "events_url": "https://api.github.com/users/apache/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/apache/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/apache/ignite",
+ "description": "Mirror of Apache Ignite",
+ "fork": false,
+ "url": "https://api.github.com/repos/apache/ignite",
+ "forks_url": "https://api.github.com/repos/apache/ignite/forks",
+ "keys_url": "https://api.github.com/repos/apache/ignite/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/apache/ignite/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/apache/ignite/teams",
+ "hooks_url": "https://api.github.com/repos/apache/ignite/hooks",
+ "issue_events_url": "https://api.github.com/repos/apache/ignite/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/apache/ignite/events",
... 4116 lines suppressed ...