From 284ba1af9706eaa202869d692f88bd15f5a2ffe1 Mon Sep 17 00:00:00 2001
From: Aron Engineer <aron.engineer1@gmail.com>
Date: Fri, 5 Mar 2021 17:23:51 +0000
Subject: [PATCH] fix: Timeout exception response modified with typesafety.

---
 .../scala/org/bigbluebutton/ApiService.scala  | 30 +++++++++++--------
 .../core/BigBlueButtonActor.scala             |  3 +-
 .../service/HealthzService.scala              | 16 +++++-----
 3 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/ApiService.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/ApiService.scala
index c1d3dbad6e..93f4cd5d40 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/ApiService.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/ApiService.scala
@@ -29,19 +29,25 @@ class ApiService(healthz: HealthzService) extends JsonSupportProtocol {
         onSuccess(future) {
           case response =>
             if (response.isHealthy) {
-              complete(StatusCodes.OK, HealthResponse(
-                response.isHealthy,
-                response.pubSubSendStatus,
-                response.pubSubReceiveStatus,
-                response.recordingDBSendStatus
-              ))
+              complete(
+                StatusCodes.OK,
+                HealthResponse(
+                  response.isHealthy,
+                  response.pubSubSendStatus,
+                  response.pubSubReceiveStatus,
+                  response.recordingDBSendStatus
+                )
+              )
             } else {
-              complete(StatusCodes.ServiceUnavailable, HealthResponse(
-                response.isHealthy,
-                response.pubSubSendStatus,
-                response.pubSubReceiveStatus,
-                response.recordingDBSendStatus
-              ))
+              complete(
+                StatusCodes.ServiceUnavailable,
+                HealthResponse(
+                  response.isHealthy,
+                  response.pubSubSendStatus,
+                  response.pubSubReceiveStatus,
+                  response.recordingDBSendStatus
+                )
+              )
             }
         }
       }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
index 156be4b27f..8963b7057b 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
@@ -168,8 +168,7 @@ class BigBlueButtonActor(
 
   private def handleCheckAlivePingSysMsg(msg: CheckAlivePingSysMsg): Unit = {
     val event = MsgBuilder.buildCheckAlivePingSysMsg(msg.body.system, msg.body.bbbWebTimestamp, System.currentTimeMillis())
-    healthzService.sendSentStatusMessage(msg.body.akkaAppsTimestamp)
-    healthzService.sendReceiveStatusMessage(System.currentTimeMillis())
+    healthzService.sendPubSubStatusMessage(msg.body.akkaAppsTimestamp, System.currentTimeMillis())
     outGW.send(event)
   }
 
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/service/HealthzService.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/service/HealthzService.scala
index 7b8e53a8a3..19187f4a63 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/service/HealthzService.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/service/HealthzService.scala
@@ -44,17 +44,19 @@ class HealthzService(system: ActorSystem) {
     val future = healthActor.ask(GetHealthMessage).mapTo[GetHealthResponseMessage]
     future.recover {
       case e: AskTimeoutException => {
-        GetHealthResponseMessage(false, null, null, null)
+        GetHealthResponseMessage(
+          false,
+          PubSubSendStatus(false, String.valueOf(0L)),
+          PubSubReceiveStatus(false, String.valueOf(0L)),
+          RecordingDBSendStatus(false, String.valueOf(0L))
+        )
       }
     }
   }
 
-  def sendSentStatusMessage(timestamp: Long): Unit = {
-    healthActor ! SetPubSubSentStatus(timestamp)
-  }
-
-  def sendReceiveStatusMessage(timestamp: Long): Unit = {
-    healthActor ! SetPubSubReceiveStatus(timestamp)
+  def sendPubSubStatusMessage(sendTimestamp: Long, receiveTimestamp: Long): Unit = {
+    healthActor ! SetPubSubSentStatus(sendTimestamp)
+    healthActor ! SetPubSubReceiveStatus(receiveTimestamp)
   }
 
   def sendRecordingDBStatusMessage(timestamp: Long): Unit = {
-- 
GitLab