Thread dead lock in ActionManager.rb
|Assignee:||Ruben S. Montero||% Done:|
|Category:||Core & System|
|Affected Versions:||OpenNebula 3.0|
It's possible for ActionManager threads to dead lock, periodic wake up (or `signalling') solves this. When deadlocked hosts will flip between INIT and MONITORING states until oned is restarted. Attached patch solves this by adding a new thread that every 5..15 seconds wakes up and signals, this has no side effects as if the queue is empty the thread wake-up will end up as a no-op anyway.
#2 Updated by Krzysztof Pawlik about 8 years ago
As with most race-conditions it was quite hard to reproduce, the original cause was that a call to signal() has been made before wait() was called on conditional. Such scenario occurs when the monitoring thread completes very quickly (for example dead host).