def delete_remote_basebackup(self, site, basebackup, metadata): start_time = time.monotonic() storage = self.site_transfers.get(site) main_backup_key = os.path.join(self.config["backup_sites"][site]["prefix"], "basebackup", basebackup) basebackup_data_files = [main_backup_key] if metadata.get("format") == "pghoard-bb-v2": bmeta_compressed = storage.get_contents_to_string(main_backup_key)[0] with rohmufile.file_reader(fileobj=io.BytesIO(bmeta_compressed), metadata=metadata, key_lookup=config.key_lookup_for_site(self.config, site)) as input_obj: bmeta = extract_pghoard_bb_v2_metadata(input_obj) self.log.debug("PGHoard chunk metadata: %r", bmeta) for chunk in bmeta["chunks"]: basebackup_data_files.append(os.path.join( self.config["backup_sites"][site]["prefix"], "basebackup_chunk", chunk["chunk_filename"], )) self.log.debug("Deleting basebackup datafiles: %r", ', '.join(basebackup_data_files)) for obj_key in basebackup_data_files: try: storage.delete_key(obj_key) except FileNotFoundFromStorageError: self.log.info("Tried to delete non-existent basebackup %r", obj_key) except Exception as ex: # FIXME: don't catch all exceptions; pylint: disable=broad-except self.log.exception("Problem deleting: %r", obj_key) self.metrics.unexpected_exception(ex, where="delete_remote_basebackup") self.log.info("Deleted basebackup datafiles: %r, took: %.2fs", ', '.join(basebackup_data_files), time.monotonic() - start_time)