mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: disable KurentoClient remote operations for stopping INDIVIDUAL recording upon media server reconnection
parent
a7332aac70
commit
ada73560d6
|
@ -300,7 +300,18 @@ public class KurentoSession extends Session {
|
||||||
|
|
||||||
// Stop recording if session is being recorded
|
// Stop recording if session is being recorded
|
||||||
if (recordingManager.sessionIsBeingRecorded(this.sessionId)) {
|
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
|
// Store MediaOptions for resetting PublisherEndpoints later
|
||||||
|
|
|
@ -381,8 +381,7 @@ public class RecordingManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Recording forceStopRecording(Session session, EndReason reason, Long kmsDisconnectionTime) {
|
public Recording forceStopRecording(Session session, EndReason reason, Long kmsDisconnectionTime) {
|
||||||
Recording recording;
|
Recording recording = this.sessionsRecordings.get(session.getSessionId());
|
||||||
recording = this.sessionsRecordings.get(session.getSessionId());
|
|
||||||
|
|
||||||
((RecordingService) singleStreamRecordingService).sealRecordingMetadataFileAsStopped(recording);
|
((RecordingService) singleStreamRecordingService).sealRecordingMetadataFileAsStopped(recording);
|
||||||
final long timestamp = System.currentTimeMillis();
|
final long timestamp = System.currentTimeMillis();
|
||||||
|
@ -493,6 +492,18 @@ public class RecordingManager {
|
||||||
|| this.sessionsRecordingsStarting.get(sessionId) != null);
|
|| 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) {
|
public Recording getStartedRecording(String recordingId) {
|
||||||
return this.startedRecordings.get(recordingId);
|
return this.startedRecordings.get(recordingId);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue