Author: sebawagner
Date: Sat Jun  2 14:29:01 2012
New Revision: 1345512

URL: http://svn.apache.org/viewvc?rev=1345512&view=rev
Log:
OPENMEETINGS-270 Workaround to manually finish the recording in case of issues

Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/FLVRecorderService.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/FLVRecorderService.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/FLVRecorderService.java?rev=1345512&r1=1345511&r2=1345512&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/FLVRecorderService.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/FLVRecorderService.java
 Sat Jun  2 14:29:01 2012
@@ -47,6 +47,7 @@ import org.openmeetings.app.data.user.Us
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
 import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
 import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingLog;
+import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
 import org.openmeetings.app.remote.red5.ClientListManager;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
 import org.openmeetings.utils.math.CalendarPatterns;
@@ -106,6 +107,8 @@ public class FLVRecorderService implemen
        private AuthLevelmanagement authLevelManagement;
        @Autowired
        private FlvRecordingMetaDeltaDaoImpl flvRecordingMetaDeltaDao;
+       @Autowired
+       private FlvRecordingMetaDataDaoImpl flvRecordingMetaDataDaoImpl = null;
 
        public void resultReceived(IPendingServiceCall arg0) {
        }
@@ -385,35 +388,44 @@ public class FLVRecorderService implemen
                        
                        log.debug("Stream Closing :: " + 
flvRecordingMetaDataId);
                        
+                       ClientBroadcastStream stream = (ClientBroadcastStream) 
streamToClose;
+
+                       //the stream can be null if the user just closes the 
browser 
+                       //without canceling the recording before leaving
+                       if (stream != null) {
+                               //Iterate through all stream listeners and stop 
the appropriate
+                               if (stream.getStreamListeners() != null) {
+       
+                                       for (IStreamListener iStreamListener : 
stream
+                                                       .getStreamListeners()) {
+                                               
stream.removeStreamListener(iStreamListener);
+                                       }
+                               }
+                       }
+                       
                        if (listenerAdapter == null) {
                                
                                log.debug("Stream Not Found :: " + 
flvRecordingMetaDataId);
-                               log.debug("Available Stream :: ");
+                               log.debug("Available Streams :: 
"+streamListeners.size());
                                
                                for (Long entryKey : streamListeners.keySet()) {
                                        log.debug("Stored 
flvRecordingMetaDataId in Map: "+ entryKey);
                                }
                                
+                               //Manually call finish on the stream so that 
there is no endless loop waiting  
+                               //in the FlvRecorderConverter waiting for the 
stream to finish
+                               //this would normally happen in the Listener
+                               FlvRecordingMetaData flvRecordingMetaData = 
flvRecordingMetaDataDaoImpl.
+                                                       
getFlvRecordingMetaDataById(flvRecordingMetaDataId);
+                               
flvRecordingMetaData.setStreamReaderThreadComplete(true);
+                               
flvRecordingMetaDataDaoImpl.updateFlvRecordingMetaData(flvRecordingMetaData);
+                               
                                throw new IllegalStateException("Could not find 
Listener to stop! flvRecordingMetaDataId "+flvRecordingMetaDataId);
                        }
                        
                        listenerAdapter.closeStream();
                        streamListeners.remove(flvRecordingMetaDataId);
-
-                       ClientBroadcastStream stream = (ClientBroadcastStream) 
streamToClose;
-
-                       //the stream can be null if the user just closes the 
browser without canceling the 
-                       //recording before leaving
-                       if (stream != null) {
-                               //Iterate through all stream listeners and stop 
the appropriate
-                               if (stream.getStreamListeners() != null) {
-       
-                                       for (IStreamListener iStreamListener : 
stream
-                                                       .getStreamListeners()) {
-                                               
stream.removeStreamListener(iStreamListener);
-                                       }
-                               }
-                       }
+                       
 
                } catch (Exception err) {
                        log.error("[stopRecordingShow]", err);


Reply via email to