From ea5aa82c2c3368f942f5b58ba2e13ce9a2d2b582 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 4 Jun 2015 06:58:07 -0700 Subject: [PATCH] Mantis #7567. Once again, avoiding prefetching linked items within linked folders. Also fixing the inventory connector GetMultipleItems, so that if everything is in the cache, it returns successfully rather than unsuccessfully. --- .../Handlers/FetchInventory/FetchInvDescHandler.cs | 14 -------------- .../Inventory/XInventoryServicesConnector.cs | 10 +++++++++- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs index 62ca8a3a3f..7618c3dd36 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs @@ -728,20 +728,6 @@ namespace OpenSim.Capabilities.Handlers itemsToReturn.InsertRange(0, links); - foreach (InventoryItemBase link in linkedFolderContents.Items) - { - // Take care of genuinely broken links where the target doesn't exist - // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate, - // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles - // rather than having to keep track of every folder requested in the recursion. - if (link != null && link.AssetType == (int)AssetType.Link) - { - //m_log.DebugFormat( - // "[WEB FETCH INV DESC HANDLER]: Adding item {0} {1} from folder {2} linked from {3} ({4} {5})", - // link.Name, (AssetType)link.AssetType, linkedFolderContents.FolderID, contents.FolderID, link.ID, link.AssetID); - itemIDs.Add(link.AssetID); - } - } } } diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs index b123e9de48..33ec48564f 100644 --- a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs @@ -555,6 +555,9 @@ namespace OpenSim.Services.Connectors pending.Add(id); } + if (pending.Count == 0) // we're done, everything was in the cache + return itemArr; + try { Dictionary resultSet = MakeRequest("GETMULTIPLEITEMS", @@ -565,7 +568,12 @@ namespace OpenSim.Services.Connectors }); if (!CheckReturn(resultSet)) - return null; + { + if (i == 0) + return null; + else + return itemArr; + } // carry over index i where we left above foreach (KeyValuePair kvp in resultSet)