[Opensim-dev] On Mantis #1370 (avatar persistence)
Johan Berntsson
johan at 3di.jp
Fri Jun 6 07:07:18 UTC 2008
Hi,
We have discussed #1370 and looked at the code and we are a bit
confused. Currently these events seems to occur when a client logs onto
a region:
Region receives UseCircuitCode packet, and calls GetAppearance().
GetAppearance needs InventoryFolder which has not yet been created, and
fails every time.
A bit later the region receives a CompletedAgentMovement packet, and
calls GetInventory(). It then calls GetAppearance() once again. If
GetInventory succeeded, then GetAppearance() also succeeds, and avatar
persistence works.
Here are some ideas/questions:
1. GetInventory() is asynchronous but GetAppearance() doesn't check if
it has been completed or not. This probably explains why some people
experience #1370 while it works for others (the unlucky guys have slow
computers/networks).
2. GetAppearance() is using InventoryFolder to get asset IDs even though
the inventory asset IDs are available in 'avatarappearance' in the DB.
The information seems to be duplicated. Can't we use the DB IDs
directly? In that case we don't need to synchronize GetInventory() and
GetAppearance().
3. One of the GetAppearance() calls seem redundant, but which? Should we
call GetApperance after UseCircuitCode or CompletedAgentMovement?
We think it would work if we removed the GetInventory() dependency in
GetAppearance() and the second call to GetApperance(), but we are
reluctant to commit the change since we don't understand the design
completely. Hope you can enlighten us.
Cheers,
Johan
More information about the Opensim-dev
mailing list