diff options
author | UbitUmarov | 2015-11-27 13:32:49 +0000 |
---|---|---|
committer | UbitUmarov | 2015-11-27 13:32:49 +0000 |
commit | 9224b5d68049c0b8b3a5d7a9b3dcd6d5f4c1f005 (patch) | |
tree | efe90618b4e071b793a0eae06eafdfc9fe507931 /OpenSim/Framework/Monitoring | |
parent | change JobEngine stop code and add a extra check for thread removed on watch... (diff) | |
download | opensim-SC_OLD-9224b5d68049c0b8b3a5d7a9b3dcd6d5f4c1f005.zip opensim-SC_OLD-9224b5d68049c0b8b3a5d7a9b3dcd6d5f4c1f005.tar.gz opensim-SC_OLD-9224b5d68049c0b8b3a5d7a9b3dcd6d5f4c1f005.tar.bz2 opensim-SC_OLD-9224b5d68049c0b8b3a5d7a9b3dcd6d5f4c1f005.tar.xz |
revert last change to watchdog timeouts, that should not be needed
Diffstat (limited to 'OpenSim/Framework/Monitoring')
-rw-r--r-- | OpenSim/Framework/Monitoring/Watchdog.cs | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/OpenSim/Framework/Monitoring/Watchdog.cs b/OpenSim/Framework/Monitoring/Watchdog.cs index 83f8e01..b2c1fb1 100644 --- a/OpenSim/Framework/Monitoring/Watchdog.cs +++ b/OpenSim/Framework/Monitoring/Watchdog.cs | |||
@@ -332,41 +332,37 @@ namespace OpenSim.Framework.Monitoring | |||
332 | if (callback != null) | 332 | if (callback != null) |
333 | { | 333 | { |
334 | List<ThreadWatchdogInfo> callbackInfos = null; | 334 | List<ThreadWatchdogInfo> callbackInfos = null; |
335 | |||
336 | // get a copy since we may change m_threads | ||
337 | List<ThreadWatchdogInfo> threadsInfo; | 335 | List<ThreadWatchdogInfo> threadsInfo; |
336 | |||
338 | lock (m_threads) | 337 | lock (m_threads) |
339 | threadsInfo = m_threads.Values.ToList(); | ||
340 | |||
341 | foreach (ThreadWatchdogInfo threadInfo in threadsInfo) | ||
342 | { | 338 | { |
343 | lock (m_threads) | 339 | // get a copy since we may change m_threads |
344 | { | 340 | threadsInfo = m_threads.Values.ToList(); |
345 | if(!m_threads.ContainsValue(threadInfo)) | ||
346 | continue; | ||
347 | } | ||
348 | |||
349 | if(threadInfo.Thread.ThreadState == ThreadState.Stopped) | ||
350 | { | ||
351 | RemoveThread(threadInfo.Thread.ManagedThreadId); | ||
352 | |||
353 | if(callbackInfos == null) | ||
354 | callbackInfos = new List<ThreadWatchdogInfo>(); | ||
355 | 341 | ||
356 | callbackInfos.Add(threadInfo); | 342 | foreach(ThreadWatchdogInfo threadInfo in threadsInfo) |
357 | } | ||
358 | else if(!threadInfo.IsTimedOut && now - threadInfo.LastTick >= threadInfo.Timeout) | ||
359 | { | 343 | { |
360 | threadInfo.IsTimedOut = true; | 344 | if(threadInfo.Thread.ThreadState == ThreadState.Stopped) |
361 | |||
362 | if(threadInfo.AlarmIfTimeout) | ||
363 | { | 345 | { |
346 | RemoveThread(threadInfo.Thread.ManagedThreadId); | ||
347 | |||
364 | if(callbackInfos == null) | 348 | if(callbackInfos == null) |
365 | callbackInfos = new List<ThreadWatchdogInfo>(); | 349 | callbackInfos = new List<ThreadWatchdogInfo>(); |
366 | 350 | ||
367 | // Send a copy of the watchdog info to prevent race conditions where the watchdog | 351 | callbackInfos.Add(threadInfo); |
368 | // thread updates the monitoring info after an alarm has been sent out. | 352 | } |
369 | callbackInfos.Add(new ThreadWatchdogInfo(threadInfo)); | 353 | else if(!threadInfo.IsTimedOut && now - threadInfo.LastTick >= threadInfo.Timeout) |
354 | { | ||
355 | threadInfo.IsTimedOut = true; | ||
356 | |||
357 | if(threadInfo.AlarmIfTimeout) | ||
358 | { | ||
359 | if(callbackInfos == null) | ||
360 | callbackInfos = new List<ThreadWatchdogInfo>(); | ||
361 | |||
362 | // Send a copy of the watchdog info to prevent race conditions where the watchdog | ||
363 | // thread updates the monitoring info after an alarm has been sent out. | ||
364 | callbackInfos.Add(new ThreadWatchdogInfo(threadInfo)); | ||
365 | } | ||
370 | } | 366 | } |
371 | } | 367 | } |
372 | } | 368 | } |