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 d501401 Background start implemented d501401 is described below commit d501401c494f88e18f05e8d98feacc761dc6d530 Author: Dmitriy Pavlov <dpav...@apache.org> AuthorDate: Sat Sep 22 21:21:55 2018 +0300 Background start implemented --- .../org/apache/ignite/ci/IgniteTeamcityHelper.java | 9 +- .../org/apache/ignite/ci/analysis/RunStat.java | 2 +- .../java/org/apache/ignite/ci/db/Ignite1Init.java | 149 +++++++++++++++++++++ .../java/org/apache/ignite/ci/db/TcHelperDb.java | 45 +------ .../org/apache/ignite/ci/di/IgniteTcBotModule.java | 27 ++-- .../org/apache/ignite/ci/jobs/CheckQueueJob.java | 2 +- .../ignite/ci/runners/CheckBuildChainResults.java | 4 +- .../ignite/ci/user/UserAndSessionsStorage.java | 17 ++- .../org/apache/ignite/ci/util/ExceptionUtil.java | 6 +- .../java/org/apache/ignite/ci/util/HttpUtil.java | 2 +- .../java/org/apache/ignite/ci/web/CtxListener.java | 11 +- .../ignite/ci/web/LauncherIgniteClientMode.java | 3 +- .../apache/ignite/ci/web/TcApplicationResCfg.java | 4 +- .../org/apache/ignite/ci/web/rest/Metrics.java | 6 +- .../apache/ignite/ci/web/rest/TriggerBuild.java | 2 +- .../ignite/ci/web/rest/build/CompareBuilds.java | 2 +- .../ci/web/rest/build/GetBuildTestFailures.java | 2 +- .../ServiceStartingException.java} | 20 ++- .../ServiceUnauthorizedException.java | 2 +- .../org/apache/ignite/ci/web/rest/login/Login.java | 2 +- .../src/main/webapp/js/common-1.6.js | 2 + ignite-tc-helper-web/src/main/webapp/services.html | 2 +- 22 files changed, 225 insertions(+), 96 deletions(-) diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityHelper.java index c4bb00f..28ece3c 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityHelper.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/IgniteTeamcityHelper.java @@ -73,10 +73,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.util.HttpUtil; -import org.apache.ignite.ci.util.UrlUtil; -import org.apache.ignite.ci.util.XmlUtil; -import org.apache.ignite.ci.util.ZipUtil; +import org.apache.ignite.ci.util.*; import org.apache.ignite.internal.util.typedef.T2; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; @@ -349,7 +346,7 @@ public class IgniteTeamcityHelper implements ITeamcity { return XmlUtil.load(Build.class, reader); } catch (JAXBException e) { - throw Throwables.propagate(e); + throw ExceptionUtil.propagateException(e); } } catch (IOException e) { @@ -458,7 +455,7 @@ public class IgniteTeamcityHelper implements ITeamcity { throw new UncheckedIOException(e); } catch (JAXBException e) { - throw Throwables.propagate(e); + throw ExceptionUtil.propagateException(e); } } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java index cf01028..5332c25 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java @@ -341,7 +341,7 @@ public class RunStat { detectedAt = checkTemplateAtPos(template, centralEvtBuild, histAsArr, 0); } else { - //start from the end to find most recent + //startIgnite from the end to find most recent for (int idx = histAsArr.size() - template.length; idx >= 0; idx--) { detectedAt = checkTemplateAtPos(template, centralEvtBuild, histAsArr, idx); diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/Ignite1Init.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/Ignite1Init.java new file mode 100644 index 0000000..4491dfb --- /dev/null +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/Ignite1Init.java @@ -0,0 +1,149 @@ +/* + * 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.db; + +import org.apache.ignite.Ignite; +import org.apache.ignite.Ignition; +import org.apache.ignite.ci.HelperConfig; +import org.apache.ignite.ci.di.AutoProfiling; +import org.apache.ignite.ci.di.MonitoredTask; +import org.apache.ignite.ci.web.model.Version; +import org.apache.ignite.cluster.BaselineNode; +import org.apache.ignite.configuration.DataRegionConfiguration; +import org.apache.ignite.configuration.DataStorageConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.logger.slf4j.Slf4jLogger; +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.Collection; +import java.util.Objects; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +public class Ignite1Init { + private static boolean clientMode; + private Ignite ignite; + + public Ignite1Init() { + } + + public static void setClientMode(boolean clientMode) { + Ignite1Init.clientMode = clientMode; + } + + public Ignite startIgnite() { + ignitionStart(); + + activate(); + + return ignite; + } + + + @SuppressWarnings({"WeakerAccess", "UnusedReturnValue"}) + @MonitoredTask(name = "Ignition Start") + @AutoProfiling + protected String ignitionStart() { + System.out.println("Starting Ignite Server Node, " + Version.VERSION); + + /* try { + Thread.sleep(30*1000); + } catch (InterruptedException e) { + e.printStackTrace(); + }*/ + + final IgniteConfiguration cfg = getIgniteConfiguration(); + + this.ignite = Ignition.start(cfg); + + return "Started, topVer " + ignite.cluster().topologyVersion(); + } + + + @SuppressWarnings({"WeakerAccess", "UnusedReturnValue"}) + @MonitoredTask(name = "Ignite Activate") + @AutoProfiling + protected String activate() { + System.out.println("Activating Ignite Server Node, " + Version.VERSION); + /* try { + Thread.sleep(30*1000); + } catch (InterruptedException e) { + e.printStackTrace(); + }*/ + ignite.cluster().active(true); + + System.out.println("Activate Completed"); + + final Collection<BaselineNode> baselineNodes = ignite.cluster().currentBaselineTopology(); + final String str + = Objects.requireNonNull(baselineNodes) + .stream() + .map(BaselineNode::consistentId) + .collect(Collectors.toList()).toString(); + + return "Activated, BLT=" + str; + } + + @NotNull + private IgniteConfiguration getIgniteConfiguration() { + final File workDir = HelperConfig.resolveWorkDir(); + Ignite2Configurer.configLogger(workDir, "tcbot_logs"); + + final IgniteConfiguration cfg = new IgniteConfiguration(); + Ignite2Configurer.setIgniteHome(cfg, workDir); + + TcHelperDb.setupDisco(cfg); + cfg.setConsistentId("TcHelper"); + cfg.setGridLogger(new Slf4jLogger()); + + final DataRegionConfiguration regConf = Ignite2Configurer.getDataRegionConfiguration(); + + final DataStorageConfiguration dsCfg = Ignite2Configurer.getDataStorageConfiguration(regConf); + + dsCfg.setPageSize(4 * 1024); + + cfg.setDataStorageConfiguration(dsCfg); + return cfg; + } + + @AutoProfiling + protected Ignite init() throws InterruptedException { + if (clientMode) + Ignition.setClientMode(true); + + return startIgnite(); + } + + private ThreadFactory threadFactory = Executors.defaultThreadFactory(); + + public Future<Ignite> submit() { + final FutureTask<Ignite> futureTask = new FutureTask<>(this::init); + + ExecutorService executor = Executors.newFixedThreadPool(1, r -> { + Thread thread = threadFactory.newThread(r); + thread.setName("ignite-init"); + return thread; + }); + + // стартуем + executor.execute(futureTask); + + return futureTask; + } +} diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/TcHelperDb.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/TcHelperDb.java index 9acc3e2..903e5bf 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/TcHelperDb.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/TcHelperDb.java @@ -17,7 +17,6 @@ package org.apache.ignite.ci.db; -import java.io.File; import java.net.InetSocketAddress; import java.util.Collection; import java.util.Collections; @@ -26,7 +25,6 @@ import org.apache.ignite.Ignite; import org.apache.ignite.Ignition; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; -import org.apache.ignite.ci.HelperConfig; import org.apache.ignite.ci.web.model.Version; import org.apache.ignite.configuration.*; import org.apache.ignite.logger.slf4j.Slf4jLogger; @@ -36,19 +34,15 @@ import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; import org.jetbrains.annotations.NotNull; -import org.slf4j.LoggerFactory; - import static org.apache.ignite.ci.web.Launcher.waitStopSignal; /** * */ public class TcHelperDb { - /** Logger. */ - private static final org.slf4j.Logger logger = LoggerFactory.getLogger(TcHelperDb.class); public static void main(String[] args) { - Ignite ignite = start(); + Ignite ignite = new Ignite1Init().startIgnite(); System.out.println("Starting Ignite DB only, " + Version.VERSION); @@ -68,38 +62,6 @@ public class TcHelperDb { new Thread(r).start(); } - public static Ignite start() { - final File workDir = HelperConfig.resolveWorkDir(); - Ignite2Configurer.configLogger(workDir, "tcbot_logs"); - - final IgniteConfiguration cfg = new IgniteConfiguration(); - Ignite2Configurer.setIgniteHome(cfg, workDir); - - setupDisco(cfg); - cfg.setConsistentId("TcHelper"); - cfg.setGridLogger(new Slf4jLogger()); - - final DataRegionConfiguration regConf = Ignite2Configurer.getDataRegionConfiguration(); - - final DataStorageConfiguration dsCfg = Ignite2Configurer.getDataStorageConfiguration(regConf); - - dsCfg.setPageSize(4 * 1024); - - cfg.setDataStorageConfiguration(dsCfg); - - System.out.println("Starting Ignite Server Node, " + Version.VERSION); - - final Ignite ignite = Ignition.start(cfg); - - System.out.println("Activating Ignite Server Node, " + Version.VERSION); - - ignite.cluster().active(true); - - System.out.println("Activate Completed"); - - return ignite; - } - public static Ignite startClient() { final IgniteConfiguration cfg = new IgniteConfiguration(); @@ -114,9 +76,8 @@ public class TcHelperDb { return ignite; } - private static void setupDisco(IgniteConfiguration cfg) { - final int locPort = 54433; - setupSinglePortDisco(cfg, locPort); + public static void setupDisco(IgniteConfiguration cfg) { + setupSinglePortDisco(cfg, 54433); } private static void setupSinglePortDisco(IgniteConfiguration cfg, int locPort) { 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 5c4f11a..904765b 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 @@ -19,18 +19,23 @@ package org.apache.ignite.ci.di; import com.google.common.base.Strings; import com.google.inject.AbstractModule; import com.google.inject.matcher.Matchers; +import jersey.repackaged.com.google.common.base.Throwables; import org.apache.ignite.Ignite; import org.apache.ignite.ci.IAnalyticsEnabledTeamcity; import org.apache.ignite.ci.ITeamcity; import org.apache.ignite.ci.IgnitePersistentTeamcity; import org.apache.ignite.ci.IgniteTeamcityHelper; +import org.apache.ignite.ci.util.ExceptionUtil; +import org.apache.ignite.ci.web.rest.exception.ServiceStartingException; import javax.inject.Inject; import javax.inject.Provider; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; public class IgniteTcBotModule extends AbstractModule { - @Deprecated - private Ignite ignite; + private Future<Ignite> igniteFuture; /** {@inheritDoc} */ @Override @@ -38,10 +43,15 @@ public class IgniteTcBotModule extends AbstractModule { configProfiling(); configTaskMonitor(); - bind(Ignite.class).toProvider(new Provider<Ignite>() { - @Override - public Ignite get() { - return ignite; + bind(Ignite.class).toProvider((Provider<Ignite>) () -> { + try { + return igniteFuture.get(10, TimeUnit.SECONDS); + } catch (TimeoutException e) { + throw new ServiceStartingException(e); + } catch (Exception e) { + e.printStackTrace(); + + throw ExceptionUtil.propagateException(e); } }); @@ -75,9 +85,8 @@ public class IgniteTcBotModule extends AbstractModule { bind(MonitoredTaskInterceptor.class).toInstance(profilingInterceptor); } - @Deprecated - public void setIgnite(Ignite ignite) { - this.ignite = ignite; + public void setIgniteFuture(Future<Ignite> igniteFuture) { + this.igniteFuture = igniteFuture; } private static class MyIServerProv implements IServerProv { diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java index 00f0576..7f131a8 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java @@ -184,7 +184,7 @@ public class CheckQueueJob implements Runnable { String login = user.username; if (selfLogin.equalsIgnoreCase(login)) { - final String msg = MessageFormat.format("Queued build {0} was early triggered by me (user {1}). Will not start build.", ref.getId(), login); + final String msg = MessageFormat.format("Queued build {0} was early triggered by me (user {1}). Will not startIgnite build.", ref.getId(), login); logger.info(msg); diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/CheckBuildChainResults.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/CheckBuildChainResults.java index e587d79..96d6ea9 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/CheckBuildChainResults.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/runners/CheckBuildChainResults.java @@ -40,6 +40,7 @@ import org.apache.ignite.ci.analysis.MultBuildRunCtx; import org.apache.ignite.ci.analysis.FullChainRunCtx; import org.apache.ignite.ci.analysis.SuiteInBranch; import org.apache.ignite.ci.analysis.mode.ProcessLogsMode; +import org.apache.ignite.ci.db.Ignite1Init; import org.apache.ignite.ci.db.TcHelperDb; import org.apache.ignite.ci.tcmodel.hist.BuildRef; import org.apache.ignite.ci.tcmodel.result.Build; @@ -114,8 +115,7 @@ public class CheckBuildChainResults { } public static void main(String[] args) throws Exception { - - Ignite ignite = TcHelperDb.start(); + Ignite ignite = new Ignite1Init().startIgnite(); BuildMetricsHistory history; try { history = new BuildMetricsHistory(); diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java index eb23c34..069b6a3 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java @@ -31,18 +31,29 @@ public class UserAndSessionsStorage { @Inject private Provider<Ignite> igniteProvider; + private volatile Ignite ignite; public IgniteCache<String, TcHelperUser> users() { - return igniteProvider.get().getOrCreateCache(TcHelperDb.getCacheV2TxConfig(USERS)); + return getIgnite().getOrCreateCache(TcHelperDb.getCacheV2TxConfig(USERS)); } - @Nullable public UserSession getSession(String sessId) { + public Ignite getIgnite() { + if (ignite != null) + return ignite; + + final Ignite ignite = igniteProvider.get(); + this.ignite = ignite; + return ignite; + } + + @Nullable + public UserSession getSession(String sessId) { return sessions().get(sessId); } private IgniteCache<String, UserSession> sessions() { - return igniteProvider.get().getOrCreateCache(TcHelperDb.getCacheV2TxConfig(USER_SESSIONS)); + return getIgnite().getOrCreateCache(TcHelperDb.getCacheV2TxConfig(USER_SESSIONS)); } public void putSession(String sessId, UserSession userSession) { diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/ExceptionUtil.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/ExceptionUtil.java index f994f20..3f5a35d 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/ExceptionUtil.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/ExceptionUtil.java @@ -18,8 +18,9 @@ package org.apache.ignite.ci.util; import com.google.common.base.Throwables; -import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; +import javax.ws.rs.ext.ExceptionMapper; import java.util.Optional; /** @@ -35,7 +36,8 @@ public class ExceptionUtil { final Optional<Throwable> any = Throwables.getCausalChain(e) .stream() - .filter(th -> (th instanceof ServiceUnauthorizedException)).findAny(); + .filter(th -> + (th instanceof ExceptionMapper)).findAny(); if (any.isPresent()) return (RuntimeException)any.get(); 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 ab0c698..1a4e1a0 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 @@ -32,7 +32,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.concurrent.TimeUnit; -import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 7be7024..29ebf3f 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 @@ -18,6 +18,7 @@ package org.apache.ignite.ci.web; import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; @@ -27,6 +28,7 @@ import com.google.inject.Injector; import org.apache.ignite.Ignite; import org.apache.ignite.ci.ITcHelper; import org.apache.ignite.ci.TcHelper; +import org.apache.ignite.ci.db.Ignite1Init; import org.apache.ignite.ci.db.TcHelperDb; import org.apache.ignite.ci.di.IgniteTcBotModule; @@ -35,7 +37,6 @@ import org.apache.ignite.ci.di.IgniteTcBotModule; public class CtxListener implements ServletContextListener { private static final String TC_HELPER = "tcHelper"; - public static final String IGNITE = "ignite"; public static final String UPDATER = "updater"; @@ -44,7 +45,7 @@ public class CtxListener implements ServletContextListener { private static final String POOL = "pool"; public static Ignite getIgnite(ServletContext ctx) { - return (Ignite)ctx.getAttribute(IGNITE); + return getInjector(ctx).getInstance(Ignite.class); } public static ITcHelper getTcHelper(ServletContext ctx) { @@ -68,9 +69,9 @@ public class CtxListener implements ServletContextListener { ctx.setAttribute(INJECTOR, injector); - final Ignite ignite = TcHelperDb.start(); - ctx.setAttribute(IGNITE, ignite); - igniteTcBotModule.setIgnite(ignite); + final Ignite1Init instance = injector.getInstance(Ignite1Init.class); + final Future<Ignite> submit = instance.submit(); + igniteTcBotModule.setIgniteFuture(submit); final TcHelper tcHelper = injector.getInstance(TcHelper.class); diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/LauncherIgniteClientMode.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/LauncherIgniteClientMode.java index 5f38f8d..1593256 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/LauncherIgniteClientMode.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/LauncherIgniteClientMode.java @@ -18,10 +18,11 @@ package org.apache.ignite.ci.web; import org.apache.ignite.Ignition; +import org.apache.ignite.ci.db.Ignite1Init; public class LauncherIgniteClientMode { public static void main(String[] args) throws Exception { - Ignition.setClientMode(true); + Ignite1Init.setClientMode(true); Launcher.runServer(true); } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java index f0839e8..45043a3 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java @@ -18,7 +18,8 @@ package org.apache.ignite.ci.web; import org.apache.ignite.ci.web.auth.AuthenticationFilter; -import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException; +import org.apache.ignite.ci.web.rest.exception.ServiceStartingException; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; import org.glassfish.jersey.logging.LoggingFeature; import org.glassfish.jersey.server.ResourceConfig; @@ -31,5 +32,6 @@ public class TcApplicationResCfg extends ResourceConfig { register(LoggingFeature.class); register(ServiceUnauthorizedException.class); + register(ServiceStartingException.class); } } 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 292fdb4..9c3798a 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 @@ -29,7 +29,7 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; -import org.apache.ignite.Ignite; + import org.apache.ignite.ci.HelperConfig; import org.apache.ignite.ci.ITeamcity; import org.apache.ignite.ci.analysis.FullChainRunCtx; @@ -40,7 +40,7 @@ import org.apache.ignite.ci.runners.CheckBuildChainResults; import org.apache.ignite.ci.user.ICredentialsProv; import org.apache.ignite.ci.web.BackgroundUpdater; import org.apache.ignite.ci.web.CtxListener; -import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; import org.apache.ignite.ci.web.model.chart.ChartData; import org.apache.ignite.ci.web.model.chart.TestsMetrics; import org.jetbrains.annotations.NotNull; @@ -100,8 +100,6 @@ public class Metrics { @GET @Path("failuresPrivateNoCache") @NotNull public TestsMetrics getFailuresPrivateNoCache() { - Ignite ignite = (Ignite)context.getAttribute(CtxListener.IGNITE); - //todo take from branches.json CheckBuildChainResults.BuildMetricsHistory history = new CheckBuildChainResults.BuildMetricsHistory(); final String serverId = "private"; 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 e844300..f5619ef 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 @@ -34,7 +34,7 @@ import org.apache.ignite.ci.github.PullRequest; 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.login.ServiceUnauthorizedException; +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; diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/CompareBuilds.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/CompareBuilds.java index f848fc2..6f0b04c 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/CompareBuilds.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/CompareBuilds.java @@ -38,7 +38,7 @@ import org.apache.ignite.ci.tcmodel.hist.BuildRef; 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.login.ServiceUnauthorizedException; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 0d8b69e..22ebd16 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 @@ -32,7 +32,7 @@ import org.apache.ignite.ci.web.model.current.BuildStatisticsSummary; import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus; import org.apache.ignite.ci.web.model.current.TestFailuresSummary; import org.apache.ignite.ci.web.model.current.UpdateInfo; -import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; import org.apache.ignite.ci.web.rest.parms.FullQueryParams; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/ServiceUnauthorizedException.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ServiceStartingException.java similarity index 62% copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/ServiceUnauthorizedException.java copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ServiceStartingException.java index cdd69af..20cb33b 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/ServiceUnauthorizedException.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ServiceStartingException.java @@ -15,30 +15,26 @@ * limitations under the License. */ -package org.apache.ignite.ci.web.rest.login; +package org.apache.ignite.ci.web.rest.exception; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @Provider -public class ServiceUnauthorizedException extends RuntimeException - implements ExceptionMapper<ServiceUnauthorizedException> { - public ServiceUnauthorizedException(String message) { - super(message); +public class ServiceStartingException extends RuntimeException + implements ExceptionMapper<ServiceStartingException> { + public ServiceStartingException(Exception e) { + super(e); } @SuppressWarnings("unused") - public ServiceUnauthorizedException() { - } - - public static ServiceUnauthorizedException noCreds(String serverId) { - return new ServiceUnauthorizedException("Service [" + serverId + "] is not available for current user"); + public ServiceStartingException() { } @Override - public Response toResponse(ServiceUnauthorizedException exception) { - return Response.status(424).entity(exception.getMessage()) + public Response toResponse(ServiceStartingException exception) { + return Response.status(418).entity(exception.getMessage()) .type("text/plain").build(); } } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/ServiceUnauthorizedException.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ServiceUnauthorizedException.java similarity index 97% rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/ServiceUnauthorizedException.java rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ServiceUnauthorizedException.java index cdd69af..f59be5d 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/ServiceUnauthorizedException.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ServiceUnauthorizedException.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.ignite.ci.web.rest.login; +package org.apache.ignite.ci.web.rest.exception; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; 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 cb9a958..5069c49 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 @@ -30,6 +30,7 @@ import org.apache.ignite.ci.web.CtxListener; import org.apache.ignite.ci.user.LoginResponse; import org.apache.ignite.ci.user.UserSession; import org.apache.ignite.ci.web.model.ServerDataResponse; +import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException; import javax.annotation.security.PermitAll; import javax.servlet.ServletContext; @@ -38,7 +39,6 @@ import javax.ws.rs.core.Context; import java.security.SecureRandom; import java.util.Arrays; import java.util.Collection; -import java.util.Iterator; @Path("login") @Produces("application/json") 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 9312f8a..efa4c6e 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 @@ -38,6 +38,8 @@ function showErrInLoadStatus(jqXHR, exception) { }, 1000); } else if (jqXHR.status === 403) { $("#loadStatus").html('Forbidden [403]'); + } else if( jqXHR.status === 418) { + $("#loadStatus").html('Services are starting [418], I’m a teapot'); } else if (jqXHR.status === 424) { $("#loadStatus").html('Dependency problem: [424]: ' + jqXHR.responseText); } else if (jqXHR.status === 500) { diff --git a/ignite-tc-helper-web/src/main/webapp/services.html b/ignite-tc-helper-web/src/main/webapp/services.html index 839ff3d..3ec895c 100644 --- a/ignite-tc-helper-web/src/main/webapp/services.html +++ b/ignite-tc-helper-web/src/main/webapp/services.html @@ -71,7 +71,7 @@ function showSuitesForTeamCityRunData(result) { } /** - * This form allows user to start TeamCity Run All build. + * This form allows user to startIgnite TeamCity Run All build. */ function showCommentJiraForm(result) { var res = "";