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.



123
124
125
126
127
128
# File 'lib/legion/llm/errors.rb', line 123

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.



121
122
123
# File 'lib/legion/llm/errors.rb', line 121

def attempts
  @attempts
end

#last_errorObject (readonly)

Returns the value of attribute last_error.



121
122
123
# File 'lib/legion/llm/errors.rb', line 121

def last_error
  @last_error
end

#tried_lanesObject (readonly)

Returns the value of attribute tried_lanes.



121
122
123
# File 'lib/legion/llm/errors.rb', line 121

def tried_lanes
  @tried_lanes
end

Instance Method Details

#retryable?Boolean

Returns:

  • (Boolean)


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

def retryable? = false