Catch failures when getting files from worker.
Treat failure to access input files at local path
different from failure to send to worker.
Change return type of start_task_on_worker().
There is no necessity to return an integer since it handles failures and the
caller doesn't have to worry if it succeeded or failed.
Differentiate between application and system level failures when starting tasks
on workers. Propagate these failures all the way up to start_task_on_worker()
where failures are currently handled.
Use the total bytes returned as sent in debugging.
On application-level failure in sending an input file, describe the file as
missing.
Change return type of fetch_output_from_worker().
There is no necessity to return an integer since it handles failures and the
caller doesn't have to worry if it succeeded or failed.
Differentiate between application and system level failures when retrieving
output files from workers. Propagate these failures all the way up to
fetch_output_from_worker() where failures are currently handled.
Clarify comment on return values of process_result().
Update code to check for new return values from
get_output_files().
Clarify comments.
Add handle_app_failure() & handle_worker_failure().