# previous recovery event for that osd
if marked == "in":
for ev_id in list(self._events):
- ev = self._events[ev_id]
- if isinstance(ev, PgRecoveryEvent) and osd_id in ev.which_osds:
- self.log.info("osd.{0} came back in, cancelling event".format(
- osd_id
- ))
- self._complete(ev)
+ try:
+ ev = self._events[ev_id]
+ if isinstance(ev, PgRecoveryEvent) and osd_id in ev.which_osds:
+ self.log.info("osd.{0} came back in, cancelling event".format(
+ osd_id
+ ))
+ self._complete(ev)
+ except KeyError:
+ self.log.warning("_osd_in_out: ev {0} does not exist".format(ev_id))
if len(affected_pgs) > 0:
r_ev = PgRecoveryEvent(
global_event = False
data = self.get("pg_progress")
for ev_id in list(self._events):
- ev = self._events[ev_id]
- # Check for types of events
- # we have to update
- if isinstance(ev, PgRecoveryEvent):
- ev.pg_update(data, self.log)
- self.maybe_complete(ev)
- elif isinstance(ev, GlobalRecoveryEvent):
- global_event = True
- ev.global_event_update_progress(self.log)
- self.maybe_complete(ev)
+ try:
+ ev = self._events[ev_id]
+ # Check for types of events
+ # we have to update
+ if isinstance(ev, PgRecoveryEvent):
+ ev.pg_update(data, self.log)
+ self.maybe_complete(ev)
+ elif isinstance(ev, GlobalRecoveryEvent):
+ global_event = True
+ ev.global_event_update_progress(self.log)
+ self.maybe_complete(ev)
+ except KeyError:
+ self.log.warning("_process_pg_summary: ev {0} does not exist".format(ev_id))
+ continue
if not global_event:
# If there is no global event
ev = self._events[ev_id]
assert isinstance(ev, RemoteEvent)
except KeyError:
+ # if key doesn't exist we create an event
ev = RemoteEvent(ev_id, ev_msg, refs, add_to_ceph_s)
self._events[ev_id] = ev
self.log.info("update: starting ev {0} ({1})".format(