# File lib/rack/session/pool.rb, line 59
      def set_session(env, session_id, new_session, options)
        @mutex.lock if env['rack.multithread']
        session = @pool[session_id]
        if options[:renew] or options[:drop]
          @pool.delete session_id
          return false if options[:drop]
          session_id = generate_sid
          @pool.store session_id, 0
        end
        old_session = new_session.instance_variable_get('@old') || {}
        session = merge_sessions session_id, old_session, new_session, session
        @pool.store session_id, session
        return session_id
      rescue
        warn "#{new_session.inspect} has been lost."
        warn $!.inspect
      ensure
        @mutex.unlock if env['rack.multithread']
      end