Author: sebawagner
Date: Sat Dec 29 23:39:49 2012
New Revision: 1426857
URL: http://svn.apache.org/viewvc?rev=1426857&view=rev
Log:
OPENMEETINGS-460 Fixes Exception in sendUpload Complete Message when doing a
import
Added:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncUploadBackupBug.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1426857&r1=1426856&r2=1426857&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
Sat Dec 29 23:39:49 2012
@@ -2517,6 +2517,7 @@ public class ScopeApplicationAdapter ext
if (currentClient != null) {
sendMessageWithClientByPublicSID(message,
publicSID);
+ return;
}
//Check if the client is on any slave host
@@ -2527,11 +2528,17 @@ public class ScopeApplicationAdapter ext
"Could not Find RoomClient on
List publicSID: "+ publicSID);
}
- Server s = clientSessionInfo.getServerId() != null ?
serverDao.get(clientSessionInfo.getServerId()) : null;
- if (s != null) {
- // no need to sync on slave if server is null
- clusterSlaveJob.syncMessageToClientOnSlave(s,
clientSessionInfo.getRcl().getPublicSID() , message);
+ Server s = clientSessionInfo.getServerId() != null ?
serverDao
+ .get(clientSessionInfo.getServerId()) :
null;
+ if (s == null) {
+ throw new Exception("Found session has the
server null rcl: "
+ + clientSessionInfo.getRcl() +
" serverId: "
+ +
clientSessionInfo.getServerId() + " publicSID: "
+ + publicSID);
}
+
+ clusterSlaveJob.syncMessageToClientOnSlave(s,
clientSessionInfo.getRcl().getPublicSID() , message);
+
} catch (Exception err) {
log.error("[sendMessageWithClient] ", err);
}
Added:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncUploadBackupBug.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncUploadBackupBug.java?rev=1426857&view=auto
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncUploadBackupBug.java
(added)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/cluster/TestHashMapStoreSyncUploadBackupBug.java
Sat Dec 29 23:39:49 2012
@@ -0,0 +1,95 @@
+package org.apache.openmeetings.test.cluster;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.math.BigInteger;
+import java.util.Date;
+import java.util.Random;
+
+import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.openmeetings.conference.room.ClientListHashMapStore;
+import org.apache.openmeetings.conference.room.RoomClient;
+import org.apache.openmeetings.conference.room.cache.HashMapStore;
+import org.apache.openmeetings.test.AbstractOpenmeetingsSpringTest;
+import org.apache.openmeetings.utils.crypt.ICryptString;
+import org.apache.openmeetings.utils.crypt.MD5Implementation;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class TestHashMapStoreSyncUploadBackupBug extends
AbstractOpenmeetingsSpringTest {
+
+ protected static final Logger log = Red5LoggerFactory.getLogger(
+ TestHashMapStoreSyncUploadBackupBug.class,
OpenmeetingsVariables.webAppRootKey);
+
+ private ClientListHashMapStoreTesting sessionManager = new
ClientListHashMapStoreTesting();
+
+ @Test
+ public void doClientTest() {
+
+ log.debug("Cache size " +
sessionManager.getAllClients().size());
+
+ this.sessionManager.addClientListItem("streamId0", "hibernate",
+ 123, "localhost", "", false);
+
+ RoomClient rcl =
this.sessionManager.getClientByStreamId("streamId0", null);
+
+ log.debug("rcl: "+rcl);
+
+ RoomClient rcl2 =
this.sessionManager.getClientByPublicSID(rcl.getPublicSID(), false, null);
+
+ log.debug("rcl2: "+rcl2);
+
+ assertNotNull(rcl2);
+
+ }
+
+ private class ClientListHashMapStoreTesting extends
ClientListHashMapStore {
+
+ public synchronized RoomClient addClientListItem(String
streamId,
+ String scopeName, Integer remotePort, String
remoteAddress,
+ String swfUrl, boolean isAVClient) {
+ try {
+
+ // Store the Connection into a bean and add it
to the HashMap
+ RoomClient rcm = new RoomClient();
+ rcm.setConnectedSince(new Date());
+ rcm.setStreamid(streamId);
+ rcm.setScope(scopeName);
+
+ long random = System.currentTimeMillis()
+ + new BigInteger(256, new
Random()).longValue();
+
+ ICryptString cryptStyle = new
MD5Implementation();
+
+
rcm.setPublicSID(cryptStyle.createPassPhrase(String.valueOf(
+ random).toString()));
+
+ rcm.setUserport(remotePort);
+ rcm.setUserip(remoteAddress);
+ rcm.setSwfurl(swfUrl);
+ rcm.setIsMod(new Boolean(false));
+ rcm.setCanDraw(new Boolean(false));
+ rcm.setIsAVClient(isAVClient);
+
+ if (cache.containsKey(null, streamId)) {
+ log.error("Tried to add an existing
Client " + streamId);
+ return null;
+ }
+
+ cache.put(null, rcm.getStreamid(), rcm);
+
+ return rcm;
+ } catch (Exception err) {
+ log.error("[addClientListItem]", err);
+ }
+ return null;
+ }
+
+ public HashMapStore getCache() {
+ return cache;
+ }
+
+ }
+
+}