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.

fsassets
Diva Canto 2015-06-04 06:58:07 -07:00
parent bac53387a9
commit ea5aa82c2c
2 changed files with 9 additions and 15 deletions

View File

@ -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);
}
}
}
}

View File

@ -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<string, object> 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<string, object> kvp in resultSet)