class Spread

Prefer the backend with the fewest active requests.

Definitions

def select(backends, queue:, request:)

Select the least-active backend, using its name for deterministic ties.

Signature

parameter backends Array(Backend)

Eligible backends with available permits.

parameter queue Queue

The request queue being scheduled.

parameter request Protocol::HTTP::Request

The pending request.

returns Backend | Nil

The preferred backend.

Implementation

def select(backends, queue:, request:)
	backends.min_by{|backend| [backend.processing, backend.name]}
end