Module: GraphQL::Schema::Timeout::Trace
- Defined in:
 - lib/graphql/schema/timeout.rb
 
Instance Method Summary collapse
- 
  
    
      #execute_field(query:, field:, **_rest)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #execute_multiplex(multiplex:)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #initialize(timeout:, **rest)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 
Instance Method Details
#execute_field(query:, field:, **_rest) ⇒ Object
      71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86  | 
    
      # File 'lib/graphql/schema/timeout.rb', line 71 def execute_field(query:, field:, **_rest) timeout_state = query.context.namespace(@timeout).fetch(:state) # If the `:state` is `false`, then `max_seconds(query)` opted out of timeout for this query. if timeout_state != false && Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) > timeout_state.fetch(:timeout_at) error = GraphQL::Schema::Timeout::TimeoutError.new(field) # Only invoke the timeout callback for the first timeout if !timeout_state[:timed_out] timeout_state[:timed_out] = true @timeout.handle_timeout(error, query) end error else super end end  | 
  
#execute_multiplex(multiplex:) ⇒ Object
      52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69  | 
    
      # File 'lib/graphql/schema/timeout.rb', line 52 def execute_multiplex(multiplex:) multiplex.queries.each do |query| timeout_duration_s = @timeout.max_seconds(query) timeout_state = if timeout_duration_s == false # if the method returns `false`, don't apply a timeout false else now = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) timeout_at = now + (timeout_duration_s * 1000) { timeout_at: timeout_at, timed_out: false } end query.context.namespace(@timeout)[:state] = timeout_state end super end  | 
  
#initialize(timeout:, **rest) ⇒ Object
      47 48 49 50  | 
    
      # File 'lib/graphql/schema/timeout.rb', line 47 def initialize(timeout:, **rest) @timeout = timeout super end  |