aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/mauve/alert.rb15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/mauve/alert.rb b/lib/mauve/alert.rb
index 82f9e91..3307b59 100644
--- a/lib/mauve/alert.rb
+++ b/lib/mauve/alert.rb
@@ -902,12 +902,15 @@ module Mauve
#
if update.replace
alert_ids_mentioned = update.alert.map { |alert| alert.id }
- logger.info "Replacing all alerts from #{update.source} except "+alert_ids_mentioned.join(",")
- all(:source => update.source,
- :alert_id.not => alert_ids_mentioned,
- :cleared_at => nil
- ).each do |alert_db|
- alert_db.clear!
+ logger.info "Replacing all alerts from #{update.source}"+(alert_ids_mentioned.count > 0 ? " except "+alert_ids_mentioned.join(",") : "")
+ #
+ # The to_a is used here to make sure datamapper runs the query now,
+ # rather than at some point in the future.
+ #
+ Alert.all(:source => update.source,
+ :alert_id.not => alert_ids_mentioned
+ ).to_a.each do |alert_db|
+ alert_db.clear! unless alert_db.cleared?
end
end