From d8da83b4ff924587c14c888c2a992c56b9b76c80 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 11 Jun 2013 15:50:12 -0700 Subject: Removed the lock entirely --- .../UserManagement/UserManagementModule.cs | 108 ++++++++++----------- 1 file changed, 52 insertions(+), 56 deletions(-) (limited to 'OpenSim/Region/CoreModules/Framework/UserManagement') diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index ac21b53..864e181 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs @@ -56,7 +56,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement // The cache protected Dictionary m_UserCache = new Dictionary(); - private object m_AddUserLock = new object(); #region ISharedRegionModule @@ -476,75 +475,72 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement UserData oldUser; //lock the whole block - prevent concurrent update - lock (m_AddUserLock) - { - lock (m_UserCache) - m_UserCache.TryGetValue(id, out oldUser); + lock (m_UserCache) + m_UserCache.TryGetValue(id, out oldUser); - if (oldUser != null) + if (oldUser != null) + { + if (creatorData == null || creatorData == String.Empty) { - if (creatorData == null || creatorData == String.Empty) - { - //ignore updates without creator data - return; - } - - //try update unknown users - //and creator's home URL's - if ((oldUser.FirstName == "Unknown" && !creatorData.Contains("Unknown")) || (oldUser.HomeURL != null && !creatorData.StartsWith(oldUser.HomeURL))) - { - lock (m_UserCache) - m_UserCache.Remove(id); - m_log.DebugFormat("[USER MANAGEMENT MODULE]: Re-adding user with id {0}, creatorData [{1}] and old HomeURL {2}", id, creatorData, oldUser.HomeURL); - } - else - { - //we have already a valid user within the cache - return; - } + //ignore updates without creator data + return; } - UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, id); - - if (account != null) + //try update unknown users + //and creator's home URL's + if ((oldUser.FirstName == "Unknown" && !creatorData.Contains("Unknown")) || (oldUser.HomeURL != null && !creatorData.StartsWith(oldUser.HomeURL))) { - AddUser(id, account.FirstName, account.LastName); + lock (m_UserCache) + m_UserCache.Remove(id); + m_log.DebugFormat("[USER MANAGEMENT MODULE]: Re-adding user with id {0}, creatorData [{1}] and old HomeURL {2}", id, creatorData, oldUser.HomeURL); } else { - UserData user = new UserData(); - user.Id = id; + //we have already a valid user within the cache + return; + } + } - if (creatorData != null && creatorData != string.Empty) - { - //creatorData = ; + UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, id); - string[] parts = creatorData.Split(';'); - if (parts.Length >= 1) + if (account != null) + { + AddUser(id, account.FirstName, account.LastName); + } + else + { + UserData user = new UserData(); + user.Id = id; + + if (creatorData != null && creatorData != string.Empty) + { + //creatorData = ; + + string[] parts = creatorData.Split(';'); + if (parts.Length >= 1) + { + user.HomeURL = parts[0]; + try { - user.HomeURL = parts[0]; - try - { - Uri uri = new Uri(parts[0]); - user.LastName = "@" + uri.Authority; - } - catch (UriFormatException) - { - m_log.DebugFormat("[SCENE]: Unable to parse Uri {0}", parts[0]); - user.LastName = "@unknown"; - } + Uri uri = new Uri(parts[0]); + user.LastName = "@" + uri.Authority; + } + catch (UriFormatException) + { + m_log.DebugFormat("[SCENE]: Unable to parse Uri {0}", parts[0]); + user.LastName = "@unknown"; } - if (parts.Length >= 2) - user.FirstName = parts[1].Replace(' ', '.'); - } - else - { - user.FirstName = "Unknown"; - user.LastName = "UserUMMAU"; } - - AddUserInternal(user); + if (parts.Length >= 2) + user.FirstName = parts[1].Replace(' ', '.'); } + else + { + user.FirstName = "Unknown"; + user.LastName = "UserUMMAU"; + } + + AddUserInternal(user); } } -- cgit v1.1