I planned to put both global and room chat into DB for Wicket. I believe we should release what we already got and move to the HTML5 development :)
On Mon, Feb 4, 2013 at 10:43 AM, [email protected] < [email protected]> wrote: > ok thx, > > I guess we can also let the dashboard chat untouched. > Theoretically there is no need to put it into the database as long as the > clients initially always connect to the same node (as we did plan). > But the chat history in the conference room needs to be put into the db as > it could potentially happen that the next day/meeting the cluster decides > to put the room on another node. > > Sebastian > > > 2013/2/4 Maxim Solodovnik <[email protected]> > > > >> What about the chat, I have seen you made some changes to the chat > > lately > > >> Maxim? Is the Chat in the dashboard now in the database? > > > > I add chat to the DB for Wicket only (only global chat for now with small > > amount of testing) > > I had no plans to change it for Flash app > > > > > > > > On Mon, Feb 4, 2013 at 5:36 AM, [email protected] < > > [email protected] > > > wrote: > > > > > I would like to share the progress in the Cluster API. > > > For a design overview see: > > > > > > > > > https://cwiki.apache.org/confluence/display/OPENMEETINGS/Cluster+Master-Slave+overview > > > > > > Status: > > > The database session cache as alternative to the memory session cache > > does > > > work now (with a single server and the serverId commented out in the > > Spring > > > config). > > > So you can configure the Client to be stored in memory or in database > via > > > Spring config. > > > > > > What needs to be done: > > > 1) There are some places in the code where there is a hardcoded "null" > > for > > > the serverId. For example when updateing a Client. This was because in > a > > > former iteration of the Cluster API "null" meant the Client is on > > > "localhost". In the new API, the serverId should be always read from > the > > > org.apache.openmeetings.session.ServerUtil, which then reads it from > the > > > Spring config. > > > And in the future, when the server is in cluster mode, there is no > "null" > > > used anymore, serverId null simply means that there is no cluster > > > configured. > > > It might makes sense to throw an Exception upon startup: > > > If serverId == null and serverDao.getServers().size() > 0 => throw > > > Exception(" You have to configure a server for this instance to run the > > > cluster correctly). > > > + the serverId in the Spring config should become the "serverAdress" > > > > > > 2) There has to be a "clever" clean up job in the client table each > time > > > the server starts up. > > > Cause what can happen now is: If a server is shut down you still have > > > entries in the client table. The next time the server is startup, those > > > clients are of course no more online. But the server does not know. > > > A simply "delete all" will not work, cause in a cluster you will have > > > multiple servers writing to the same database, and you can't "delete > all" > > > because some servers might be still online. > > > So this is a bit tricky. > > > The idea would be: If the serverId is NULL (meaning no cluster > > configured) > > > It is save to delete all records in the clients-table upon server start > > > If the serverId is NOT NULL (cluster mode), then it you can still clean > > up: > > > - All clients with the serverId of the current server starting up > > > (cause no client can be already connected to a server that just boots) > > > - All clients that are assigned to a serverId in the tables > > "servers" > > > that either does not exist or where the server is flaged as "not > active". > > > - All clients that have a serverId null > > > > > > From my point of view those are the most important things for the > > session. > > > > > > The other issue is with the whiteboard. Whiteboard is stored in memory > > too > > > (because sync method is involved). > > > A conference room is always inside the same node of the server. But > what > > > could happen is, that the cluster gives the room upon the next > > day/meeting > > > to another server/node in the cluster. > > > Then the previously written stuff on the whiteboard would be gone (or > by > > > random chance if the same server is taken, you might get the same > > > whiteboard session object again). > > > Short story: The whiteboard session must be made configureable to be in > > > database too. And there has to be some clever trick to have only small > > > effects to the performance while syncing. > > > > > > What about the chat, I have seen you made some changes to the chat > lately > > > Maxim? Is the Chat in the dashboard now in the database? > > > > > > 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
