def METHOD_NAME(self, epoch, batch_idx=0):
    assert epoch >= 0
    filename = '-'.join([self.recovery_prefix, str(epoch), str(batch_idx)]) + self.extension
    save_path = os.path.join(self.recovery_dir, filename)
    self._save(save_path, epoch)
    if os.path.exists(self.last_recovery_file):
        try:
            _logger.debug("Cleaning recovery: {}".format(self.last_recovery_file))
            os.remove(self.last_recovery_file)
        except Exception as e:
            _logger.error("Exception '{}' while removing {}".format(e, self.last_recovery_file))
    self.last_recovery_file = self.curr_recovery_file
    self.curr_recovery_file = save_path