[Opensim-dev] Update for group module & flotsam

Justin Clark-Casey jjustincc at googlemail.com
Fri Oct 12 22:47:57 UTC 2012


Hi Michelle.  I've now had some more time to think about this.  In fact, I established a proposal summary page at [1] 
which I'll change as we go along (or please feel free to change yourself).  We do need to fix this problem of group IM 
taking massive time with groups that aren't that big.

I do like the approach of caching online status (and login time) in the groups service.

1.  It's reasonably simple.
2.  One network call to fetch online group members per IM.
3.  May allow messaging across multiple OpenSimulator installations.

However, this approach does mean

1.  Independently updating the groups services on each login/logout.  I'm not saying this is a problem, particularly if 
it saves traffic later on.
2.  Groups service has to deal with extra information.  Again, this is fairly simple so not necessarily a fatal issue 
though it does mean every groups implementations needs to do this in some manner.
3.  Online cache is not reusable by other services in the future.

On a technical note, the XmlRpc groups module does in theory cache data for 30 seconds by default, so a change in online 
status may not be seen for upto 30 seconds.  I personally think that this is a reasonable tradeoff.

Rather, of the above cons, 3 is the one I'm finding most serious.  If other services would also benefit from online 
status caching in the future, they would have to implement their own caches (and be updated from simulators).

I do agree that making a GridUser.LoggedIn() call for every single group member on every single IM is unworkable.  Even 
if this is only done once and cached for a certain period of time it could be a major issue for large groups.

So an alternative approach could be to add a new call to GridUser service (maybe LoggedIn(List<UUID>) that will only 
return GridInfo for those that are logged in.  This could then be cached simulator-side for a certain period of time 
(e.g. 30 seconds like the groups information) and used for group IM.

This has the advantages that

1.  Groups and future services don't need to do their own login caching.
2.  Future services can use the same information and code rather than have to cache login information themselves.

However, it does

1.  Require GridUserInfo caching simulator-side, I would judge this to be a more complex approach.
2.  Mean that during the cache period, new online group messages will not receive messages.  (this is going to happen 
with GetGroupMembers() caching anyway).
3.  Traffic is still generated to the GridUser service at the end of every simulator-side caching period.  This is 
probably not a huge burden.

So right now, I'm somewhat more in favour of a GridUserInfo simulator-side caching approach than caching login 
information within the groups service.  However, unlike you, I haven't actually tried to implement this approach so 
there may well be issues that I haven't seen.

What do you think, Michelle (or anybody else)?

On 10/10/12 19:47, Michelle Argus wrote:
> http://code.google.com/p/flotsam/ is the the current flotsam version and points to the github repro which I forked and
> then patched.
>
> None of the changes I proposed in my git fork have been implemented, neither in opensim nor in flotsam.
>
>   Consider my proposal as a quick fix for the time beeing which does not solve all other issues mentioned by later
> mailings.
>
> Am 09.10.2012 10:24, schrieb Ai Austin:
>> Michelle Argus on Wed Oct 3 18:00:23 CEST 2012:
>>> I have added some changes to the group module of OpenSim and the flotsam server.
>>> ...
>>> The changes can be found in the 2 gits here: <https://github.com/MAReantals>https://github.com/MAReantals
>>>
>>> NB: Both changes to flotsam and opensim are backward compatible and do
>>> not require that both parts are updated. If some simulators are not
>>> updated it can happen that some groupmembers do not receive
>>> groupmessages as their online status is not updated correctly. In a grid
>>> like OSgrid my recomendation would thus be to first update the
>>> simulators and at a later stage flotsam.
>>
>> Hi Michelle... I am looking at what is needed to update the Openvue grid which is using the flotsam XmlRpcGroups
>> module.  the GITHub repository has the changes from a few days ago... but I wonder if there has been an update/commit
>> into the main Opensim Github area already.  I cannot see a  related commit looking back over the last week or so.  Is
>> the core system updated so this module is up to date in that?  I also note that the Opensim.ini.example file contains
>> a reference to http://code.google.com/p/flotsam/ for details of how to install the service.. but that seems to be
>> pointing at an out of date version?
>>
>> I think for the flotsam php end it is straightforward and I obtained the changed groups.sql and xmlrpc.php files
>> needed.  But note that people are still pointed via the opensim.ini.example comments at the old version on
>> http://code.google.com/p/flotsam/ so that either needs updating to teh latest version, or the comment in
>> opensim.ini.exmaple needs to be changed.
>>
>> To avoid mistakes, I wonder if you can clarify where to go for the parts needed and at what revision/date of OpenSim
>> 0.7.5 dev master this was introduced, what to get and what to change for an existing service in terms of the data base
>> tables, OpenSim.exe instance and the web support php code areas?
>>
>> Thanks Michelle, Ai
>>
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>


-- 
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc



More information about the Opensim-dev mailing list