aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorJustin Clarke Casey2009-03-09 17:55:08 +0000
committerJustin Clarke Casey2009-03-09 17:55:08 +0000
commit5a6bc26600c80d8e838bafdde4df970841c6c285 (patch)
treee85ab9419eb14c03601b02abfb455ee46e5d671e /OpenSim
parent* Added TXXX in front of unit tests to make sure they are running in the corr... (diff)
downloadopensim-SC_OLD-5a6bc26600c80d8e838bafdde4df970841c6c285.zip
opensim-SC_OLD-5a6bc26600c80d8e838bafdde4df970841c6c285.tar.gz
opensim-SC_OLD-5a6bc26600c80d8e838bafdde4df970841c6c285.tar.bz2
opensim-SC_OLD-5a6bc26600c80d8e838bafdde4df970841c6c285.tar.xz
* Address http://opensimulator.org/mantis/view.php?id=3207
* A saved archive now immediately expires the data in the asset cache that it used, rather than retaining all the assets (esp textures) in the cache. * This is an imperfect solution. Ideally we would only expire the assets newly requested for the archive (not existing ones). But doing that would require a lot more restructuring. * I don't believe there are any locking issues due to the locking performed by the underlying memory cache, but please report any issues.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/Communications/Cache/AssetCache.cs5
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs10
2 files changed, 9 insertions, 6 deletions
diff --git a/OpenSim/Framework/Communications/Cache/AssetCache.cs b/OpenSim/Framework/Communications/Cache/AssetCache.cs
index 800c997..30f7ddf 100644
--- a/OpenSim/Framework/Communications/Cache/AssetCache.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetCache.cs
@@ -46,8 +46,7 @@ namespace OpenSim.Framework.Communications.Cache
46 /// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either 46 /// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either
47 /// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and 47 /// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and
48 /// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and 48 /// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and
49 /// AssetNotFound(), which means they do share the same asset and texture caches.I agr 49 /// AssetNotFound(), which means they do share the same asset and texture caches.
50
51 public class AssetCache : IAssetCache 50 public class AssetCache : IAssetCache
52 { 51 {
53 52
@@ -401,9 +400,7 @@ namespace OpenSim.Framework.Communications.Cache
401 m_memcache.AddOrUpdate(assetInf.FullID, assetInf, TimeSpan.FromHours(24)); 400 m_memcache.AddOrUpdate(assetInf.FullID, assetInf, TimeSpan.FromHours(24));
402 401
403 if (StatsManager.SimExtraStats != null) 402 if (StatsManager.SimExtraStats != null)
404 {
405 StatsManager.SimExtraStats.AddAsset(assetInf); 403 StatsManager.SimExtraStats.AddAsset(assetInf);
406 }
407 404
408 if (RequestedAssets.ContainsKey(assetInf.FullID)) 405 if (RequestedAssets.ContainsKey(assetInf.FullID))
409 { 406 {
diff --git a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs
index 99ec9b4..076fbce 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs
@@ -72,7 +72,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
72 /// </summary> 72 /// </summary>
73 protected IAssetCache m_assetCache; 73 protected IAssetCache m_assetCache;
74 74
75 protected internal AssetsRequest(ICollection<UUID> uuids, IAssetCache assetCache, AssetsRequestCallback assetsRequestCallback) 75 protected internal AssetsRequest(
76 ICollection<UUID> uuids, IAssetCache assetCache, AssetsRequestCallback assetsRequestCallback)
76 { 77 {
77 m_uuids = uuids; 78 m_uuids = uuids;
78 m_assetsRequestCallback = assetsRequestCallback; 79 m_assetsRequestCallback = assetsRequestCallback;
@@ -100,9 +101,14 @@ namespace OpenSim.Region.CoreModules.World.Archiver
100 public void AssetRequestCallback(UUID assetID, AssetBase asset) 101 public void AssetRequestCallback(UUID assetID, AssetBase asset)
101 { 102 {
102 if (asset != null) 103 if (asset != null)
103 m_assets[assetID] = asset; 104 {
105 m_assetCache.ExpireAsset(assetID);
106 m_assets[assetID] = asset;
107 }
104 else 108 else
109 {
105 m_notFoundAssetUuids.Add(assetID); 110 m_notFoundAssetUuids.Add(assetID);
111 }
106 112
107 //m_log.DebugFormat( 113 //m_log.DebugFormat(
108 // "[ARCHIVER]: Received {0} assets and notification of {1} missing assets", m_assets.Count, m_notFoundAssetUuids.Count); 114 // "[ARCHIVER]: Received {0} assets and notification of {1} missing assets", m_assets.Count, m_notFoundAssetUuids.Count);