From ea6bf25072f133523ef33ef435d2bf5778303db1 Mon Sep 17 00:00:00 2001 From: Daniel Scheffler Date: Fri, 27 Nov 2020 13:08:31 +0100 Subject: [PATCH] SpatialIndexMediator.getFullSceneDataForDataset() now retries the query 10 times in case of a struct.error (relates to issue #103). Signed-off-by: Daniel Scheffler --- gms_preprocessing/misc/spatial_index_mediator.py | 6 ++++++ .../processing/process_controller.py | 16 +++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gms_preprocessing/misc/spatial_index_mediator.py b/gms_preprocessing/misc/spatial_index_mediator.py index 100808c..f39737c 100644 --- a/gms_preprocessing/misc/spatial_index_mediator.py +++ b/gms_preprocessing/misc/spatial_index_mediator.py @@ -321,6 +321,12 @@ class SpatialIndexMediator: else: raise TimeoutError('Spatial query timed out 10 times!') + except struct.error: + if i < self.retries - 1: + continue + else: + raise + return scenes diff --git a/gms_preprocessing/processing/process_controller.py b/gms_preprocessing/processing/process_controller.py index d3ce0f8..694f1d1 100644 --- a/gms_preprocessing/processing/process_controller.py +++ b/gms_preprocessing/processing/process_controller.py @@ -216,13 +216,15 @@ class ProcessController(object): if os.path.isfile(assumed_path_GMS_file): GMS_file_dict = INP_R.GMSfile2dict(assumed_path_GMS_file) target_LayerBandsAssignment = \ - get_LayerBandsAssignment(GMS_identifier( - image_type=dataset['image_type'], - satellite=dataset['satellite'], - sensor=dataset['sensor'], - subsystem=dataset['subsystem'] if path_logfile != path_logfile_merged_ss else '', - proc_level=ProcL, # must be respected because LBA changes after atm. Corr. - dataset_ID=dataset['dataset_ID']), nBands=(1 if dataset['sensormode'] == 'P' else None)) + get_LayerBandsAssignment( + GMS_identifier( + image_type=dataset['image_type'], + satellite=dataset['satellite'], + sensor=dataset['sensor'], + subsystem=dataset['subsystem'] if path_logfile != path_logfile_merged_ss else '', + proc_level=ProcL, # must be respected because LBA changes after atm. Corr. + dataset_ID=dataset['dataset_ID']), + nBands=(1 if dataset['sensormode'] == 'P' else None)) # check if the LayerBandsAssignment of the written dataset on disk equals the # desired LayerBandsAssignment -- GitLab