From d5b3b9dde7690a4444ac5dac24e0bc7224cc16d2 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 12 Jun 2020 12:16:36 +0200 Subject: [PATCH] openvidu-server: automatic recording cancelation also for ALWAYS recordings --- .../server/kurento/core/KurentoSessionManager.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java index 8807ff9f..73426070 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSessionManager.java @@ -129,7 +129,8 @@ public class KurentoSessionManager extends SessionManager { } } else { - String error = "Timeout of " + KmsManager.MAX_SECONDS_LOCK_WAIT + " seconds waiting to acquire lock"; + String error = "Timeout of " + KmsManager.MAX_SECONDS_LOCK_WAIT + + " seconds waiting to acquire lock"; log.error(error); sessionEventsHandler.onParticipantJoined(participant, sessionId, null, transactionId, new OpenViduException(Code.ROOM_CANNOT_BE_CREATED_ERROR_CODE, error)); @@ -398,6 +399,8 @@ public class KurentoSessionManager extends SessionManager { && MediaMode.ROUTED.equals(kSession.getSessionProperties().mediaMode()) && kSession.getActivePublishers() == 0) { + // There were no previous publishers in the session + try { if (kSession.recordingLock.tryLock(15, TimeUnit.SECONDS)) { try { @@ -406,15 +409,16 @@ public class KurentoSessionManager extends SessionManager { && !recordingManager.sessionIsBeingRecorded(kSession.getSessionId()) && !kSession.recordingManuallyStopped.get()) { // Start automatic recording for sessions configured with RecordingMode.ALWAYS + // that have not been been manually stopped new Thread(() -> { recordingManager.startRecording(kSession, new RecordingProperties.Builder().name("") .outputMode(kSession.getSessionProperties().defaultOutputMode()) .recordingLayout(kSession.getSessionProperties().defaultRecordingLayout()) .customLayout(kSession.getSessionProperties().defaultCustomLayout()).build()); }).start(); - } else if (RecordingMode.MANUAL.equals(kSession.getSessionProperties().recordingMode()) - && recordingManager.sessionIsBeingRecorded(kSession.getSessionId())) { - // Abort automatic recording stop (user published before timeout) + } else if (recordingManager.sessionIsBeingRecorded(kSession.getSessionId())) { + // Abort automatic recording stop thread for any recorded session in which a + // user published before timeout log.info( "Participant {} published before timeout finished. Aborting automatic recording stop", participant.getParticipantPublicId());