7
7
absolute_import )
8
8
from builtins import range , object , open
9
9
10
+ import sys
10
11
from copy import deepcopy
11
12
from glob import glob
12
13
import os
13
14
import shutil
14
- import sys
15
15
from time import sleep , time
16
- from traceback import format_exc
16
+ from traceback import format_exception
17
17
18
18
import numpy as np
19
19
import scipy .sparse as ssp
@@ -159,7 +159,7 @@ def run(self, graph, config, updatehash=False):
159
159
graph ,
160
160
result = {
161
161
'result' : None ,
162
- 'traceback' : format_exc ( )
162
+ 'traceback' : ' \n ' . join ( format_exception ( * sys . exc_info ()) )
163
163
}))
164
164
else :
165
165
if result :
@@ -327,7 +327,7 @@ def _send_procs_to_workers(self, updatehash=False, graph=None):
327
327
self .proc_pending [jobid ] = False
328
328
else :
329
329
self .pending_tasks .insert (0 , (tid , jobid ))
330
- logger .info ('Finished submitting: %s ID: %d' %
330
+ logger .info ('Finished submitting: %s ID: %d' ,
331
331
(self .procs [jobid ]._id , jobid ))
332
332
else :
333
333
break
@@ -337,11 +337,17 @@ def _local_hash_check(self, jobid, graph):
337
337
self .procs [jobid ].config ['execution' ]['local_hash_check' ]):
338
338
return False
339
339
340
- cached , updated = self .procs [jobid ].is_cached ()
340
+ try :
341
+ cached , updated = self .procs [jobid ].is_cached ()
342
+ except Exception :
343
+ logger .warning ('Error while checking node hash, forcing re-run\n \n %s' ,
344
+ '\n ' .join (format_exception (* sys .exc_info ())))
345
+ return False
346
+
341
347
logger .debug ('Checking hash "%s" locally: cached=%s, updated=%s.' ,
342
348
self .procs [jobid ].fullname , cached , updated )
343
349
overwrite = self .procs [jobid ].overwrite
344
- always_run = self .procs [jobid ]._interface .always_run
350
+ always_run = self .procs [jobid ].interface .always_run
345
351
346
352
if cached and updated and (overwrite is False or
347
353
overwrite is None and not always_run ):
@@ -351,8 +357,9 @@ def _local_hash_check(self, jobid, graph):
351
357
self ._task_finished_cb (jobid , cached = True )
352
358
self ._remove_node_dirs ()
353
359
except Exception :
354
- logger .debug ('Error skipping cached node %s (%s).' ,
355
- self .procs [jobid ]._id , jobid )
360
+ logger .debug ('Error skipping cached node %s (%s).\n \n %s' ,
361
+ self .procs [jobid ]._id , jobid ,
362
+ '\n ' .join (format_exception (* sys .exc_info ())))
356
363
self ._clean_queue (jobid , graph )
357
364
self .proc_pending [jobid ] = False
358
365
return True
@@ -481,7 +488,7 @@ def _get_result(self, taskid):
481
488
taskid , timeout , node_dir ))
482
489
raise IOError (error_message )
483
490
except IOError as e :
484
- result_data ['traceback' ] = format_exc ( )
491
+ result_data ['traceback' ] = ' \n ' . join ( format_exception ( * sys . exc_info ()) )
485
492
else :
486
493
results_file = glob (os .path .join (node_dir , 'result_*.pklz' ))[0 ]
487
494
result_data = loadpkl (results_file )
0 commit comments