Revert the index -> Add changes made in AvatarFactoryModule previously. It appears that in conjunction with MW's locking changes, that two threads may race to create the avatar
appearance in the TryGetAvatarAppearance() method. Moving off Add will mean the second replaces the first instead of throwing the exception. This may still not be a good permanent solution - more extensively locking or a code rearrangement could be better. I'm going to leave this in MW's much more familiar hands now.ThreadPoolClientBranch
parent
135a72d6ca
commit
1229503764
|
@ -72,7 +72,7 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
appearance.TextureEntry = AvatarAppearance.GetDefaultTextureEntry();
|
appearance.TextureEntry = AvatarAppearance.GetDefaultTextureEntry();
|
||||||
lock (m_avatarsAppearance)
|
lock (m_avatarsAppearance)
|
||||||
{
|
{
|
||||||
m_avatarsAppearance.Add(avatarId, appearance);
|
m_avatarsAppearance[avatarId] = appearance;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ namespace OpenSim.Region.Environment.Modules
|
||||||
//add appearance to dictionary cache
|
//add appearance to dictionary cache
|
||||||
lock (m_avatarsAppearance)
|
lock (m_avatarsAppearance)
|
||||||
{
|
{
|
||||||
m_avatarsAppearance.Add(avatarId, appearance);
|
m_avatarsAppearance[avatarId] = appearance;
|
||||||
}
|
}
|
||||||
|
|
||||||
//update database
|
//update database
|
||||||
|
|
Loading…
Reference in New Issue