def create_scheduled_snapshot(self, fs_name, path, retention, start, repeat):
log.debug(f'Scheduled snapshot of {path} triggered')
+ set_schedule_to_inactive = False
with self.get_schedule_db(fs_name) as conn_mgr:
db = conn_mgr.dbinfo.db
try:
log.info(f'created scheduled snapshot of {path}')
log.debug(f'created scheduled snapshot {snap_name}')
sched.update_last(time, db)
+ except cephfs.ObjectNotFound:
+ # maybe path is missing or wrong
+ self._log_exception('create_scheduled_snapshot')
+ log.debug(f'path {path} is probably missing or wrong; '
+ 'remember to strip off the mount point path '
+ 'prefix to provide the correct path')
+ set_schedule_to_inactive = True
except cephfs.Error:
- self._log_exception('create_scheduled_snapshot: '
- 'unexpected exception; '
- f'deactivating schedule fs:"{fs_name}" '
- f'path:"{path}" repeat:"{repeat}" '
- f'retention:"{retention}"')
- sched.set_inactive(db)
+ self._log_exception('create_scheduled_snapshot')
except Exception:
# catch all exceptions cause otherwise we'll never know since this
# is running in a thread
self._log_exception('create_scheduled_snapshot')
+ finally:
+ if set_schedule_to_inactive:
+ sched.set_inactive(db)
finally:
self.refresh_snap_timers(fs_name, path, db)
self.prune_snapshots(sched, db)