Evita doppi ffmpeg tra host: stop solo sull'owner, ensure con requeue a capacità piena e coda Sidekiq youtube_relay isolata. Co-authored-by: Cursor <cursoragent@cursor.com>
23 lines
676 B
Ruby
23 lines
676 B
Ruby
# 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
|