# File lib/chef/client.rb, line 144
    def run
      run_context = nil

      Chef::Log.info("*** Chef #{Chef::VERSION} ***")
      enforce_path_sanity
      run_ohai
      register unless Chef::Config[:solo]
      build_node

      begin

        run_status.start_clock
        Chef::Log.info("Starting Chef Run for #{node.name}")
        run_started

        run_context = setup_run_context
        converge(run_context)
        save_updated_node

        run_status.stop_clock
        Chef::Log.info("Chef Run complete in #{run_status.elapsed_time} seconds")
        run_completed_successfully
        true
      rescue Exception => e
        run_status.stop_clock
        run_status.exception = e
        run_failed
        Chef::Log.debug("Re-raising exception: #{e.class} - #{e.message}\n#{e.backtrace.join("\n  ")}")
        raise
      ensure
        run_status = nil
      end
      true
    end