From 877713999ce9bcf63e9fafa76cc7d2283ee2e6c2 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Wed, 20 Feb 2008 17:34:10 +0000
Subject: * Report 'asset not found' situations back to
UserTextureDownloadService * This fixes some of the 'runaway downloads'
problem but not all of it * Also fix up logging messages so texture requests
are reported as such rather than as assets
---
.../Modules/UserTextureDownloadService.cs | 24 +++++++++++++++++-----
.../Scenes/SceneObjectPart.Inventory.cs | 4 ++--
.../Region/Environment/Scenes/SimStatsReporter.cs | 5 +++++
3 files changed, 26 insertions(+), 7 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs b/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs
index 4a94266..24f0981 100644
--- a/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs
+++ b/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs
@@ -95,7 +95,7 @@ namespace OpenSim.Region.Environment.Modules
new TextureSender(client, e.DiscardLevel, e.PacketNumber);
m_textureSenders.Add(e.RequestedAssetID, requestHandler);
- m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback);
+ m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true);
}
}
}
@@ -117,7 +117,7 @@ namespace OpenSim.Region.Environment.Modules
///
///
///
- public void TextureCallback(LLUUID textureID, AssetBase asset)
+ public void TextureCallback(LLUUID textureID, AssetBase texture)
{
lock (m_textureSenders)
{
@@ -125,10 +125,24 @@ namespace OpenSim.Region.Environment.Modules
if (m_textureSenders.TryGetValue(textureID, out textureSender))
{
- if (!textureSender.ImageLoaded)
+ if (null != texture)
{
- textureSender.TextureReceived(asset);
- EnqueueTextureSender(textureSender);
+ if (!textureSender.ImageLoaded)
+ {
+ textureSender.TextureReceived(texture);
+ EnqueueTextureSender(textureSender);
+ }
+ }
+ else
+ {
+ // Right now, leaving it up to lower level asset server code to post the fact that
+ // this texture could not be found
+
+ // TODO Send packet back to the client telling it not to expect the texture
+ // The absence of this packet doesn't appear to be causing it a problem right now
+
+ //m_log.InfoFormat("Removing {0} from pending downloads count", textureID);
+ m_scene.AddPendingDownloads(-1);
}
//m_log.InfoFormat("[TEXTURE SENDER] Removing texture sender with uuid {0}", textureID);
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
index 17c4d6d..dc95002 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
@@ -160,7 +160,7 @@ namespace OpenSim.Region.Environment.Scenes
cache.GetAsset(item.AssetID, delegate(LLUUID assetID, AssetBase asset)
{
- if (asset.FullID == LLUUID.Zero)
+ if (null == asset)
{
m_log.ErrorFormat(
"[PRIMINVENTORY]: " +
@@ -174,7 +174,7 @@ namespace OpenSim.Region.Environment.Scenes
m_parentGroup.AddActiveScriptCount(1);
ScheduleFullUpdate();
}
- });
+ }, false);
}
}
diff --git a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs
index a0539f0..422189e 100644
--- a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs
@@ -363,9 +363,14 @@ namespace OpenSim.Region.Environment.Scenes
{
m_otherMS += ms;
}
+
+// private static readonly log4net.ILog m_log
+// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+
public void addPendingDownload(int count)
{
m_pendingDownloads += count;
+ //m_log.InfoFormat("Adding {0} to pending downloads to make {1}", count, m_pendingDownloads);
}
public void addScriptLines(int count)
--
cgit v1.1