From d1ccc6d5cc6488939b8f35d1c84a9c6d5d675b76 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 21 Sep 2014 23:23:20 +0100 Subject: [PATCH] release lock a bit sooner when not needed, add a try on more complex db store call --- .../Framework/Scenes/SceneObjectPartInventory.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 5b167a2ed8..aeec54e683 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -1133,26 +1133,28 @@ namespace OpenSim.Region.Framework.Scenes if (m_inventorySerial == 0) // No inventory { - client.SendTaskInventory(m_part.UUID, 0, new byte[0]); Items.LockItemsForRead(false); + client.SendTaskInventory(m_part.UUID, 0, new byte[0]); + return; } if (m_items.Count == 0) // No inventory { - client.SendTaskInventory(m_part.UUID, 0, new byte[0]); Items.LockItemsForRead(false); + client.SendTaskInventory(m_part.UUID, 0, new byte[0]); return; } if (!changed) { + Items.LockItemsForRead(false); + xferManager.AddNewFile(filename, m_inventoryFileData); client.SendTaskInventory(m_part.UUID, (short)m_inventoryFileNameSerial, Util.StringToBytes256(filename)); - Items.LockItemsForRead(false); return; } @@ -1238,7 +1240,12 @@ namespace OpenSim.Region.Framework.Scenes // if (HasInventoryChanged) // { Items.LockItemsForRead(true); - datastore.StorePrimInventory(m_part.UUID, Items.Values); + try + { + datastore.StorePrimInventory(m_part.UUID, Items.Values); + } + catch(){} + Items.LockItemsForRead(false); HasInventoryChanged = false;