@@ -170,7 +170,10 @@ def __init__(self, args):
170170
171171 remove = []
172172 for rule in self .rules :
173- if not self .init_rule (rule ):
173+ if 'is_enabled' in rule and not rule ['is_enabled' ]:
174+ self .disabled_rules .append (rule )
175+ remove .append (rule )
176+ elif not self .init_rule (rule ):
174177 remove .append (rule )
175178 list (map (self .rules .remove , remove ))
176179
@@ -968,7 +971,7 @@ def run_rule(self, rule, endtime, starttime=None):
968971
969972 def init_rule (self , new_rule , new = True ):
970973 ''' Copies some necessary non-config state from an exiting rule to a new rule. '''
971- if not new :
974+ if not new and self . scheduler . get_job ( job_id = new_rule [ 'name' ]) :
972975 self .scheduler .remove_job (job_id = new_rule ['name' ])
973976
974977 try :
@@ -1088,6 +1091,15 @@ def load_rule_changes(self):
10881091 elastalert_logger .info ('Rule file %s is now disabled.' % (rule_file ))
10891092 # Remove this rule if it's been disabled
10901093 self .rules = [rule for rule in self .rules if rule ['rule_file' ] != rule_file ]
1094+ # Stop job if is running
1095+ if self .scheduler .get_job (job_id = new_rule ['name' ]):
1096+ self .scheduler .remove_job (job_id = new_rule ['name' ])
1097+ # Append to disabled_rule
1098+ for disabled_rule in self .disabled_rules :
1099+ if disabled_rule ['name' ] == new_rule ['name' ]:
1100+ break
1101+ else :
1102+ self .disabled_rules .append (new_rule )
10911103 continue
10921104 except EAException as e :
10931105 message = 'Could not load rule %s: %s' % (rule_file , e )
@@ -1106,7 +1118,6 @@ def load_rule_changes(self):
11061118 # Re-enable if rule had been disabled
11071119 for disabled_rule in self .disabled_rules :
11081120 if disabled_rule ['name' ] == new_rule ['name' ]:
1109- self .rules .append (disabled_rule )
11101121 self .disabled_rules .remove (disabled_rule )
11111122 break
11121123
0 commit comments