* 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
|
/// 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
|
/// 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
|
/// 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
|
public class AssetCache : IAssetCache
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -401,9 +400,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
m_memcache.AddOrUpdate(assetInf.FullID, assetInf, TimeSpan.FromHours(24));
|
m_memcache.AddOrUpdate(assetInf.FullID, assetInf, TimeSpan.FromHours(24));
|
||||||
|
|
||||||
if (StatsManager.SimExtraStats != null)
|
if (StatsManager.SimExtraStats != null)
|
||||||
{
|
|
||||||
StatsManager.SimExtraStats.AddAsset(assetInf);
|
StatsManager.SimExtraStats.AddAsset(assetInf);
|
||||||
}
|
|
||||||
|
|
||||||
if (RequestedAssets.ContainsKey(assetInf.FullID))
|
if (RequestedAssets.ContainsKey(assetInf.FullID))
|
||||||
{
|
{
|
||||||
|
|
|
@ -72,7 +72,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected IAssetCache m_assetCache;
|
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_uuids = uuids;
|
||||||
m_assetsRequestCallback = assetsRequestCallback;
|
m_assetsRequestCallback = assetsRequestCallback;
|
||||||
|
@ -100,9 +101,14 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
public void AssetRequestCallback(UUID assetID, AssetBase asset)
|
public void AssetRequestCallback(UUID assetID, AssetBase asset)
|
||||||
{
|
{
|
||||||
if (asset != null)
|
if (asset != null)
|
||||||
m_assets[assetID] = asset;
|
{
|
||||||
|
m_assetCache.ExpireAsset(assetID);
|
||||||
|
m_assets[assetID] = asset;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
m_notFoundAssetUuids.Add(assetID);
|
m_notFoundAssetUuids.Add(assetID);
|
||||||
|
}
|
||||||
|
|
||||||
//m_log.DebugFormat(
|
//m_log.DebugFormat(
|
||||||
// "[ARCHIVER]: Received {0} assets and notification of {1} missing assets", m_assets.Count, m_notFoundAssetUuids.Count);
|
// "[ARCHIVER]: Received {0} assets and notification of {1} missing assets", m_assets.Count, m_notFoundAssetUuids.Count);
|
||||||
|
|
Loading…
Reference in New Issue