[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