* 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.0.6.5-rc1
parent
a2ff2e9000
commit
5a6bc26600
|
@ -46,8 +46,7 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
/// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either
|
||||
/// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and
|
||||
/// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and
|
||||
/// AssetNotFound(), which means they do share the same asset and texture caches.I agr
|
||||
|
||||
/// AssetNotFound(), which means they do share the same asset and texture caches.
|
||||
public class AssetCache : IAssetCache
|
||||
{
|
||||
|
||||
|
@ -401,9 +400,7 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
m_memcache.AddOrUpdate(assetInf.FullID, assetInf, TimeSpan.FromHours(24));
|
||||
|
||||
if (StatsManager.SimExtraStats != null)
|
||||
{
|
||||
StatsManager.SimExtraStats.AddAsset(assetInf);
|
||||
}
|
||||
|
||||
if (RequestedAssets.ContainsKey(assetInf.FullID))
|
||||
{
|
||||
|
|
|
@ -72,7 +72,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
/// </summary>
|
||||
protected IAssetCache m_assetCache;
|
||||
|
||||
protected internal AssetsRequest(ICollection<UUID> uuids, IAssetCache assetCache, AssetsRequestCallback assetsRequestCallback)
|
||||
protected internal AssetsRequest(
|
||||
ICollection<UUID> uuids, IAssetCache assetCache, AssetsRequestCallback assetsRequestCallback)
|
||||
{
|
||||
m_uuids = uuids;
|
||||
m_assetsRequestCallback = assetsRequestCallback;
|
||||
|
@ -100,9 +101,14 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
|||
public void AssetRequestCallback(UUID assetID, AssetBase asset)
|
||||
{
|
||||
if (asset != null)
|
||||
m_assets[assetID] = asset;
|
||||
{
|
||||
m_assetCache.ExpireAsset(assetID);
|
||||
m_assets[assetID] = asset;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_notFoundAssetUuids.Add(assetID);
|
||||
}
|
||||
|
||||
//m_log.DebugFormat(
|
||||
// "[ARCHIVER]: Received {0} assets and notification of {1} missing assets", m_assets.Count, m_notFoundAssetUuids.Count);
|
||||
|
|
Loading…
Reference in New Issue