Fix race create sessione su CPX: ready solo dopo MediaMTX.
I nodi cloud restano in provisioning finché :9997 risponde; retry su create_path e 503 retryable se l’ingest è ancora irraggiungibile. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Streams
|
||||
# Probe reachability of MediaMTX API on a stream node (:9997).
|
||||
class NodeHealth
|
||||
def self.mediamtx_up?(node, timeout: 2)
|
||||
new(node, timeout: timeout).mediamtx_up?
|
||||
end
|
||||
|
||||
def self.promote_if_healthy!(node, timeout: 2)
|
||||
return false unless node.status == "provisioning"
|
||||
return false unless mediamtx_up?(node, timeout: timeout)
|
||||
|
||||
node.update!(status: "ready", last_health_at: Time.current)
|
||||
true
|
||||
end
|
||||
|
||||
def initialize(node, timeout: 2)
|
||||
@node = node
|
||||
@timeout = timeout
|
||||
end
|
||||
|
||||
def mediamtx_up?
|
||||
Mediamtx::Client.new(base_url: @node.api_base_url).reachable?(timeout: @timeout)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user