Skip to content

Commit

Permalink
Revert "Fixes for task Cancellation Handling (#1004)"
Browse files Browse the repository at this point in the history
This reverts commit fdfc226.
  • Loading branch information
sambles committed Mar 28, 2024
1 parent 0c2373c commit edd92e0
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 32 deletions.
2 changes: 1 addition & 1 deletion src/model_execution_worker/distributed_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -693,7 +693,7 @@ def write_input_files(self, params, run_data_uuid=None, analysis_id=None, initia
# clear out user-data,
# these files should not be sorted in the generated inputs tar
if params['user_data_dir'] is not None:
shutil.rmtree(params['user_data_dir'], ignore_errors=True)
shutil.rmtree(params['user_data_dir'])

return {
'lookup_error_location': filestore.put(os.path.join(params['target_dir'], 'keys-errors.csv')),
Expand Down
2 changes: 1 addition & 1 deletion src/model_execution_worker/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ def __enter__(self):

def __exit__(self, exc_type, exc_value, traceback):
if not self.persist and os.path.isdir(self.name):
shutil.rmtree(self.name, ignore_errors=True)
shutil.rmtree(self.name)


def get_oasislmf_config_path(settings, model_id=None):
Expand Down
5 changes: 2 additions & 3 deletions src/server/oasisapi/analyses/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -575,9 +575,8 @@ def generate_and_run(self, initiator):
self.save()

def cancel_subtasks(self):
if self.run_mode == self.run_mode_choices.V2:
cancel_tasks = self.v2_cancel_subtasks_signature
task_id = cancel_tasks.apply_async(args=[self.pk], priority=1).id
cancel_tasks = self.v2_cancel_subtasks_signature
task_id = cancel_tasks.apply_async(args=[self.pk], priority=1).id

def generate_inputs(self, initiator, run_mode_override=None):
valid_choices = [
Expand Down
44 changes: 20 additions & 24 deletions src/server/oasisapi/analyses/v1_api/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -456,19 +456,17 @@ def record_run_analysis_failure(analysis_pk, initiator_pk, traceback):
analysis = Analysis.objects.get(pk=analysis_pk)
analysis.status = Analysis.status_choices.RUN_ERROR
analysis.task_finished = timezone.now()
analysis.save()

if traceback:
random_filename = '{}.txt'.format(uuid.uuid4().hex)
with TemporaryFile() as tmp_file:
tmp_file.write(traceback.encode('utf-8'))
analysis.run_traceback_file = RelatedFile.objects.create(
file=File(tmp_file, name=random_filename),
filename=f'analysis_{analysis_pk}_run_traceback.txt',
content_type='text/plain',
creator=get_user_model().objects.get(pk=initiator_pk),
)
else:
logging.error('Could not extract traceback')
random_filename = '{}.txt'.format(uuid.uuid4().hex)
with TemporaryFile() as tmp_file:
tmp_file.write(traceback.encode('utf-8'))
analysis.run_traceback_file = RelatedFile.objects.create(
file=File(tmp_file, name=random_filename),
filename=f'analysis_{analysis_pk}_run_traceback.txt',
content_type='text/plain',
creator=get_user_model().objects.get(pk=initiator_pk),
)

# remove the current command log file
if analysis.run_log_file:
Expand All @@ -490,19 +488,17 @@ def record_generate_input_failure(analysis_pk, initiator_pk, traceback):
analysis = Analysis.objects.get(pk=analysis_pk)
analysis.status = Analysis.status_choices.INPUTS_GENERATION_ERROR
analysis.task_finished = timezone.now()
analysis.save()

if traceback:
random_filename = '{}.txt'.format(uuid.uuid4().hex)
with TemporaryFile() as tmp_file:
tmp_file.write(traceback.encode('utf-8'))
analysis.input_generation_traceback_file = RelatedFile.objects.create(
file=File(tmp_file, name=random_filename),
filename=f'analysis_{analysis_pk}_generation_traceback.txt',
content_type='text/plain',
creator=get_user_model().objects.get(pk=initiator_pk),
)
else:
logging.error('Could not extract traceback')
random_filename = '{}.txt'.format(uuid.uuid4().hex)
with TemporaryFile() as tmp_file:
tmp_file.write(traceback.encode('utf-8'))
analysis.input_generation_traceback_file = RelatedFile.objects.create(
file=File(tmp_file, name=random_filename),
filename=f'analysis_{analysis_pk}_generation_traceback.txt',
content_type='text/plain',
creator=get_user_model().objects.get(pk=initiator_pk),
)

analysis.save()
except Exception as e:
Expand Down
4 changes: 1 addition & 3 deletions src/server/oasisapi/analyses/v2_api/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -684,9 +684,7 @@ def handle_task_failure(
from ..models import Analysis

analysis = Analysis.objects.get(pk=analysis_id)
if analysis.status not in [analysis.status_choices.INPUTS_GENERATION_CANCELLED,
analysis.status_choices.RUN_CANCELLED]:
analysis.status = failure_status
analysis.status = failure_status
analysis.task_finished = timezone.now()

random_filename = '{}.txt'.format(uuid.uuid4().hex)
Expand Down

0 comments on commit edd92e0

Please sign in to comment.