Exception: Legion::LLM::Errors::EscalationExhausted

Inherits:
LLMError
  • Object
show all
Defined in:
lib/legion/llm/errors.rb

Overview

All dispatch attempts failed, or eligible lanes ran out after at least one attempt. HTTP 503 + Retry-After semantics (transient upstream degradation). Distinct from NoLaneAvailable: “tried lanes, ran out” vs “nothing was ever eligible”.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attempts:, tried_lanes:, last_error: nil, message: nil) ⇒ EscalationExhausted

Returns a new instance of EscalationExhausted.



110
111
112
113
114
115
# File 'lib/legion/llm/errors.rb', line 110

def initialize(attempts:, tried_lanes:, last_error: nil, message: nil, **)
  @attempts    = attempts
  @tried_lanes = tried_lanes
  @last_error  = last_error
  super(message || "exhausted after #{attempts} attempts (tried #{tried_lanes.size} lanes); last_error=#{last_error&.class}")
end

Instance Attribute Details

#attemptsObject (readonly)

Returns the value of attribute attempts.



108
109
110
# File 'lib/legion/llm/errors.rb', line 108

def attempts
  @attempts
end

#last_errorObject (readonly)

Returns the value of attribute last_error.



108
109
110
# File 'lib/legion/llm/errors.rb', line 108

def last_error
  @last_error
end

#tried_lanesObject (readonly)

Returns the value of attribute tried_lanes.



108
109
110
# File 'lib/legion/llm/errors.rb', line 108

def tried_lanes
  @tried_lanes
end

Instance Method Details

#retryable?Boolean

Returns:

  • (Boolean)


117
# File 'lib/legion/llm/errors.rb', line 117

def retryable? = false