openvidu-server: disable KurentoClient remote operations for stopping INDIVIDUAL recording upon media server reconnection

pull/664/head
pabloFuente 2021-11-02 13:37:12 +01:00
parent a7332aac70
commit ada73560d6
2 changed files with 25 additions and 3 deletions

View File

@ -300,8 +300,19 @@ public class KurentoSession extends Session {
// Stop recording if session is being recorded
if (recordingManager.sessionIsBeingRecorded(this.sessionId)) {
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
Map<String, MediaOptions> mediaOptionsMap = new HashMap<>();

View File

@ -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);
}