From da6a36c26d1dc76fdb7e0f08d9fdb5676768ac42 Mon Sep 17 00:00:00 2001 From: Vincent Sylvester Date: Tue, 30 Jun 2026 10:58:32 +0200 Subject: [PATCH] Handle failed asset stores for InventoryAccessModule Signed-off-by: UbitUmarov --- .../InventoryAccess/InventoryAccessModule.cs | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 50adee656a..46b90dd7b4 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -412,12 +412,25 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess AssetBase asset = CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data, remoteClient.AgentId.ToString()); item.AssetID = asset.FullID; - m_Scene.AssetService.Store(asset); - - m_Scene.InventoryService.UpdateItem(item); - - // remoteClient.SendInventoryItemCreateUpdate(item); - return (asset.FullID); + if (m_Scene.AssetService.Store(asset).Equals(string.Empty)) + { + m_log.WarnFormat("[INVENTORY ACCESS MODULE]: Asset with id {0} failed to store, retrying...", asset.ID.ToString()); + if (m_Scene.AssetService.Store(asset).Equals(string.Empty)) + { + m_log.ErrorFormat("[INVENTORY ACCESS MODULE]: Asset with id {0} failed to store!", asset.ID.ToString()); + return UUID.Zero; + } + else + { + m_Scene.InventoryService.UpdateItem(item); + return (asset.FullID); + } + } + else + { + m_Scene.InventoryService.UpdateItem(item); + return UUID.Zero; + } } public virtual bool UpdateInventoryItemAsset(UUID ownerID, InventoryItemBase item, AssetBase asset) @@ -428,9 +441,25 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // "[INVENTORY ACCESS MODULE]: Updating item {0} {1} with new asset {2}", // item.Name, item.ID, asset.ID); - m_Scene.AssetService.Store(asset); - m_Scene.InventoryService.UpdateItem(item); - return true; + if (m_Scene.AssetService.Store(asset).Equals(string.Empty)) + { + m_log.WarnFormat("[INVENTORY ACCESS MODULE]: Asset with id {0} failed to store, retrying...", asset.ID.ToString()); + if (m_Scene.AssetService.Store(asset).Equals(string.Empty)) + { + m_log.ErrorFormat("[INVENTORY ACCESS MODULE]: Asset with id {0} failed to store!", asset.ID.ToString()); + return false; + } + else + { + m_Scene.InventoryService.UpdateItem(item); + return true; + } + } + else + { + m_Scene.InventoryService.UpdateItem(item); + return true; + } } else {