diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs index a9e2780dfd..9813756469 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs @@ -86,7 +86,30 @@ namespace OpenSim.Framework.Communications.Cache } } } - } + } + + /// + /// Remove this user's profile cache. + /// + /// + /// true if the user was successfully removed, false otherwise + public bool RemoveUser(LLUUID userID) + { + lock (m_userProfiles) + { + if (m_userProfiles.ContainsKey(userID)) + { + m_userProfiles.Remove(userID); + return true; + } + else + { + m_log.WarnFormat("[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userID); + } + } + + return false; + } /// /// Request the inventory data for the given user. This will occur asynchronously if running on a grid diff --git a/OpenSim/Framework/Communications/LoginResponse.cs b/OpenSim/Framework/Communications/LoginResponse.cs index 9636d167fd..1b88d1019c 100644 --- a/OpenSim/Framework/Communications/LoginResponse.cs +++ b/OpenSim/Framework/Communications/LoginResponse.cs @@ -247,7 +247,7 @@ namespace OpenSim.Framework.UserManagement { return GenerateFailureResponse( "key", - "The agent inventory service is not responding. Please notify your region operator.", + "The agent inventory service is not responding. Please notify your login region operator.", "false"); } diff --git a/OpenSim/Grid/InventoryServer/GridInventoryService.cs b/OpenSim/Grid/InventoryServer/GridInventoryService.cs index 8a45badc20..f7c9828340 100644 --- a/OpenSim/Grid/InventoryServer/GridInventoryService.cs +++ b/OpenSim/Grid/InventoryServer/GridInventoryService.cs @@ -110,7 +110,7 @@ namespace OpenSim.Grid.InventoryServer public InventoryCollection GetUserInventory(Guid rawUserID) { // uncomment me to simulate an overloaded inventory server - //Thread.Sleep(40000); + //Thread.Sleep(25000); LLUUID userID = new LLUUID(rawUserID); diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index c5ed958ebc..a3f6948960 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1696,6 +1696,8 @@ namespace OpenSim.Region.Environment.Scenes m_sceneGridService.SendCloseChildAgentConnections(agentID, childknownRegions); RemoveCapsHandler(agentID); + + CommsManager.UserProfileCacheService.RemoveUser(agentID); } m_eventManager.TriggerClientClosed(agentID);