diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java index 223855bf..08b29574 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java @@ -300,7 +300,18 @@ public class KurentoSession extends Session { // Stop recording if session is being recorded if (recordingManager.sessionIsBeingRecorded(this.sessionId)) { - this.recordingManager.forceStopRecording(this, EndReason.mediaServerReconnect, kmsDisconnectionTime); + if (recordingManager.sessionIsBeingRecordedIndividual(this.sessionId)) { + // Disable KurentoClient RecorderEndpoint operations + try { + RemoteOperationUtils.setToSkipRemoteOperations(); + this.recordingManager.forceStopRecording(this, EndReason.mediaServerReconnect, + kmsDisconnectionTime); + } finally { + RemoteOperationUtils.revertToRunRemoteOperations(); + } + } else { + this.recordingManager.forceStopRecording(this, EndReason.mediaServerReconnect, kmsDisconnectionTime); + } } // Store MediaOptions for resetting PublisherEndpoints later 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 5033bd1b..2a9cfadd 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 @@ -381,8 +381,7 @@ public class RecordingManager { } public Recording forceStopRecording(Session session, EndReason reason, Long kmsDisconnectionTime) { - Recording recording; - recording = this.sessionsRecordings.get(session.getSessionId()); + Recording recording = this.sessionsRecordings.get(session.getSessionId()); ((RecordingService) singleStreamRecordingService).sealRecordingMetadataFileAsStopped(recording); final long timestamp = System.currentTimeMillis(); @@ -493,6 +492,18 @@ public class RecordingManager { || this.sessionsRecordingsStarting.get(sessionId) != null); } + public boolean sessionIsBeingRecordedIndividual(String sessionId) { + if (!sessionIsBeingRecorded(sessionId)) { + return false; + } else { + Recording recording = this.sessionsRecordings.get(sessionId); + if (recording == null) { + recording = this.sessionsRecordingsStarting.get(sessionId); + } + return OutputMode.INDIVIDUAL.equals(recording.getOutputMode()); + } + } + public Recording getStartedRecording(String recordingId) { return this.startedRecordings.get(recordingId); }