From b305c9211f21bc9685e0118fe18089fb53962756 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Thu, 26 Nov 2020 13:46:29 +0100 Subject: [PATCH] openvidu-server: allow recordings in waiting-idle-to-terminate Media Nodes --- .../io/openvidu/server/kurento/kms/FixedOneKmsManager.java | 2 +- .../java/io/openvidu/server/kurento/kms/KmsManager.java | 2 +- .../openvidu/server/recording/service/RecordingManager.java | 2 +- .../java/io/openvidu/server/rest/SessionRestController.java | 6 +++++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/FixedOneKmsManager.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/FixedOneKmsManager.java index 324b903d..628ad618 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/FixedOneKmsManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/FixedOneKmsManager.java @@ -54,7 +54,7 @@ public class FixedOneKmsManager extends KmsManager { } @Override - public boolean isMediaNodeRunning(String mediaNodeId) { + public boolean isMediaNodeAvailableForRecording(String mediaNodeId) { return true; } diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/KmsManager.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/KmsManager.java index d9460dde..1571fb69 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/KmsManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/kms/KmsManager.java @@ -357,7 +357,7 @@ public abstract class KmsManager { public abstract List initializeKurentoClients(List kmsProperties, boolean disconnectUponFailure) throws Exception; - public abstract boolean isMediaNodeRunning(String mediaNodeId); + public abstract boolean isMediaNodeAvailableForRecording(String mediaNodeId); @PostConstruct protected abstract void postConstructInitKurentoClients(); diff --git a/openvidu-server/src/main/java/io/openvidu/server/recording/service/RecordingManager.java b/openvidu-server/src/main/java/io/openvidu/server/recording/service/RecordingManager.java index 2c5092ff..fc32b293 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/recording/service/RecordingManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/recording/service/RecordingManager.java @@ -269,7 +269,7 @@ public class RecordingManager { // 1. INCREMENT ACTIVE RECORDINGS OF MEDIA NODE HERE ((KurentoSession) session).getKms().incrementActiveRecordings(); // 2. CHECK THAT MEDIA NODE HAS RUNNING STATUS. IF NOT THEN FAIL RECORDING START - if (!kmsManager.isMediaNodeRunning(properties.mediaNode())) { + if (!kmsManager.isMediaNodeAvailableForRecording(properties.mediaNode())) { throw new OpenViduException(Code.MEDIA_NODE_STATUS_WRONG, "Media Node " + properties.mediaNode() + " status is not \"running\""); } diff --git a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java index ddbb53f9..f48299e3 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java @@ -49,6 +49,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import io.openvidu.client.OpenViduException; +import io.openvidu.client.OpenViduException.Code; import io.openvidu.client.internal.ProtocolElements; import io.openvidu.java.client.ConnectionProperties; import io.openvidu.java.client.ConnectionType; @@ -379,8 +380,11 @@ public class SessionRestController { return new ResponseEntity<>(startedRecording.toJson().toString(), RestUtils.getResponseHeaders(), HttpStatus.OK); } catch (OpenViduException e) { + HttpStatus status = e.getCodeValue() == Code.MEDIA_NODE_STATUS_WRONG.getValue() + ? HttpStatus.SERVICE_UNAVAILABLE + : HttpStatus.INTERNAL_SERVER_ERROR; return new ResponseEntity<>("Error starting recording: " + e.getMessage(), RestUtils.getResponseHeaders(), - HttpStatus.INTERNAL_SERVER_ERROR); + status); } }