# Ferma il relay solo sull'owner. Se il job gira su un altro host, requeue breve. class YoutubeRelayStopJob < ApplicationJob queue_as Streams::YoutubeRelay::QUEUE discard_on ActiveJob::DeserializationError def perform(session_id, attempts = 0) session = StreamSession.find_by(id: session_id) return unless session unless Streams::YoutubeRelay.worker? # Solo i worker relay processano questa coda in modo utile. return end result = Streams::YoutubeRelay.stop_on_worker!(session) return unless result == :wrong_host return if attempts >= 30 self.class.set(wait: 2.seconds).perform_later(session_id, attempts + 1) end end