diff --git a/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs b/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs index 55ef047b24..5233139b97 100644 --- a/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs +++ b/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs @@ -85,10 +85,7 @@ namespace OpenSim.Region.DataSnapshot #region IRegionModule - public void Close() - { - m_log.Info("[DATASNAPSHOT]: Close called"); - } + public void Close() {} public void Initialise(Scene scene, IConfigSource config) { diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs index 0e3719736f..c9f8fcea5d 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveReadRequest.cs @@ -103,11 +103,14 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects", serialisedSceneObjects.Count); IRegionSerialiser serialiser = m_scene.RequestModuleInterface(); - ICollection sceneObjects = new List(); + ICollection sceneObjects = new List(); foreach (string serialisedSceneObject in serialisedSceneObjects) - { - sceneObjects.Add(serialiser.LoadGroupFromXml2(m_scene, serialisedSceneObject)); + { + SceneObjectGroup sceneObject = serialiser.LoadGroupFromXml2(m_scene, serialisedSceneObject); + + if (null != sceneObject) + sceneObjects.Add(sceneObject); } m_log.Debug("[ARCHIVER]: Starting scripts"); @@ -117,6 +120,13 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver sceneObject.CreateScriptInstances(0, true); } + m_log.InfoFormat("[ARCHIVER]: Restored {0} objects to the scene", sceneObjects.Count); + + int ignoredObjects = serialisedSceneObjects.Count - sceneObjects.Count; + + if (ignoredObjects > 0) + m_log.WarnFormat("[ARCHIVER]: Ignored {0} objects that already existed in the scene", ignoredObjects); + m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive"); } diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs index 0fc8ac3042..6e48f8eff5 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs @@ -85,7 +85,7 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser /// /// /// - /// The scene object created + /// The scene object created. null if the scene object already existed SceneObjectGroup LoadGroupFromXml2(Scene scene, string xmlString); /// diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs index f283ecbd92..bd19a7e73b 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs @@ -180,14 +180,15 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - /// The scene object created + /// The scene object created. null if the scene object already existed protected static SceneObjectGroup CreatePrimFromXml2(Scene scene, string xmlData) { SceneObjectGroup obj = new SceneObjectGroup(xmlData); - scene.AddRestoredSceneObject(obj, true); - - return obj; + if (scene.AddRestoredSceneObject(obj, true)) + return obj; + else + return null; } public static void SavePrimsToXml2(Scene scene, string fileName) diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 6a2b2d9703..abd3387b50 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -196,7 +196,10 @@ namespace OpenSim.Region.Environment.Scenes /// If true, changes to the object will be reflected in its persisted data /// If false, the persisted data will not be changed even if the object in the scene is changed /// - protected internal void AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + /// + /// true if the object was added, false if an object with the same uuid was already in the scene + /// + protected internal bool AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { sceneObject.RegionHandle = m_regInfo.RegionHandle; sceneObject.SetScene(m_parentScene); @@ -208,7 +211,7 @@ namespace OpenSim.Region.Environment.Scenes sceneObject.UpdateParentIDs(); - AddSceneObject(sceneObject, attachToBackup); + return AddSceneObject(sceneObject, attachToBackup); } /// @@ -220,14 +223,15 @@ namespace OpenSim.Region.Environment.Scenes /// If true, the object is made persistent into the scene. /// If false, the object will not persist over server restarts /// - /// true if the object was added, false if an object with the same uuid was already in the scene + /// + /// true if the object was added, false if an object with the same uuid was already in the scene /// - protected internal void AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + protected internal bool AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { // Ensure that we persist this new scene object sceneObject.HasGroupChanged = true; - AddSceneObject(sceneObject, attachToBackup); + return AddSceneObject(sceneObject, attachToBackup); } /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 05026c31d1..15645560e5 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1665,9 +1665,9 @@ namespace OpenSim.Region.Environment.Scenes /// Add an object into the scene that has come from storage /// /// - public void AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + public bool AddRestoredSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { - m_innerScene.AddRestoredSceneObject(sceneObject, attachToBackup); + return m_innerScene.AddRestoredSceneObject(sceneObject, attachToBackup); } /// @@ -1678,9 +1678,9 @@ namespace OpenSim.Region.Environment.Scenes /// If true, the object is made persistent into the scene. /// If false, the object will not persist over server restarts /// - public void AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) + public bool AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup) { - m_innerScene.AddNewSceneObject(sceneObject, attachToBackup); + return m_innerScene.AddNewSceneObject(sceneObject, attachToBackup); } /// diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 016d045735..ed20cd2919 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -77,7 +77,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine if (null == m_host) { m_log.ErrorFormat( - "[{0}]: Could not get scene object part corresponding to localID {1} to start script", + "[{0}]: Could not find scene object part corresponding to localID {1} to start script", m_scriptEngine.ScriptEngineName, localID); return;