Files
MatchLiveTv/backend/lib/tasks/stream_sessions.rake
Emiliano Frascaro 827abf80cb Elimina i path MediaMTX orfani dopo ogni diretta.
Corregge il cleanup dei path live/match_{uuid}, rimuove sempre il path a fine sessione e lo esegue ogni ora via cron.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 20:42:40 +02:00

33 lines
1.2 KiB
Ruby

namespace :streams do
desc "Termina sessioni attive non in onda su MediaMTX e rimuove path RTMP orfani"
task cleanup_stale: :environment do
client = Mediamtx::Client.new
online = client.online_path_names
stale = StreamSession.broadcasting.includes(match: :team).reject do |session|
online.include?(session.mediamtx_path_name)
end
puts "MediaMTX online: #{online.size}"
puts "Sessioni da chiudere: #{stale.size}"
stale.each do |session|
Sessions::Stop.new(session).call
puts " ended #{session.id} (#{session.match.team.name} vs #{session.match.opponent_name})"
rescue StandardError => e
session.finish! if session.may_finish?
client.delete_path(session) if session.mediamtx_path_name.present?
puts " ended #{session.id} (fallback: #{e.message})"
end
result = Mediamtx::CleanupOrphanPaths.new(client: client).call
puts "Path MediaMTX rimossi: #{result.removed} (saltati: #{result.skipped})"
puts "Fatto."
end
desc "Rimuove path MediaMTX orfani (dirette già terminate)"
task cleanup_orphan_paths: :environment do
result = Mediamtx::CleanupOrphanPaths.new.call
puts "Path MediaMTX rimossi: #{result.removed} (saltati: #{result.skipped})"
end
end