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 = "";

Reply via email to