diff --git a/CHANGELOG.md b/CHANGELOG.md index 627ae1a..2ad17d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +### Fixed +- extractor would fail on empty dataset download [#36](https://github.com/clowder-framework/pyclowder/issues/36) + ### Added - ability to set the heartbeat for an extractractor [#42](https://github.com/clowder-framework/pyclowder/issues/42) diff --git a/pyclowder/connectors.py b/pyclowder/connectors.py index e1dcbab..1da8a22 100644 --- a/pyclowder/connectors.py +++ b/pyclowder/connectors.py @@ -293,6 +293,9 @@ def _download_file_metadata(self, host, secret_key, fileid, filepath): return (md_dir, md_file) def _prepare_dataset(self, host, secret_key, resource): + logger = logging.getLogger(__name__) + + file_paths = [] located_files = [] missing_files = [] tmp_files_created = [] @@ -354,10 +357,13 @@ def _prepare_dataset(self, host, secret_key, resource): # If we didn't find any files locally, download dataset .zip as normal else: - inputzip = pyclowder.datasets.download(self, host, secret_key, resource["id"]) - file_paths = pyclowder.utils.extract_zip_contents(inputzip) - tmp_files_created += file_paths - tmp_files_created.append(inputzip) + try: + inputzip = pyclowder.datasets.download(self, host, secret_key, resource["id"]) + file_paths = pyclowder.utils.extract_zip_contents(inputzip) + tmp_files_created += file_paths + tmp_files_created.append(inputzip) + except Exception as e: + logger.exception("No files found and download failed") return (file_paths, tmp_files_created, tmp_dirs_created)