From e65ada9ab3a7fab736a72c0b803cfe438d3554f2 Mon Sep 17 00:00:00 2001
From: Ludovic Claude <ludovic.claude@laposte.net>
Date: Sun, 20 May 2018 22:32:15 +0200
Subject: [PATCH] Add Bugsnag

---
 pom.xml                                       |  6 ++++++
 .../mip/configuration/AkkaConfiguration.java  | 20 ++++++++++++++-----
 .../hbp/mip/configuration/BugsnagConfig.java  | 13 ++++++++++++
 3 files changed, 34 insertions(+), 5 deletions(-)
 create mode 100644 src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java

diff --git a/pom.xml b/pom.xml
index fd1cd3319..36b30fcd0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -249,6 +249,12 @@
             <version>${scala.release.version}</version>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>com.bugsnag</groupId>
+            <version>[3.0,4.0)</version>
+            <artifactId>bugsnag</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java
index 4f4ae846f..59375f7ab 100644
--- a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java
@@ -4,9 +4,11 @@ import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.actor.ExtendedActorSystem;
 import akka.cluster.Cluster;
+import akka.cluster.Member;
 import akka.cluster.pubsub.DistributedPubSub;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +17,7 @@ import org.springframework.context.annotation.*;
 
 import java.util.List;
 import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 import static eu.hbp.mip.akka.SpringExtension.SPRING_EXTENSION_PROVIDER;
 
@@ -73,11 +76,18 @@ class AkkaConfiguration {
                     semaphore.release();
                 });
 
-        try {
-            semaphore.acquire();
-            Thread.sleep(5000);
-        } catch (InterruptedException e) {
-            LOGGER.warn("Cannot wait for Akka cluster start", e);
+        for (Member member: cluster.state().getMembers()) {
+            LOGGER.info("Member " + StringUtils.join(member.getRoles(), ",") + " at " + member.address().toString() + " is in the cluster");
+        }
+
+        if (cluster.state().members().size() < 2) {
+            LOGGER.info("Waiting for Woken cluster connection...");
+            try {
+                semaphore.tryAcquire(5, TimeUnit.MINUTES);
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                LOGGER.warn("Cannot wait for Akka cluster start", e);
+            }
         }
 
         Runtime.getRuntime().addShutdownHook(new Thread(() -> {
diff --git a/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java b/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java
new file mode 100644
index 000000000..c39970604
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/configuration/BugsnagConfig.java
@@ -0,0 +1,13 @@
+package eu.hbp.mip.configuration;
+
+import com.bugsnag.Bugsnag;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class BugsnagConfig {
+    @Bean
+    public Bugsnag bugsnag() {
+        return new Bugsnag("dff301aa15eb795a6d8b22b600586f77");
+    }
+}
\ No newline at end of file
-- 
GitLab