    # 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