mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 13:55:35 +08:00
* Add missing locking to mysql inventory plugin
* Should resolve mantis 542
This commit is contained in:
@@ -38,7 +38,8 @@ namespace OpenSim.Framework.Data.MySQL
|
||||
/// </summary>
|
||||
public class MySQLInventoryData : IInventoryData
|
||||
{
|
||||
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly log4net.ILog m_log
|
||||
= log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
/// <summary>
|
||||
/// The database manager
|
||||
@@ -514,7 +515,10 @@ namespace OpenSim.Framework.Data.MySQL
|
||||
|
||||
try
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
lock (database)
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -543,10 +547,12 @@ namespace OpenSim.Framework.Data.MySQL
|
||||
cmd.Parameters.AddWithValue("?folderID", folder.folderID.ToString());
|
||||
cmd.Parameters.AddWithValue("?parentFolderID", folder.parentID.ToString());
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
lock (database)
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -586,11 +592,15 @@ namespace OpenSim.Framework.Data.MySQL
|
||||
protected void deleteOneFolder(LLUUID folderID)
|
||||
{
|
||||
try
|
||||
{
|
||||
{
|
||||
MySqlCommand cmd =
|
||||
new MySqlCommand("DELETE FROM inventoryfolders WHERE folderID=?uuid", database.Connection);
|
||||
cmd.Parameters.AddWithValue("?uuid", folderID.ToString());
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
lock (database)
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch (MySqlException e)
|
||||
{
|
||||
@@ -606,7 +616,11 @@ namespace OpenSim.Framework.Data.MySQL
|
||||
MySqlCommand cmd =
|
||||
new MySqlCommand("DELETE FROM inventoryitems WHERE parentFolderID=?uuid", database.Connection);
|
||||
cmd.Parameters.AddWithValue("?uuid", folderID.ToString());
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
lock (database)
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch (MySqlException e)
|
||||
{
|
||||
@@ -622,21 +636,18 @@ namespace OpenSim.Framework.Data.MySQL
|
||||
/// <param name="folderId">Id of folder to delete</param>
|
||||
public void deleteInventoryFolder(LLUUID folderID)
|
||||
{
|
||||
lock (database)
|
||||
List<InventoryFolderBase> subFolders = getFolderHierarchy(folderID);
|
||||
|
||||
//Delete all sub-folders
|
||||
foreach (InventoryFolderBase f in subFolders)
|
||||
{
|
||||
List<InventoryFolderBase> subFolders = getFolderHierarchy(folderID);
|
||||
|
||||
//Delete all sub-folders
|
||||
foreach (InventoryFolderBase f in subFolders)
|
||||
{
|
||||
deleteOneFolder(f.folderID);
|
||||
deleteItemsInFolder(f.folderID);
|
||||
}
|
||||
|
||||
//Delete the actual row
|
||||
deleteOneFolder(folderID);
|
||||
deleteItemsInFolder(folderID);
|
||||
deleteOneFolder(f.folderID);
|
||||
deleteItemsInFolder(f.folderID);
|
||||
}
|
||||
|
||||
//Delete the actual row
|
||||
deleteOneFolder(folderID);
|
||||
deleteItemsInFolder(folderID);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user