Hey,
I’m currently writing a facility event plugin and noticed that if there are any syntax errrors in the plugin, Deadline won’t output any sort of traceback letting the user know what crashed and why. The only way I’ve known if the event plugin errored, is if the Job Reports lack any entry for that event plugin. To get around this issue, I’ve been doing:
import traceback
try:
sys.path.append("\\\\ladev\\bb\\site-packages")
from bb.pipeline import Pipeline
p = Pipeline()
ClientUtils.LogText("successfully imported.")
except:
exc_type, exc_value, exc_traceback = sys.exc_info()
print "*** print_tb:"
traceback.print_tb(exc_traceback, limit=1, file=sys.stdout)
print "*** print_exception:"
traceback.print_exception(exc_type, exc_value, exc_traceback,
limit=2, file=sys.stdout)
print "*** print_exc:"
traceback.print_exc()
print "*** format_exc, first and last line:"
formatted_lines = traceback.format_exc().splitlines()
print formatted_lines[0]
print formatted_lines[-1]
print "*** format_exception:"
print repr(traceback.format_exception(exc_type, exc_value,
exc_traceback))
print "*** extract_tb:"
print repr(traceback.extract_tb(exc_traceback))
print "*** format_tb:"
print repr(traceback.format_tb(exc_traceback))
print "*** tb_lineno:", exc_traceback.tb_lineno
However, this gets a bit messy and isn’t exactly ideal for debugging the event plugin. Is there anything available in the Deadline events api that handles errors without the need to parse the traceback?