diff options
author | Justin Clark-Casey (justincc) | 2012-02-24 05:02:33 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-02-24 05:02:33 +0000 |
commit | f67f37074f3f7e0602b66aa66a044dd9fd107f6a (patch) | |
tree | f4e592451ab205b23075d423dab1a2a94dee5629 /OpenSim/Region/Framework/Scenes | |
parent | In osSetSpeed(), if no avatar for a uuid is found then don't attempt to set s... (diff) | |
download | opensim-SC_OLD-f67f37074f3f7e0602b66aa66a044dd9fd107f6a.zip opensim-SC_OLD-f67f37074f3f7e0602b66aa66a044dd9fd107f6a.tar.gz opensim-SC_OLD-f67f37074f3f7e0602b66aa66a044dd9fd107f6a.tar.bz2 opensim-SC_OLD-f67f37074f3f7e0602b66aa66a044dd9fd107f6a.tar.xz |
Stop spurious scene loop startup timeout alarms for scenes with many prims.
On the first frame, all startup scene objects are added to the physics scene.
This can cause a considerable delay, so we don't start raising the alarm on scene loop timeouts until the second frame.
This commit also slightly changes the behaviour of timeout reporting.
Previously, a report was made for the very first timed out thread, ignoring all others until the next watchdog check.
Instead, we now report every timed out thread, though we still only do this once no matter how long the timeout.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index cf6e6af..19d4bad 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1140,7 +1140,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1140 | 1140 | ||
1141 | HeartbeatThread | 1141 | HeartbeatThread |
1142 | = Watchdog.StartThread( | 1142 | = Watchdog.StartThread( |
1143 | Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false); | 1143 | Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false); |
1144 | } | 1144 | } |
1145 | 1145 | ||
1146 | /// <summary> | 1146 | /// <summary> |
@@ -1178,6 +1178,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
1178 | try | 1178 | try |
1179 | { | 1179 | { |
1180 | m_eventManager.TriggerOnRegionStarted(this); | 1180 | m_eventManager.TriggerOnRegionStarted(this); |
1181 | |||
1182 | // The first frame can take a very long time due to physics actors being added on startup. Therefore, | ||
1183 | // don't turn on the watchdog alarm for this thread until the second frame, in order to prevent false | ||
1184 | // alarms for scenes with many objects. | ||
1185 | Update(); | ||
1186 | Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true; | ||
1187 | |||
1181 | while (!shuttingdown) | 1188 | while (!shuttingdown) |
1182 | Update(); | 1189 | Update(); |
1183 | 1190 | ||
@@ -1206,7 +1213,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1206 | 1213 | ||
1207 | ++Frame; | 1214 | ++Frame; |
1208 | 1215 | ||
1209 | // m_log.DebugFormat("[SCENE]: Processing frame {0}", Frame); | 1216 | // m_log.DebugFormat("[SCENE]: Processing frame {0} in {1}", Frame, RegionInfo.RegionName); |
1210 | 1217 | ||
1211 | try | 1218 | try |
1212 | { | 1219 | { |
@@ -1418,7 +1425,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1418 | entry.checkAtTargets(); | 1425 | entry.checkAtTargets(); |
1419 | } | 1426 | } |
1420 | 1427 | ||
1421 | |||
1422 | /// <summary> | 1428 | /// <summary> |
1423 | /// Send out simstats data to all clients | 1429 | /// Send out simstats data to all clients |
1424 | /// </summary> | 1430 | /// </summary> |