avoid some broken object assets present in osgrid inventories due to past problems, etc

0.9.0-post-fixes
UbitUmarov 2017-06-21 21:38:12 +01:00
parent 1bfe4da378
commit 11d3860781
3 changed files with 15 additions and 2 deletions

View File

@ -381,6 +381,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
string errorMessage = string.Format("Aborted save. Could not find inventory path {0}", m_invPath); string errorMessage = string.Format("Aborted save. Could not find inventory path {0}", m_invPath);
Exception e = new InventoryArchiverException(errorMessage); Exception e = new InventoryArchiverException(errorMessage);
m_module.TriggerInventoryArchiveSaved(m_id, false, m_userInfo, m_invPath, m_saveStream, e, 0, 0); m_module.TriggerInventoryArchiveSaved(m_id, false, m_userInfo, m_invPath, m_saveStream, e, 0, 0);
if(m_saveStream != null && m_saveStream.CanWrite)
m_saveStream.Close();
throw e; throw e;
} }

View File

@ -218,7 +218,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
// { // {
try try
{ {
new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, saveStream).Execute(options, UserAccountService); InventoryArchiveWriteRequest iarReq = new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, saveStream);
iarReq.Execute(options, UserAccountService);
} }
catch (EntryPointNotFoundException e) catch (EntryPointNotFoundException e)
{ {
@ -261,7 +262,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
// { // {
try try
{ {
new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, savePath).Execute(options, UserAccountService); InventoryArchiveWriteRequest iarReq = new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, savePath);
iarReq.Execute(options, UserAccountService);
} }
catch (EntryPointNotFoundException e) catch (EntryPointNotFoundException e)
{ {

View File

@ -142,6 +142,8 @@ namespace OpenSim.Region.Framework.Scenes
{ {
// m_log.DebugFormat( // m_log.DebugFormat(
// "[ASSET GATHERER]: Getting assets for object {0}, {1}", sceneObject.Name, sceneObject.UUID); // "[ASSET GATHERER]: Getting assets for object {0}, {1}", sceneObject.Name, sceneObject.UUID);
if(sceneObject.IsDeleted)
return;
SceneObjectPart[] parts = sceneObject.Parts; SceneObjectPart[] parts = sceneObject.Parts;
for (int i = 0; i < parts.Length; i++) for (int i = 0; i < parts.Length; i++)
@ -489,6 +491,13 @@ namespace OpenSim.Region.Framework.Scenes
/// <param name="sceneObjectAsset"></param> /// <param name="sceneObjectAsset"></param>
private void RecordSceneObjectAssetUuids(AssetBase sceneObjectAsset) private void RecordSceneObjectAssetUuids(AssetBase sceneObjectAsset)
{ {
if(sceneObjectAsset.Data == null || sceneObjectAsset.Data.Length == 0)
{
m_log.WarnFormat("[UUIDgatherer] Error: object asset '{0}' id: {1} has no data",
sceneObjectAsset.Name,sceneObjectAsset.ID.ToString());
return;
}
string xml = Utils.BytesToString(sceneObjectAsset.Data); string xml = Utils.BytesToString(sceneObjectAsset.Data);
CoalescedSceneObjects coa; CoalescedSceneObjects coa;