From 4fb2d7037358c320540edc3b2f5660e3cb3531a6 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sat, 1 Nov 2008 15:10:45 +0000 Subject: A stab a getting the user server to act right. Move acquisition of the locks to just before the try/catch/finally block, so that an exception thrown between taking the lock and entering the try doesn't leave a mutex locked --- OpenSim/Data/MySQL/MySQLGridData.cs | 6 +++--- OpenSim/Data/MySQL/MySQLUserData.cs | 33 ++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/OpenSim/Data/MySQL/MySQLGridData.cs b/OpenSim/Data/MySQL/MySQLGridData.cs index 26a8591..b6d481c 100644 --- a/OpenSim/Data/MySQL/MySQLGridData.cs +++ b/OpenSim/Data/MySQL/MySQLGridData.cs @@ -403,10 +403,10 @@ namespace OpenSim.Data.MySQL /// The sim profile override public RegionProfileData GetProfileByString(string regionName) { - MySQLSuperManager dbm = GetLockedConnection(); - if (regionName.Length > 2) { + MySQLSuperManager dbm = GetLockedConnection(); + try { Dictionary param = new Dictionary(); @@ -436,8 +436,8 @@ namespace OpenSim.Data.MySQL dbm.Release(); } + dbm.Release(); } - dbm.Release(); m_log.Error("[GRID DB]: Searched for a Region Name shorter then 3 characters"); return null; } diff --git a/OpenSim/Data/MySQL/MySQLUserData.cs b/OpenSim/Data/MySQL/MySQLUserData.cs index 2937ea8..e671989 100644 --- a/OpenSim/Data/MySQL/MySQLUserData.cs +++ b/OpenSim/Data/MySQL/MySQLUserData.cs @@ -208,8 +208,6 @@ namespace OpenSim.Data.MySQL public override void AddNewUserFriend(UUID friendlistowner, UUID friend, uint perms) { - MySQLSuperManager dbm = GetLockedConnection("AddNewUserFriend"); - int dtvalue = Util.UnixTimeSinceEpoch(); Dictionary param = new Dictionary(); @@ -218,6 +216,8 @@ namespace OpenSim.Data.MySQL param["?friendPerms"] = perms.ToString(); param["?datetimestamp"] = dtvalue.ToString(); + MySQLSuperManager dbm = GetLockedConnection("AddNewUserFriend"); + try { IDbCommand adder = @@ -252,12 +252,12 @@ namespace OpenSim.Data.MySQL public override void RemoveUserFriend(UUID friendlistowner, UUID friend) { - MySQLSuperManager dbm = GetLockedConnection("RemoveUserFriend"); - Dictionary param = new Dictionary(); param["?ownerID"] = friendlistowner.ToString(); param["?friendID"] = friend.ToString(); + MySQLSuperManager dbm = GetLockedConnection("RemoveUserFriend"); + try { IDbCommand updater = @@ -286,13 +286,13 @@ namespace OpenSim.Data.MySQL public override void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms) { - MySQLSuperManager dbm = GetLockedConnection("UpdateUserFriendPerms"); - Dictionary param = new Dictionary(); param["?ownerID"] = friendlistowner.ToString(); param["?friendID"] = friend.ToString(); param["?friendPerms"] = perms.ToString(); + MySQLSuperManager dbm = GetLockedConnection("UpdateUserFriendPerms"); + try { IDbCommand updater = @@ -317,12 +317,13 @@ namespace OpenSim.Data.MySQL public override List GetUserFriendList(UUID friendlistowner) { - MySQLSuperManager dbm = GetLockedConnection("GetUserFriendList"); List Lfli = new List(); Dictionary param = new Dictionary(); param["?ownerID"] = friendlistowner.ToString(); + MySQLSuperManager dbm = GetLockedConnection("GetUserFriendList"); + try { //Left Join userfriends to itself @@ -373,8 +374,6 @@ namespace OpenSim.Data.MySQL public override List GeneratePickerResults(UUID queryID, string query) { - MySQLSuperManager dbm = GetLockedConnection("GeneratePickerResults"); - List returnlist = new List(); Regex objAlphaNumericPattern = new Regex("[^a-zA-Z0-9]"); @@ -386,6 +385,8 @@ namespace OpenSim.Data.MySQL Dictionary param = new Dictionary(); param["?first"] = objAlphaNumericPattern.Replace(querysplit[0], String.Empty) + "%"; param["?second"] = objAlphaNumericPattern.Replace(querysplit[1], String.Empty) + "%"; + MySQLSuperManager dbm = GetLockedConnection("GeneratePickerResults"); + try { IDbCommand result = @@ -419,6 +420,8 @@ namespace OpenSim.Data.MySQL } else if (querysplit.Length == 1) { + MySQLSuperManager dbm = GetLockedConnection("GeneratePickerResults"); + try { Dictionary param = new Dictionary(); @@ -520,12 +523,12 @@ namespace OpenSim.Data.MySQL /// is it still used ? public override void StoreWebLoginKey(UUID AgentID, UUID WebLoginKey) { - MySQLSuperManager dbm = GetLockedConnection("StoreWebLoginKey"); - Dictionary param = new Dictionary(); param["?UUID"] = AgentID.ToString(); param["?webLoginKey"] = WebLoginKey.ToString(); + MySQLSuperManager dbm = GetLockedConnection("StoreWebLoginKey"); + try { dbm.Manager.ExecuteParameterizedSql( @@ -785,11 +788,11 @@ namespace OpenSim.Data.MySQL public Hashtable GetUserAttachments(UUID agentID) { - MySQLSuperManager dbm = GetLockedConnection("GetUserAttachments"); - Dictionary param = new Dictionary(); param["?uuid"] = agentID.ToString(); + MySQLSuperManager dbm = GetLockedConnection("GetUserAttachments"); + try { IDbCommand result = dbm.Manager.Query( @@ -829,11 +832,11 @@ namespace OpenSim.Data.MySQL public override void ResetAttachments(UUID userID) { - MySQLSuperManager dbm = GetLockedConnection("ResetAttachments"); - Dictionary param = new Dictionary(); param["?uuid"] = userID.ToString(); + MySQLSuperManager dbm = GetLockedConnection("ResetAttachments"); + try { dbm.Manager.ExecuteParameterizedSql( -- cgit v1.1