Restore overload mode accidentally disabled in a prior commit. Add a new

config option, LogOverloads, to log when a thread pool overload occurs.
This option defaults to "True" because the logging data is useful for
diagnosing threading issues.
0.8.0.3
Melanie 2014-04-25 21:34:29 +01:00
parent 2572ed9ed9
commit a108fcac95
3 changed files with 18 additions and 2 deletions

View File

@ -127,12 +127,14 @@ namespace OpenSim.Framework
/// 3 = full stack trace, including common threads
/// </summary>
public static int LogThreadPool { get; set; }
public static bool LogOverloads { get; set; }
public static readonly int MAX_THREADPOOL_LEVEL = 3;
static Util()
{
LogThreadPool = 0;
LogOverloads = true;
}
private static uint nextXferID = 5000;
@ -2172,7 +2174,7 @@ namespace OpenSim.Framework
{
long numRunning = numRunningThreadFuncs;
if (m_ThreadPool != null)
if (m_ThreadPool != null && LogOverloads)
{
if ((threadFuncOverloadMode == 0) && (numRunning >= m_ThreadPool.MaxThreads))
{
@ -2193,7 +2195,7 @@ namespace OpenSim.Framework
threadInfo.StackTrace = full;
threadInfo.LogThread = ShouldLogThread(partial);
if (loggingEnabled && threadInfo.LogThread)
if (threadInfo.LogThread)
{
m_log.DebugFormat("Queue threadfunc {0} (Queued {1}, Running {2}) {3}{4}",
threadFuncNum, numQueued, numRunningThreadFuncs,

View File

@ -154,6 +154,12 @@ namespace OpenSim
proxyUrl = networkConfig.GetString("proxy_url", "");
proxyOffset = Int32.Parse(networkConfig.GetString("proxy_offset", "0"));
}
IConfig startupConfig = Config.Configs["Startup"];
if (startupConfig != null)
{
Util.LogOverloads = startupConfig.GetBoolean("LogOverloads", true);
}
}
protected virtual void LoadPlugins()

View File

@ -292,6 +292,14 @@
; False items will be removed from the scene permanently
UseTrashOnDelete = True
; #
; # Logging
; #
; Force logging when the thread pool approaches an overload condition
; Provides useful data for post-mortem analysis even in a production
; system with reduced logging
LogOverloads = True
[Map]
;WorldMapModule = "WorldMap"