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

Reply via email to