Merge branch 'master' into httptests

httptests
UbitUmarov 2016-12-02 13:51:30 +00:00
commit b981ac42bc
10 changed files with 174 additions and 160 deletions

View File

@ -204,7 +204,7 @@ namespace OpenSim.Data.MySQL
foreach (RegionData r in dbret) foreach (RegionData r in dbret)
{ {
if (r.posX + r.sizeX > startX && r.posX <= endX if (r.posX + r.sizeX > startX && r.posX <= endX
&& r.posY + r.sizeX > startY && r.posY <= endY) && r.posY + r.sizeY > startY && r.posY <= endY)
ret.Add(r); ret.Add(r);
} }
return ret; return ret;

View File

@ -211,7 +211,7 @@ namespace OpenSim.Data.PGSQL
foreach (RegionData r in dbret) foreach (RegionData r in dbret)
{ {
if (r.posX + r.sizeX > startX && r.posX <= endX if (r.posX + r.sizeX > startX && r.posX <= endX
&& r.posY + r.sizeX > startY && r.posY <= endY) && r.posY + r.sizeY > startY && r.posY <= endY)
ret.Add(r); ret.Add(r);
} }
return ret; return ret;

View File

@ -89,14 +89,14 @@ namespace OpenSim.Framework
public CacheItemBase(string index) public CacheItemBase(string index)
{ {
uuid = index; uuid = index;
entered = DateTime.Now; entered = DateTime.UtcNow;
lastUsed = entered; lastUsed = entered;
} }
public CacheItemBase(string index, DateTime ttl) public CacheItemBase(string index, DateTime ttl)
{ {
uuid = index; uuid = index;
entered = DateTime.Now; entered = DateTime.UtcNow;
lastUsed = entered; lastUsed = entered;
expires = ttl; expires = ttl;
} }
@ -215,6 +215,8 @@ namespace OpenSim.Framework
private CacheFlags m_Flags = 0; private CacheFlags m_Flags = 0;
private int m_Size = 1024; private int m_Size = 1024;
private TimeSpan m_DefaultTTL = new TimeSpan(0); private TimeSpan m_DefaultTTL = new TimeSpan(0);
private DateTime m_nextExpire;
private TimeSpan m_expiresTime = new TimeSpan(0,0,30);
public ExpireDelegate OnExpire; public ExpireDelegate OnExpire;
// Comparison interfaces // Comparison interfaces
@ -233,6 +235,21 @@ namespace OpenSim.Framework
return(a.lastUsed.CompareTo(b.lastUsed)); return(a.lastUsed.CompareTo(b.lastUsed));
} }
} }
// same as above, reverse order
private class SortLRUrev : IComparer<CacheItemBase>
{
public int Compare(CacheItemBase a, CacheItemBase b)
{
if (a == null && b == null)
return 0;
if (a == null)
return -1;
if (b == null)
return 1;
return(b.lastUsed.CompareTo(a.lastUsed));
}
}
// Convenience constructors // Convenience constructors
// //
@ -241,6 +258,8 @@ namespace OpenSim.Framework
m_Strategy = CacheStrategy.Balanced; m_Strategy = CacheStrategy.Balanced;
m_Medium = CacheMedium.Memory; m_Medium = CacheMedium.Memory;
m_Flags = 0; m_Flags = 0;
m_nextExpire = DateTime.UtcNow + m_expiresTime;
m_Strategy = CacheStrategy.Aggressive;
} }
public Cache(CacheMedium medium) : public Cache(CacheMedium medium) :
@ -295,20 +314,24 @@ namespace OpenSim.Framework
{ {
lock (m_Index) lock (m_Index)
{ {
if (Count <= Size) int target = newSize;
return; if(m_Strategy == CacheStrategy.Aggressive)
target = (int)(newSize * 0.9);
m_Index.Sort(new SortLRU()); if(Count > target)
m_Index.Reverse(); {
m_Index.Sort(new SortLRUrev());
m_Index.RemoveRange(newSize, Count - newSize); m_Index.RemoveRange(newSize, Count - target);
m_Size = newSize;
m_Lookup.Clear(); m_Lookup.Clear();
foreach (CacheItemBase item in m_Index) foreach (CacheItemBase item in m_Index)
m_Lookup[item.uuid] = item; m_Lookup[item.uuid] = item;
} }
m_Size = newSize;
}
} }
public TimeSpan DefaultTTL public TimeSpan DefaultTTL
@ -335,7 +358,7 @@ namespace OpenSim.Framework
} }
item.hits++; item.hits++;
item.lastUsed = DateTime.Now; item.lastUsed = DateTime.UtcNow;
Expire(true); Expire(true);
} }
@ -361,15 +384,15 @@ namespace OpenSim.Framework
// //
public virtual Object Get(string index, FetchDelegate fetch) public virtual Object Get(string index, FetchDelegate fetch)
{ {
Object item = Get(index); CacheItemBase item = GetItem(index);
if (item != null) if (item != null)
return item; return item.Retrieve();
Object data = fetch(index); Object data = fetch(index);
if (data == null)
{ if (data == null && (m_Flags & CacheFlags.CacheMissing) == 0)
if ((m_Flags & CacheFlags.CacheMissing) != 0) return null;
{
lock (m_Index) lock (m_Index)
{ {
CacheItemBase missing = new CacheItemBase(index); CacheItemBase missing = new CacheItemBase(index);
@ -379,12 +402,8 @@ namespace OpenSim.Framework
m_Lookup[index] = missing; m_Lookup[index] = missing;
} }
} }
}
return null;
}
Store(index, data); Store(index, data);
return data; return data;
} }
@ -442,9 +461,9 @@ namespace OpenSim.Framework
item = GetItem(index); item = GetItem(index);
item.hits++; item.hits++;
item.lastUsed = DateTime.Now; item.lastUsed = DateTime.UtcNow;
if (m_DefaultTTL.Ticks != 0) if (m_DefaultTTL.Ticks != 0)
item.expires = DateTime.Now + m_DefaultTTL; item.expires = DateTime.UtcNow + m_DefaultTTL;
item.Store(data); item.Store(data);
} }
@ -455,7 +474,7 @@ namespace OpenSim.Framework
parameters); parameters);
if (m_DefaultTTL.Ticks != 0) if (m_DefaultTTL.Ticks != 0)
item.expires = DateTime.Now + m_DefaultTTL; item.expires = DateTime.UtcNow + m_DefaultTTL;
m_Index.Add(item); m_Index.Add(item);
m_Lookup[index] = item; m_Lookup[index] = item;
@ -476,10 +495,14 @@ namespace OpenSim.Framework
if (getting && (m_Strategy == CacheStrategy.Aggressive)) if (getting && (m_Strategy == CacheStrategy.Aggressive))
return; return;
DateTime now = DateTime.UtcNow;
if(now < m_nextExpire)
return;
m_nextExpire = now + m_expiresTime;
if (m_DefaultTTL.Ticks != 0) if (m_DefaultTTL.Ticks != 0)
{ {
DateTime now= DateTime.Now;
foreach (CacheItemBase item in new List<CacheItemBase>(m_Index)) foreach (CacheItemBase item in new List<CacheItemBase>(m_Index))
{ {
if (item.expires.Ticks == 0 || if (item.expires.Ticks == 0 ||
@ -494,16 +517,14 @@ namespace OpenSim.Framework
switch (m_Strategy) switch (m_Strategy)
{ {
case CacheStrategy.Aggressive: case CacheStrategy.Aggressive:
if (Count < Size)
return;
m_Index.Sort(new SortLRU());
m_Index.Reverse();
int target = (int)((float)Size * 0.9); int target = (int)((float)Size * 0.9);
if (target == Count) // Cover ridiculous cache sizes if (Count < target) // Cover ridiculous cache sizes
return; return;
target = (int)((float)Size * 0.8);
m_Index.Sort(new SortLRUrev());
ExpireDelegate doExpire = OnExpire; ExpireDelegate doExpire = OnExpire;
if (doExpire != null) if (doExpire != null)

View File

@ -619,11 +619,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_entityProps = new PriorityQueue(1); m_entityProps = new PriorityQueue(1);
m_killRecord.Clear(); m_killRecord.Clear();
GroupsInView.Clear(); GroupsInView.Clear();
// m_scene = null; can't do this unless checks are added everywhere due to workitems already in pools
//m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)); if(m_scene.GetNumberOfClients() == 0)
//GC.Collect(); GC.Collect();
//m_log.InfoFormat("[CLIENTVIEW] Memory post GC {0}", System.GC.GetTotalMemory(true));
} }
public void Kick(string message) public void Kick(string message)
@ -2996,7 +2994,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return; return;
} }
int WearableOut = 0;
bool isWearable = false; bool isWearable = false;
isWearable = ((AssetType) req.AssetInf.Type == isWearable = ((AssetType) req.AssetInf.Type ==
@ -8563,7 +8560,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// surrounding scene // surrounding scene
if ((ImageType)block.Type == ImageType.Baked) if ((ImageType)block.Type == ImageType.Baked)
args.Priority *= 2.0f; args.Priority *= 2.0f;
int wearableout = 0;
ImageManager.EnqueueReq(args); ImageManager.EnqueueReq(args);
} }

View File

@ -62,6 +62,7 @@ namespace OpenSim.Region.CoreModules.Asset
MethodBase.GetCurrentMethod().DeclaringType); MethodBase.GetCurrentMethod().DeclaringType);
private bool m_Enabled; private bool m_Enabled;
private bool m_Running;
private const string m_ModuleName = "FlotsamAssetCache"; private const string m_ModuleName = "FlotsamAssetCache";
private const string m_DefaultCacheDirectory = "./assetcache"; private const string m_DefaultCacheDirectory = "./assetcache";
@ -94,7 +95,7 @@ namespace OpenSim.Region.CoreModules.Asset
private const double m_DefaultFileExpiration = 48; private const double m_DefaultFileExpiration = 48;
private TimeSpan m_MemoryExpiration = TimeSpan.FromHours(m_DefaultMemoryExpiration); private TimeSpan m_MemoryExpiration = TimeSpan.FromHours(m_DefaultMemoryExpiration);
private TimeSpan m_FileExpiration = TimeSpan.FromHours(m_DefaultFileExpiration); private TimeSpan m_FileExpiration = TimeSpan.FromHours(m_DefaultFileExpiration);
private TimeSpan m_FileExpirationCleanupTimer = TimeSpan.FromHours(0.166); private TimeSpan m_FileExpirationCleanupTimer = TimeSpan.FromHours(1.0);
private static int m_CacheDirectoryTiers = 1; private static int m_CacheDirectoryTiers = 1;
private static int m_CacheDirectoryTierLen = 3; private static int m_CacheDirectoryTierLen = 3;
@ -104,6 +105,7 @@ namespace OpenSim.Region.CoreModules.Asset
private IAssetService m_AssetService; private IAssetService m_AssetService;
private List<Scene> m_Scenes = new List<Scene>(); private List<Scene> m_Scenes = new List<Scene>();
private object timerLock = new object();
public FlotsamAssetCache() public FlotsamAssetCache()
{ {
@ -170,14 +172,6 @@ namespace OpenSim.Region.CoreModules.Asset
m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Cache Directory {0}", m_CacheDirectory); m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Cache Directory {0}", m_CacheDirectory);
if (m_FileCacheEnabled && (m_FileExpiration > TimeSpan.Zero) && (m_FileExpirationCleanupTimer > TimeSpan.Zero))
{
m_CacheCleanTimer = new System.Timers.Timer(m_FileExpirationCleanupTimer.TotalMilliseconds);
m_CacheCleanTimer.AutoReset = true;
m_CacheCleanTimer.Elapsed += CleanupExpiredFiles;
lock (m_CacheCleanTimer)
m_CacheCleanTimer.Start();
}
if (m_CacheDirectoryTiers < 1) if (m_CacheDirectoryTiers < 1)
{ {
@ -219,7 +213,6 @@ namespace OpenSim.Region.CoreModules.Asset
{ {
scene.RegisterModuleInterface<IImprovedAssetCache>(this); scene.RegisterModuleInterface<IImprovedAssetCache>(this);
m_Scenes.Add(scene); m_Scenes.Add(scene);
} }
} }
@ -229,13 +222,39 @@ namespace OpenSim.Region.CoreModules.Asset
{ {
scene.UnregisterModuleInterface<IImprovedAssetCache>(this); scene.UnregisterModuleInterface<IImprovedAssetCache>(this);
m_Scenes.Remove(scene); m_Scenes.Remove(scene);
lock(timerLock)
{
if(m_Running && m_Scenes.Count <= 0)
{
m_Running = false;
m_CacheCleanTimer.Stop();
m_CacheCleanTimer.Close();
}
}
} }
} }
public void RegionLoaded(Scene scene) public void RegionLoaded(Scene scene)
{ {
if (m_Enabled && m_AssetService == null) if (m_Enabled)
{
if(m_AssetService == null)
m_AssetService = scene.RequestModuleInterface<IAssetService>(); m_AssetService = scene.RequestModuleInterface<IAssetService>();
lock(timerLock)
{
if(!m_Running)
{
if (m_FileCacheEnabled && (m_FileExpiration > TimeSpan.Zero) && (m_FileExpirationCleanupTimer > TimeSpan.Zero))
{
m_CacheCleanTimer = new System.Timers.Timer(m_FileExpirationCleanupTimer.TotalMilliseconds);
m_CacheCleanTimer.AutoReset = false;
m_CacheCleanTimer.Elapsed += CleanupExpiredFiles;
m_CacheCleanTimer.Start();
m_Running = true;
}
}
}
}
} }
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -542,6 +561,8 @@ namespace OpenSim.Region.CoreModules.Asset
if (m_LogLevel >= 2) if (m_LogLevel >= 2)
m_log.DebugFormat("[FLOTSAM ASSET CACHE]: Checking for expired files older then {0}.", m_FileExpiration); m_log.DebugFormat("[FLOTSAM ASSET CACHE]: Checking for expired files older then {0}.", m_FileExpiration);
if(!m_Running)
return;
// Purge all files last accessed prior to this point // Purge all files last accessed prior to this point
DateTime purgeLine = DateTime.Now - m_FileExpiration; DateTime purgeLine = DateTime.Now - m_FileExpiration;
@ -554,6 +575,12 @@ namespace OpenSim.Region.CoreModules.Asset
{ {
CleanExpiredFiles(dir, purgeLine); CleanExpiredFiles(dir, purgeLine);
} }
lock(timerLock)
{
if(m_Running)
m_CacheCleanTimer.Start();
}
} }
/// <summary> /// <summary>
@ -789,9 +816,15 @@ namespace OpenSim.Region.CoreModules.Asset
s.ForEachSOG(delegate(SceneObjectGroup e) s.ForEachSOG(delegate(SceneObjectGroup e)
{ {
if(!m_Running && !storeUncached)
return;
gatherer.AddForInspection(e); gatherer.AddForInspection(e);
gatherer.GatherAll(); gatherer.GatherAll();
if(!m_Running && !storeUncached)
return;
foreach (UUID assetID in gatherer.GatheredUuids.Keys) foreach (UUID assetID in gatherer.GatheredUuids.Keys)
{ {
if (!assetsFound.ContainsKey(assetID)) if (!assetsFound.ContainsKey(assetID))
@ -801,6 +834,7 @@ namespace OpenSim.Region.CoreModules.Asset
if (File.Exists(filename)) if (File.Exists(filename))
{ {
UpdateFileLastAccessTime(filename); UpdateFileLastAccessTime(filename);
assetsFound[assetID] = true;
} }
else if (storeUncached) else if (storeUncached)
{ {
@ -820,7 +854,14 @@ namespace OpenSim.Region.CoreModules.Asset
} }
gatherer.GatheredUuids.Clear(); gatherer.GatheredUuids.Clear();
if(!m_Running && !storeUncached)
return;
if(!storeUncached)
Thread.Sleep(50);
}); });
if(!m_Running && !storeUncached)
break;
} }
return assetsFound.Count; return assetsFound.Count;
@ -982,7 +1023,27 @@ namespace OpenSim.Region.CoreModules.Asset
WorkManager.RunInThread(delegate WorkManager.RunInThread(delegate
{ {
bool wasRunning= false;
lock(timerLock)
{
if(m_Running)
{
m_CacheCleanTimer.Stop();
m_Running = false;
wasRunning = true;
Thread.Sleep(100);
}
}
int assetReferenceTotal = TouchAllSceneAssets(true); int assetReferenceTotal = TouchAllSceneAssets(true);
GC.Collect();
lock(timerLock)
{
if(wasRunning)
{
m_CacheCleanTimer.Start();
m_Running = true;
}
}
con.OutputFormat("Completed check with {0} assets.", assetReferenceTotal); con.OutputFormat("Completed check with {0} assets.", assetReferenceTotal);
}, null, "TouchAllSceneAssets"); }, null, "TouchAllSceneAssets");

View File

@ -188,7 +188,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
//m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count); //m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count);
MapBlockData data; MapBlockData data;
if (regionInfos.Count > 0) if (regionInfos != null && regionInfos.Count > 0)
{ {
foreach (GridRegion info in regionInfos) foreach (GridRegion info in regionInfos)
{ {

View File

@ -13792,6 +13792,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case ScriptBaseClass.OBJECT_GROUP_TAG: case ScriptBaseClass.OBJECT_GROUP_TAG:
ret.Add(new LSL_String(av.Grouptitle)); ret.Add(new LSL_String(av.Grouptitle));
break; break;
case ScriptBaseClass.OBJECT_TEMP_ATTACHED:
ret.Add(new LSL_Integer(0));
break;
default: default:
// Invalid or unhandled constant. // Invalid or unhandled constant.
ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL)); ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
@ -13984,6 +13987,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case ScriptBaseClass.OBJECT_GROUP_TAG: case ScriptBaseClass.OBJECT_GROUP_TAG:
ret.Add(new LSL_String(String.Empty)); ret.Add(new LSL_String(String.Empty));
break; break;
case ScriptBaseClass.OBJECT_TEMP_ATTACHED:
if (obj.ParentGroup.AttachmentPoint != 0 && obj.ParentGroup.FromItemID == UUID.Zero)
{
ret.Add(new LSL_Integer(1));
}
else
{
ret.Add(new LSL_Integer(0));
}
break;
default: default:
// Invalid or unhandled constant. // Invalid or unhandled constant.
ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL)); ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));

View File

@ -641,6 +641,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
public const int OBJECT_PRIM_COUNT = 30; public const int OBJECT_PRIM_COUNT = 30;
public const int OBJECT_TOTAL_INVENTORY_COUNT = 31; public const int OBJECT_TOTAL_INVENTORY_COUNT = 31;
public const int OBJECT_GROUP_TAG = 33; public const int OBJECT_GROUP_TAG = 33;
public const int OBJECT_TEMP_ATTACHED = 34;
// Pathfinding types // Pathfinding types
public const int OPT_OTHER = -1; public const int OPT_OTHER = -1;

View File

@ -203,9 +203,23 @@ namespace OpenSim.Services.GridService
return "Invalid RegionID - cannot be zero UUID"; return "Invalid RegionID - cannot be zero UUID";
String reason = "Region overlaps another region"; String reason = "Region overlaps another region";
// we should not need to check for overlaps
RegionData region = m_Database.Get(regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID); List<RegionData> rdatas = m_Database.Get(
regionInfos.RegionLocX,
regionInfos.RegionLocY,
regionInfos.RegionLocX + regionInfos.RegionSizeX - 1,
regionInfos.RegionLocY + regionInfos.RegionSizeY - 1 ,
scopeID);
RegionData region = null;
if(rdatas.Count > 1)
{
m_log.WarnFormat("{0} Register region overlaps with {1} regions", LogHeader, scopeID, rdatas.Count);
return reason;
}
else if(rdatas.Count == 1)
region = rdatas[0];
if ((region != null) && (region.RegionID != regionInfos.RegionID)) if ((region != null) && (region.RegionID != regionInfos.RegionID))
{ {
// If not same ID and same coordinates, this new region has conflicts and can't be registered. // If not same ID and same coordinates, this new region has conflicts and can't be registered.
@ -341,99 +355,7 @@ namespace OpenSim.Services.GridService
return String.Empty; return String.Empty;
} }
/*
/// <summary>
/// Search the region map for regions conflicting with this region.
/// The region to be added is passed and we look for any existing regions that are
/// in the requested location, that are large varregions that overlap this region, or
/// are previously defined regions that would lie under this new region.
/// </summary>
/// <param name="regionInfos">Information on region requested to be added to the world map</param>
/// <param name="scopeID">Grid id for region</param>
/// <param name="reason">The reason the returned region conflicts with passed region</param>
/// <returns></returns>
private RegionData FindAnyConflictingRegion(GridRegion regionInfos, UUID scopeID, out string reason)
{
reason = "Reregistration";
// First see if there is an existing region right where this region is trying to go
// (We keep this result so it can be returned if suppressing errors)
RegionData noErrorRegion = m_Database.Get(regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID);
RegionData region = noErrorRegion;
if (region != null
&& region.RegionID == regionInfos.RegionID
&& region.sizeX == regionInfos.RegionSizeX
&& region.sizeY == regionInfos.RegionSizeY)
{
// If this seems to be exactly the same region, return this as it could be
// a re-registration (permissions checked by calling routine).
m_log.DebugFormat("{0} FindAnyConflictingRegion: re-register of {1}",
LogHeader, RegionString(regionInfos));
return region;
}
// No region exactly there or we're resizing an existing region.
// Fetch regions that could be varregions overlapping requested location.
int xmin = regionInfos.RegionLocX - (int)Constants.MaximumRegionSize + 10;
int xmax = regionInfos.RegionLocX;
int ymin = regionInfos.RegionLocY - (int)Constants.MaximumRegionSize + 10;
int ymax = regionInfos.RegionLocY;
List<RegionData> rdatas = m_Database.Get(xmin, ymin, xmax, ymax, scopeID);
foreach (RegionData rdata in rdatas)
{
// m_log.DebugFormat("{0} FindAnyConflictingRegion: find existing. Checking {1}", LogHeader, RegionString(rdata) );
if ( (rdata.posX + rdata.sizeX > regionInfos.RegionLocX)
&& (rdata.posY + rdata.sizeY > regionInfos.RegionLocY) )
{
region = rdata;
m_log.WarnFormat("{0} FindAnyConflictingRegion: conflict of {1} by existing varregion {2}",
LogHeader, RegionString(regionInfos), RegionString(region));
reason = String.Format("Region location is overlapped by existing varregion {0}",
RegionString(region));
if (m_SuppressVarregionOverlapCheckOnRegistration)
region = noErrorRegion;
return region;
}
}
// There isn't a region that overlaps this potential region.
// See if this potential region overlaps an existing region.
// First, a shortcut of not looking for overlap if new region is legacy region sized
// and connot overlap anything.
if (regionInfos.RegionSizeX != Constants.RegionSize
|| regionInfos.RegionSizeY != Constants.RegionSize)
{
// trim range looked for so we don't pick up neighbor regions just off the edges
xmin = regionInfos.RegionLocX;
xmax = regionInfos.RegionLocX + regionInfos.RegionSizeX - 10;
ymin = regionInfos.RegionLocY;
ymax = regionInfos.RegionLocY + regionInfos.RegionSizeY - 10;
rdatas = m_Database.Get(xmin, ymin, xmax, ymax, scopeID);
// If the region is being resized, the found region could be ourself.
foreach (RegionData rdata in rdatas)
{
// m_log.DebugFormat("{0} FindAnyConflictingRegion: see if overlap. Checking {1}", LogHeader, RegionString(rdata) );
if (region == null || region.RegionID != regionInfos.RegionID)
{
region = rdata;
m_log.WarnFormat("{0} FindAnyConflictingRegion: conflict of varregion {1} overlaps existing region {2}",
LogHeader, RegionString(regionInfos), RegionString(region));
reason = String.Format("Region {0} would overlap existing region {1}",
RegionString(regionInfos), RegionString(region));
if (m_SuppressVarregionOverlapCheckOnRegistration)
region = noErrorRegion;
return region;
}
}
}
// If we get here, region is either null (nothing found here) or
// is the non-conflicting region found at the location being requested.
return region;
}
*/
// String describing name and region location of passed region // String describing name and region location of passed region
private String RegionString(RegionData reg) private String RegionString(RegionData reg)
{ {

View File

@ -36,7 +36,7 @@
; How often {in hours} should the disk be checked for expired filed ; How often {in hours} should the disk be checked for expired filed
; Specify 0 to disable expiration checking ; Specify 0 to disable expiration checking
FileCleanupTimer = 1.0 ;every hour FileCleanupTimer = 0.0 ; disabled
; If WAIT_ON_INPROGRESS_REQUESTS has been defined then this specifies how ; If WAIT_ON_INPROGRESS_REQUESTS has been defined then this specifies how
; long (in miliseconds) to block a request thread while trying to complete ; long (in miliseconds) to block a request thread while trying to complete