Repository: openmeetings Updated Branches: refs/heads/master b3bd1a68d -> 58cf1917e
[OPENMEETINGS-1715] room recording on exit is fixed Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/58cf1917 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/58cf1917 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/58cf1917 Branch: refs/heads/master Commit: 58cf1917ed21b17fc05d8692efd754c97fe277e4 Parents: b3bd1a6 Author: Maxim Solodovnik <[email protected]> Authored: Wed Oct 4 17:22:15 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Wed Oct 4 17:22:15 2017 +0700 ---------------------------------------------------------------------- .../core/remote/RecordingService.java | 25 ++++++++++---------- .../core/remote/ScopeApplicationAdapter.java | 7 +++++- 2 files changed, 19 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/58cf1917/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java index 41fc468..ba43284 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java @@ -168,8 +168,12 @@ public class RecordingService implements IPendingServiceCallback { public void stopRecording(IScope scope, IClient client) { try { - //FIXME TODO The client who started the recording might already left the room !!!! - log.debug("stopRecordAndSave {}, {}", client.getLogin(), client.getRemoteAddress()); + Long recordingId = IClientUtil.getRecordingId(scope); + log.debug("stopRecordAndSave {}, {}, ID: {}", client.getLogin(), client.getRemoteAddress(), recordingId); + if (recordingId == null) { + log.error("Unable to find recordingId on recording stop"); + return; + } IApplication iapp = getApp(); Client recClient = null; for (Client c : iapp.getOmRoomClients(client.getRoomId())) { @@ -179,11 +183,14 @@ public class RecordingService implements IPendingServiceCallback { } } if (recClient == null) { - log.error("Unable to find recordingId on recording stop"); - return; + log.warn("Unable to find Recording client"); + } else { + WebSocketHelper.sendRoom(new TextRoomMessage(recClient.getRoomId(), recClient.getUserId(), RoomMessage.Type.recordingStoped, recClient.getSid())); + // Store to database + recClient.setRecordingId(null); + recClient.setRecordingStarted(false); + sessionManager.update(recClient); } - WebSocketHelper.sendRoom(new TextRoomMessage(recClient.getRoomId(), recClient.getUserId(), RoomMessage.Type.recordingStoped, recClient.getSid())); - // get all stream and stop recording them for (IConnection conn : scope.getClientConnections()) { if (conn != null && conn instanceof IServiceCapableConnection) { @@ -191,15 +198,9 @@ public class RecordingService implements IPendingServiceCallback { stopStreamRecord(scope, rcl); } } - // Store to database - Long recordingId = recClient.getRecordingId(); - recordingDao.updateEndTime(recordingId, new Date()); // Reset values - recClient.setRecordingId(null); - recClient.setRecordingStarted(false); - sessionManager.update(recClient); log.debug("recordingConverterTask {}", recordingConverter); Recording recording = recordingDao.get(recordingId); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/58cf1917/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java index f53d1af..5a259b5 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java @@ -391,7 +391,12 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp } public void dropSharing(org.apache.openmeetings.db.entity.basic.IClient c, Long roomId) { - IScope scope = getChildScope(String.valueOf(roomId)); + IScope scope = null; + try { + scope = getChildScope(String.valueOf(roomId)); + } catch (Exception e) { + //no-op, scope doesn't exist while testing + } //Elvis has left the building new MessageSender(scope, "stopStream", new Object(), this) { @Override
