aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs16
1 files changed, 9 insertions, 7 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
index 761fece..9500eb6 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs
@@ -181,11 +181,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
181 // Archive the regions 181 // Archive the regions
182 182
183 Dictionary<UUID, sbyte> assetUuids = new Dictionary<UUID, sbyte>(); 183 Dictionary<UUID, sbyte> assetUuids = new Dictionary<UUID, sbyte>();
184 HashSet<UUID> failedIDs = new HashSet<UUID>();
184 185
185 scenesGroup.ForEachScene(delegate(Scene scene) 186 scenesGroup.ForEachScene(delegate(Scene scene)
186 { 187 {
187 string regionDir = MultiRegionFormat ? scenesGroup.GetRegionDir(scene.RegionInfo.RegionID) : ""; 188 string regionDir = MultiRegionFormat ? scenesGroup.GetRegionDir(scene.RegionInfo.RegionID) : "";
188 ArchiveOneRegion(scene, regionDir, assetUuids); 189 ArchiveOneRegion(scene, regionDir, assetUuids, failedIDs);
189 }); 190 });
190 191
191 // Archive the assets 192 // Archive the assets
@@ -196,6 +197,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
196 197
197 AssetsRequest ar = new AssetsRequest( 198 AssetsRequest ar = new AssetsRequest(
198 new AssetsArchiver(m_archiveWriter), assetUuids, 199 new AssetsArchiver(m_archiveWriter), assetUuids,
200 failedIDs.Count,
199 m_rootScene.AssetService, m_rootScene.UserAccountService, 201 m_rootScene.AssetService, m_rootScene.UserAccountService,
200 m_rootScene.RegionInfo.ScopeID, options, null); 202 m_rootScene.RegionInfo.ScopeID, options, null);
201 ar.Execute(); 203 ar.Execute();
@@ -215,7 +217,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
215 } 217 }
216 } 218 }
217 219
218 private void ArchiveOneRegion(Scene scene, string regionDir, Dictionary<UUID, sbyte> assetUuids) 220 private void ArchiveOneRegion(Scene scene, string regionDir, Dictionary<UUID, sbyte> assetUuids, HashSet<UUID> failedIDs)
219 { 221 {
220 m_log.InfoFormat("[ARCHIVER]: Writing region {0}", scene.Name); 222 m_log.InfoFormat("[ARCHIVER]: Writing region {0}", scene.Name);
221 223
@@ -251,7 +253,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
251 253
252 if (SaveAssets) 254 if (SaveAssets)
253 { 255 {
254 UuidGatherer assetGatherer = new UuidGatherer(scene.AssetService, assetUuids); 256 UuidGatherer assetGatherer = new UuidGatherer(scene.AssetService, assetUuids, failedIDs);
255 int prevAssets = assetUuids.Count; 257 int prevAssets = assetUuids.Count;
256 258
257 foreach (SceneObjectGroup sceneObject in sceneObjects) 259 foreach (SceneObjectGroup sceneObject in sceneObjects)
@@ -259,12 +261,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
259 261
260 assetGatherer.GatherAll(); 262 assetGatherer.GatherAll();
261 263
262 m_log.DebugFormat(
263 "[ARCHIVER]: {0} scene objects to serialize requiring save of {1} assets",
264 sceneObjects.Count, assetUuids.Count - prevAssets);
265 int errors = assetGatherer.FailedUUIDs.Count; 264 int errors = assetGatherer.FailedUUIDs.Count;
265 m_log.DebugFormat(
266 "[ARCHIVER]: {0} region scene objects to save reference {1} assets",
267 sceneObjects.Count, assetUuids.Count - prevAssets + errors);
266 if(errors > 0) 268 if(errors > 0)
267 m_log.DebugFormat("[ARCHIVER]: aditional {0} assets have problems and will be ignored", errors); 269 m_log.DebugFormat("[ARCHIVER]: {0} of this assets have problems and will be ignored", errors);
268 } 270 }
269 271
270 if (numObjectsSkippedPermissions > 0) 272 if (numObjectsSkippedPermissions > 0)