anchor.diff:  
   finish_job(Reason, #state{job = Job} = State) ->
       lager:info("Job ~p -> ~p", [Job#pushy_job.id, Reason]),
  -    State2 = finish_all_nodes(State),
       Job2 = Job#pushy_job{status = Reason},
  -    State3 = State2#state{job = Job2},
  +    State2 = State#state{job = Job2},
       pushy_object:update_object(update_job, Job2, Job2#pushy_job.id),
  -    {stop, {shutdown, Reason}, State3}.
  +    {stop, {shutdown, Reason}, State2}.
   
   count_nodes_in_state(NodeStates, #state{job_nodes = JobNodes}) ->
       dict:fold(
  
positive.code: 
  -spec handle_event(any(), job_status(), #state{}) ->
          {'next_state', job_status(), #state{}}.
  handle_event(Event, _StateName, State) ->
      lager:error("Unknown message handle_event(~p)", [Event]),
      finish_job(faulty, State).
  
  -spec handle_sync_event(any(), any(), job_status(), #state{}) ->
          {'reply', 'ok', job_status(), #state{}}.
  
negative.code: handle_info(running_timeout, running,
          #state{job = Job, running_timeout = RunningTimeout} = State) ->
      lager:info("Timeout occurred while running job ~p after ~p milliseconds", [Job#pushy_job.id, RunningTimeout]),
      State2 = send_matching_to_rehab(ready, aborted, State),
      State3 = send_matching_to_rehab(running, aborted, State2),
      finish_job(timed_out, State3);
  handle_info(Info, StateName, State) ->
      lager:error("Unknown message handle_info(~p)", [Info]),
      {next_state, StateName, State}.
  