solve TypeError while running: can't modify rbtree during iteration
FossilOrigin-Name: 7f0ffa614508b9c9cfe1bd71295d00f3f24c852436be1552955c3d03e582b85a
This commit is contained in:
parent
2682000224
commit
769bfa8673
1 changed files with 7 additions and 2 deletions
|
|
@ -124,17 +124,19 @@ class Symphony::Metronome::Scheduler
|
|||
def process_events
|
||||
now = Time.now
|
||||
|
||||
events_to_delete = []
|
||||
events_to_add = []
|
||||
self.queue.each do |ev|
|
||||
next unless now >= ev.runtime
|
||||
|
||||
self.queue.delete( ev )
|
||||
events_to_delete << ev
|
||||
rv = ev.fire( &@proc )
|
||||
|
||||
# Reschedule the event and place it back on the queue.
|
||||
#
|
||||
if ev.event.recurring
|
||||
ev.reset_runtime
|
||||
self.queue.add( ev ) unless rv.nil?
|
||||
events_to_add << ev unless rv.nil?
|
||||
|
||||
# It was a single run event, torch it!
|
||||
#
|
||||
|
|
@ -143,6 +145,9 @@ class Symphony::Metronome::Scheduler
|
|||
|
||||
end
|
||||
end
|
||||
|
||||
events_to_delete.map{|e| self.queue.delete( e ) }
|
||||
events_to_add.map{|e| self.queue.add( e ) }
|
||||
end
|
||||
|
||||
end # Symphony::Metronome::Scheduler
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue