You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2012/12/30 00:39:49 UTC
svn commit: r1426857 - in
/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings:
remote/red5/ScopeApplicationAdapter.java
test/cluster/TestHashMapStoreSyncUploadBackupBug.java
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;
+ }
+
+ }
+
+}