* Changed the watchdog timer to improve the speed of UpdateThread(), only track threads once the first call to UpdateThread() has been made, and allow re-tracking of threads that timed out but revived later

* Added a commented out call to Watchdog.UpdateThread() in OdeScene. If it turns out that loading a large OAR file or some other operation is timing out the heartbeat thread, we'll need to uncomment it
This commit is contained in:
John Hurliman
2009-10-26 14:41:27 -07:00
parent c04775bf68
commit ac7ccdf7d7
3 changed files with 38 additions and 32 deletions

View File

@@ -1025,6 +1025,7 @@ namespace OpenSim.Region.Framework.Scenes
float physicsFPS = 0;
frameMS = Environment.TickCount;
try
{
// Increment the frame counter
@@ -1152,6 +1153,7 @@ namespace OpenSim.Region.Framework.Scenes
if ((maintc < (m_timespan * 1000)) && maintc > 0)
Thread.Sleep(maintc);
// Tell the watchdog that this thread is still alive
Watchdog.UpdateThread();
}
}

View File

@@ -2705,8 +2705,6 @@ namespace OpenSim.Region.Physics.OdePlugin
{
foreach (OdePrim prim in _taintedPrimL)
{
if (prim.m_taintremove)
{
//Console.WriteLine("Simulate calls RemovePrimThreadLocked");
@@ -2719,6 +2717,12 @@ namespace OpenSim.Region.Physics.OdePlugin
}
processedtaints = true;
prim.m_collisionscore = 0;
// This loop can block up the Heartbeat for a very long time on large regions.
// We need to let the Watchdog know that the Heartbeat is not dead
// NOTE: This is currently commented out, but if things like OAR loading are
// timing the heartbeat out we will need to uncomment it
//Watchdog.UpdateThread();
}
if (SupportsNINJAJoints)