openvidu-server: recording stop process fix

pull/375/head
pabloFuente 2019-07-01 13:51:16 +02:00
parent dd29173785
commit a00c90423b
3 changed files with 22 additions and 17 deletions

View File

@ -378,15 +378,18 @@ public class ComposedRecordingService extends RecordingService {
// TODO: DOWNLOAD FILE IF SCALABILITY MODE
final Recording[] finalRecordingArray = new Recording[1];
finalRecordingArray[0] = recording;
try {
this.recordingDownloader.downloadRecording(recording, null, () -> {
String filesPath = this.openviduConfig.getOpenViduRecordingPath() + recording.getId() + "/";
File videoFile = new File(filesPath + recording.getName() + ".webm");
this.recordingDownloader.downloadRecording(finalRecordingArray[0], null, () -> {
String filesPath = this.openviduConfig.getOpenViduRecordingPath() + finalRecordingArray[0].getId()
+ "/";
File videoFile = new File(filesPath + finalRecordingArray[0].getName() + ".webm");
long finalSize = videoFile.length();
double finalDuration = (double) compositeWrapper.getDuration() / 1000;
this.updateFilePermissions(filesPath);
finalRecordingArray[0] = this.sealRecordingMetadataFileAsReady(recording, finalSize, finalDuration,
filesPath + RecordingManager.RECORDING_ENTITY_FILE + recording.getId());
finalRecordingArray[0] = this.sealRecordingMetadataFileAsReady(finalRecordingArray[0], finalSize,
finalDuration,
filesPath + RecordingManager.RECORDING_ENTITY_FILE + finalRecordingArray[0].getId());
final long timestamp = System.currentTimeMillis();
cdr.recordRecordingStopped(finalRecordingArray[0], reason, timestamp);
@ -394,15 +397,15 @@ public class ComposedRecordingService extends RecordingService {
finalRecordingArray[0].getStatus());
});
} catch (IOException e) {
log.error("Error while downloading recording {}: {}", recording.getName(), e.getMessage());
log.error("Error while downloading recording {}: {}", finalRecordingArray[0].getName(), e.getMessage());
}
Recording finalRecording = finalRecordingArray[0] != null ? finalRecordingArray[0] : recording;
if (reason != null && session != null) {
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecording, reason);
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecordingArray[0],
reason);
}
return finalRecording;
return finalRecordingArray[0];
}
private void waitForVideoFileNotEmpty(Recording recording) throws OpenViduException {

View File

@ -115,9 +115,10 @@ public abstract class RecordingService {
recording.setStatus(status);
recording.setSize(size); // Size in bytes
recording.setDuration(duration > 0 ? duration : 0); // Duration in seconds
this.fileWriter.overwriteFile(metadataFilePath, recording.toJson().toString());
if (this.fileWriter.overwriteFile(metadataFilePath, recording.toJson().toString())) {
log.info("Sealed recording metadata file at {} with status [{}]", metadataFilePath, status.name());
}
return recording;
}

View File

@ -162,15 +162,16 @@ public class SingleStreamRecordingService extends RecordingService {
// TODO: DOWNLOAD FILES IF SCALABILITY MODE
final Recording[] finalRecordingArray = new Recording[1];
finalRecordingArray[0] = recording;
try {
this.recordingDownloader.downloadRecording(recording, wrappers.keySet(), () -> {
this.recordingDownloader.downloadRecording(finalRecordingArray[0], wrappers.keySet(), () -> {
// Update recording entity files with final file size
for (RecorderEndpointWrapper wrapper : wrappers.values()) {
if (wrapper.getSize() == 0) {
updateIndividualMetadataFile(wrapper);
}
}
finalRecordingArray[0] = this.sealMetadataFiles(recording);
finalRecordingArray[0] = this.sealMetadataFiles(finalRecordingArray[0]);
final long timestamp = System.currentTimeMillis();
cdr.recordRecordingStopped(finalRecordingArray[0], reason, timestamp);
@ -178,15 +179,15 @@ public class SingleStreamRecordingService extends RecordingService {
finalRecordingArray[0].getStatus());
});
} catch (IOException e) {
log.error("Error while downloading recording {}", recording.getName());
log.error("Error while downloading recording {}", finalRecordingArray[0].getName());
}
Recording finalRecording = finalRecordingArray[0] != null ? finalRecordingArray[0] : recording;
if (reason != null && session != null) {
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecording, reason);
this.recordingManager.sessionHandler.sendRecordingStoppedNotification(session, finalRecordingArray[0],
reason);
}
return finalRecording;
return finalRecordingArray[0];
}
public void startRecorderEndpointForPublisherEndpoint(Session session, String recordingId,