Add an option to update the file access time even when an asset is found in cache.
When the cache is shared between multiple sims, it is often more efficient to have a single expire job run from cron. Updating file access times is vital to the functioning of such setups.melanie
parent
c78da183b2
commit
feca9fd153
|
@ -110,6 +110,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
|
|
||||||
private Dictionary<string,WeakReference> weakAssetReferences = new Dictionary<string, WeakReference>();
|
private Dictionary<string,WeakReference> weakAssetReferences = new Dictionary<string, WeakReference>();
|
||||||
private object weakAssetReferencesLock = new object();
|
private object weakAssetReferencesLock = new object();
|
||||||
|
private bool m_updateFileTimeOnCacheHit = false;
|
||||||
|
|
||||||
public FlotsamAssetCache()
|
public FlotsamAssetCache()
|
||||||
{
|
{
|
||||||
|
@ -156,6 +157,8 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
m_MemoryCacheEnabled = assetConfig.GetBoolean("MemoryCacheEnabled", m_MemoryCacheEnabled);
|
m_MemoryCacheEnabled = assetConfig.GetBoolean("MemoryCacheEnabled", m_MemoryCacheEnabled);
|
||||||
m_MemoryExpiration = assetConfig.GetDouble("MemoryCacheTimeout", m_MemoryExpiration);
|
m_MemoryExpiration = assetConfig.GetDouble("MemoryCacheTimeout", m_MemoryExpiration);
|
||||||
m_MemoryExpiration *= 3600.0; // config in hours to seconds
|
m_MemoryExpiration *= 3600.0; // config in hours to seconds
|
||||||
|
|
||||||
|
m_updateFileTimeOnCacheHit = assetConfig.GetBoolean("UpdateFileTimeOnCacheHit", m_updateFileTimeOnCacheHit);
|
||||||
|
|
||||||
#if WAIT_ON_INPROGRESS_REQUESTS
|
#if WAIT_ON_INPROGRESS_REQUESTS
|
||||||
m_WaitOnInprogressTimeout = assetConfig.GetInt("WaitOnInprogressTimeout", 3000);
|
m_WaitOnInprogressTimeout = assetConfig.GetInt("WaitOnInprogressTimeout", 3000);
|
||||||
|
@ -513,12 +516,24 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
|
|
||||||
AssetBase asset = null;
|
AssetBase asset = null;
|
||||||
asset = GetFromWeakReference(id);
|
asset = GetFromWeakReference(id);
|
||||||
|
if (asset != null && m_updateFileTimeOnCacheHit)
|
||||||
|
{
|
||||||
|
string filename = GetFileName(id);
|
||||||
|
UpdateFileLastAccessTime(filename);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_MemoryCacheEnabled && asset == null)
|
if (m_MemoryCacheEnabled && asset == null)
|
||||||
{
|
{
|
||||||
asset = GetFromMemoryCache(id);
|
asset = GetFromMemoryCache(id);
|
||||||
if(asset != null)
|
if(asset != null)
|
||||||
|
{
|
||||||
UpdateWeakReference(id,asset);
|
UpdateWeakReference(id,asset);
|
||||||
|
if (m_updateFileTimeOnCacheHit)
|
||||||
|
{
|
||||||
|
string filename = GetFileName(id);
|
||||||
|
UpdateFileLastAccessTime(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (asset == null && m_FileCacheEnabled)
|
if (asset == null && m_FileCacheEnabled)
|
||||||
|
|
Loading…
Reference in New Issue