thingsboard-developers

Details

diff --git a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
index 9527171..a2ea048 100644
--- a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
+++ b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
@@ -114,7 +114,7 @@ public class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcesso
     private String deviceType;
     private TbMsgMetaData defaultMetaData;
 
-    public DeviceActorMessageProcessor(ActorSystemContext systemContext, LoggingAdapter logger, TenantId tenantId, DeviceId deviceId) {
+    DeviceActorMessageProcessor(ActorSystemContext systemContext, LoggingAdapter logger, TenantId tenantId, DeviceId deviceId) {
         super(systemContext, logger);
         this.tenantId = tenantId;
         this.deviceId = deviceId;
diff --git a/application/src/main/java/org/thingsboard/server/actors/session/SessionManagerActor.java b/application/src/main/java/org/thingsboard/server/actors/session/SessionManagerActor.java
index 624a9f4..9039d30 100644
--- a/application/src/main/java/org/thingsboard/server/actors/session/SessionManagerActor.java
+++ b/application/src/main/java/org/thingsboard/server/actors/session/SessionManagerActor.java
@@ -15,13 +15,17 @@
  */
 package org.thingsboard.server.actors.session;
 
+import akka.actor.ActorInitializationException;
 import akka.actor.ActorRef;
 import akka.actor.InvalidActorNameException;
 import akka.actor.LocalActorRef;
+import akka.actor.OneForOneStrategy;
 import akka.actor.Props;
+import akka.actor.SupervisorStrategy;
 import akka.actor.Terminated;
 import akka.event.Logging;
 import akka.event.LoggingAdapter;
+import akka.japi.Function;
 import org.thingsboard.server.actors.ActorSystemContext;
 import org.thingsboard.server.actors.service.ContextAwareActor;
 import org.thingsboard.server.actors.service.ContextBasedCreator;
@@ -34,6 +38,7 @@ import org.thingsboard.server.common.msg.cluster.ClusterEventMsg;
 import org.thingsboard.server.common.msg.core.ActorSystemToDeviceSessionActorMsg;
 import org.thingsboard.server.common.msg.core.SessionCloseMsg;
 import org.thingsboard.server.common.msg.session.SessionCtrlMsg;
+import scala.concurrent.duration.Duration;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -46,12 +51,17 @@ public class SessionManagerActor extends ContextAwareActor {
 
     private final Map<String, ActorRef> sessionActors;
 
-    public SessionManagerActor(ActorSystemContext systemContext) {
+    SessionManagerActor(ActorSystemContext systemContext) {
         super(systemContext);
         this.sessionActors = new HashMap<>(INITIAL_SESSION_MAP_SIZE);
     }
 
     @Override
+    public SupervisorStrategy supervisorStrategy() {
+        return strategy;
+    }
+
+    @Override
     protected boolean process(TbActorMsg msg) {
         //TODO Move everything here, to work with TbActorMsg
         return false;
@@ -160,4 +170,11 @@ public class SessionManagerActor extends ContextAwareActor {
         }
     }
 
+    private final SupervisorStrategy strategy = new OneForOneStrategy(3, Duration.create("1 minute"), new Function<Throwable, SupervisorStrategy.Directive>() {
+        @Override
+        public SupervisorStrategy.Directive apply(Throwable t) {
+            logger.error(t, "Unknown failure");
+            return SupervisorStrategy.stop();
+        }
+    });
 }
diff --git a/application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java b/application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java
index b4ab0d2..460b64c 100644
--- a/application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java
+++ b/application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java
@@ -15,6 +15,7 @@
  */
 package org.thingsboard.server.actors.tenant;
 
+import akka.actor.ActorInitializationException;
 import akka.actor.ActorRef;
 import akka.actor.OneForOneStrategy;
 import akka.actor.Props;
@@ -170,7 +171,11 @@ public class TenantActor extends RuleChainManagerActor {
         @Override
         public SupervisorStrategy.Directive apply(Throwable t) {
             logger.error(t, "Unknown failure");
-            return SupervisorStrategy.resume();
+            if(t instanceof ActorInitializationException){
+                return SupervisorStrategy.stop();
+            } else {
+                return SupervisorStrategy.resume();
+            }
         }
     });