Maxim, you should be able to re-run your test. I have almost the same implementation now again for the memory based session. There might be a way of performance increase to have a second map, with the "scope" as key: Map<String,List<Client>> clientsByScope or Map<String,Map<String,Client>> clientsByScope (in this case the inner Map would have the streamid as primary key)
The scope is the only thing that does not change, cause you would need to disconnect from red5 to make this parameter changing. However I have not implemented it yet. The other implementation with multiple list would potentially work too, but you would have to make some wired copy actions whenever a parameter changes that is a key in a map at the same time. Sebastian 2013/2/1 [email protected] <[email protected]> > ... the roomId is also wrong by the way. You can see it by doing the > following: > Open two browser tabs and load openmeetings, go with one client in a > conference room but _not_ choose any device settings yet and keep the > device settings dialog open. > Go with the second browser in the admin > UI > connections. > You see both clients in the list with the roomId, now click on the one > that has no firstname/lastname, compare the publicSID to the other => > different, and roomId is null > Now confirm the device settings in the conference room. Go back to the > client list, refresh => compared publicSID's => same name, roomId is also > set but different?! > That is strange. > > Sebastian > > > 2013/2/1 [email protected] <[email protected]> > > Yes, >> >> I found out the root of the issue. The root is not the HashMap actually, >> the root is that we change the publicSID of the RTMP connection that >> connects to the SWF10 app dynamically. >> The SWF10 rtmp connection intially gets a publicSID assigned, but to >> makes sure the client has the same rights like the rtmp-connection to the >> SWF8 app, we do overwrite this publicSID with the one from the SWF8 app. >> But in the session cache we still have the rtmp-connection / client with >> the old publicSID in a list as key (to have fast access). This publicSID is >> never cleaned up. That is the issue. I will look into it now. >> >> Sebastian >> >> >> 2013/1/31 Maxim Solodovnik <[email protected]> >> >>> Here is the scenario to reproduce the weird behavior with publicSID: >>> >>> 1) login as user1 >>> 2) enter any room >>> 3) do nothing, exit the room >>> 4) repeat steps 2 and 3 5 times >>> 5) open Administration->Connections >>> >>> Result: clientsByServerAndPublicSID Server null Number of PublicSIDs: >>> *16* >>> * >>> * >>> I believe number of publicSIDs should be 1 >>> >>> 6) do logout >>> 7) do login >>> 8) open Administration->Connections >>> Result: clientsByServerAndPublicSID Server null Number of PublicSIDs: * >>> 16* >>> >>> >>> >>> >>> >>> On Thu, Jan 31, 2013 at 12:49 PM, Maxim Solodovnik <[email protected] >>> > wrote: >>> >>>> Also I believe address is more human-readable value in config than >>>> serverId :) >>>> >>>> >>>> On Thu, Jan 31, 2013 at 12:47 PM, Maxim Solodovnik < >>>> [email protected]> wrote: >>>> >>>>> The first issue was with >>>>> openmeetings-applicationContext.xml >>>>> >>>>> "null" in serverId was interpreted as String with value "null" (4 >>>>> characters) >>>>> >>>>> The second issue was with ManageCryptStyle, it was not autowired in >>>>> anonymous class >>>>> >>>>> Was tested on 2 machines (Linux+Windows) >>>>> >>>>> continue investigating >>>>> >>>>> >>>>> On Thu, Jan 31, 2013 at 12:36 PM, [email protected] < >>>>> [email protected]> wrote: >>>>> >>>>>> Are you sure you are using the default config files and a fresh build? >>>>>> Cause I don't have those errors. It seems like your >>>>>> openmeetings-applicationContext.xml is outdated or you did not svn >>>>>> update. >>>>>> >>>>>> Sebastian >>>>>> >>>>>> >>>>>> 2013/1/31 Maxim Solodovnik <[email protected]> >>>>>> >>>>>>> Currently OM is broken (on our side) >>>>>>> >>>>>>> Here is the part of stacktrace from OM log: >>>>>>> ERROR 01-31 12:09:40.339 ScopeApplicationAdapter.java 56269 199 >>>>>>> org.apache.openmeetings.remote.red5.ScopeApplicationAdapter >>>>>>> [http-nio-0.0.0.0-8088-exec-6] - roomJoin >>>>>>> java.lang.NumberFormatException: For input string: "null" >>>>>>> at >>>>>>> java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) >>>>>>> ~[na:1.7.0_04] >>>>>>> at java.lang.Long.parseLong(Long.java:441) ~[na:1.7.0_04] >>>>>>> at java.lang.Long.parseLong(Long.java:483) ~[na:1.7.0_04] >>>>>>> at >>>>>>> org.apache.openmeetings.session.ServerUtil.getCurrentServer(ServerUtil.java:76) >>>>>>> ~[na:na] >>>>>>> at >>>>>>> org.apache.openmeetings.session.SessionManager.addClientListItem(SessionManager.java:387) >>>>>>> ~[na:na] >>>>>>> at >>>>>>> org.apache.openmeetings.remote.red5.ScopeApplicationAdapter.roomConnect(ScopeApplicationAdapter.java:186) >>>>>>> ~[na:na] >>>>>>> at >>>>>>> org.red5.server.adapter.MultiThreadedApplicationAdapter.connect(MultiThreadedApplicationAdapter.java:326) >>>>>>> [red5.jar:na] >>>>>>> >>>>>>> >>>>>>> And part of stacktrace from red5.log: >>>>>>> >>>>>>> 2013-01-31 12:09:39,669 [NioProcessor-2] INFO >>>>>>> o.r.s.n.r.codec.RTMPProtocolDecoder - Action xmlcrm.getsessiondata >>>>>>> 2013-01-31 12:09:39,794 [NioProcessor-2] INFO >>>>>>> o.r.s.n.r.codec.RTMPProtocolDecoder - Action _error >>>>>>> 2013-01-31 12:09:39,845 [NioProcessor-2] INFO >>>>>>> o.r.s.n.r.codec.RTMPProtocolDecoder - Action getPublicSID >>>>>>> 2013-01-31 12:09:39,857 [NioProcessor-2] ERROR >>>>>>> o.r.server.service.ServiceInvoker - Error executing call: Service: null >>>>>>> Method: getPublicSID Num Params: 0 >>>>>>> java.lang.reflect.InvocationTargetException: null >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>> ~[na:1.7.0_04] >>>>>>> at >>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>>>> ~[na:1.7.0_04] >>>>>>> at >>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>> ~[na:1.7.0_04] >>>>>>> at java.lang.reflect.Method.invoke(Method.java:601) >>>>>>> ~[na:1.7.0_04] >>>>>>> at >>>>>>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:196) >>>>>>> [red5.jar:na] >>>>>>> at >>>>>>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:115) >>>>>>> [red5.jar:na] >>>>>>> at >>>>>>> org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:157) >>>>>>> [red5.jar:na] >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> I'm going to investigate, then will retest publicSID issue >>>>>>> >>>>>>> >>>>>>> On Thu, Jan 31, 2013 at 10:16 AM, [email protected] < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi Maxim, >>>>>>>> >>>>>>>> could you describe the use case that you had issue with the session >>>>>>>> not being correctly cleaned up? >>>>>>>> >>>>>>>> Thanks! >>>>>>>> Sebastian >>>>>>>> >>>>>>>> -- >>>>>>>> Sebastian Wagner >>>>>>>> https://twitter.com/#!/dead_lock >>>>>>>> http://www.webbase-design.de >>>>>>>> http://www.wagner-sebastian.com >>>>>>>> [email protected] >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> WBR >>>>>>> Maxim aka solomax >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sebastian Wagner >>>>>> https://twitter.com/#!/dead_lock >>>>>> http://www.webbase-design.de >>>>>> http://www.wagner-sebastian.com >>>>>> [email protected] >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> WBR >>>>> Maxim aka solomax >>>>> >>>> >>>> >>>> >>>> -- >>>> WBR >>>> Maxim aka solomax >>>> >>> >>> >>> >>> -- >>> WBR >>> Maxim aka solomax >>> >> >> >> >> -- >> Sebastian Wagner >> https://twitter.com/#!/dead_lock >> http://www.webbase-design.de >> http://www.wagner-sebastian.com >> [email protected] >> > > > > -- > Sebastian Wagner > https://twitter.com/#!/dead_lock > http://www.webbase-design.de > http://www.wagner-sebastian.com > [email protected] > -- Sebastian Wagner https://twitter.com/#!/dead_lock http://www.webbase-design.de http://www.wagner-sebastian.com [email protected]
