mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
fix scheduled task crash
This commit is contained in:
parent
cfd3248af7
commit
0b2c5fe6f4
@ -106,10 +106,17 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
public void QueueScheduledTask<T>(TaskExecutionOptions options)
|
public void QueueScheduledTask<T>(TaskExecutionOptions options)
|
||||||
where T : IScheduledTask
|
where T : IScheduledTask
|
||||||
{
|
{
|
||||||
var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T));
|
var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == typeof(T));
|
||||||
|
|
||||||
|
if (scheduledTask == null)
|
||||||
|
{
|
||||||
|
Logger.Error("Unable to find scheduled task of type {0} in QueueScheduledTask.", typeof(T).Name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QueueScheduledTask(scheduledTask, options);
|
QueueScheduledTask(scheduledTask, options);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void QueueScheduledTask<T>()
|
public void QueueScheduledTask<T>()
|
||||||
where T : IScheduledTask
|
where T : IScheduledTask
|
||||||
@ -124,10 +131,17 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||||||
/// <param name="options">The task options.</param>
|
/// <param name="options">The task options.</param>
|
||||||
public void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options)
|
public void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options)
|
||||||
{
|
{
|
||||||
var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == task.GetType());
|
var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == task.GetType());
|
||||||
|
|
||||||
|
if (scheduledTask == null)
|
||||||
|
{
|
||||||
|
Logger.Error("Unable to find scheduled task of type {0} in QueueScheduledTask.", task.GetType().Name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QueueScheduledTask(scheduledTask, options);
|
QueueScheduledTask(scheduledTask, options);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queues the scheduled task.
|
/// Queues the scheduled task.
|
||||||
|
@ -500,6 +500,10 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetParent(Folder parent)
|
public void SetParent(Folder parent)
|
||||||
|
@ -618,6 +618,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||||||
_logger.ErrorException("Error recording", ex);
|
_logger.ErrorException("Error recording", ex);
|
||||||
recording.Status = RecordingStatus.Error;
|
recording.Status = RecordingStatus.Error;
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CancellationTokenSource removed;
|
||||||
|
_activeRecordings.TryRemove(timer.Id, out removed);
|
||||||
|
}
|
||||||
|
|
||||||
recording.DateLastUpdated = DateTime.UtcNow;
|
recording.DateLastUpdated = DateTime.UtcNow;
|
||||||
_recordingProvider.Update(recording);
|
_recordingProvider.Update(recording);
|
||||||
@ -627,15 +632,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||||||
OnSuccessfulRecording(recording);
|
OnSuccessfulRecording(recording);
|
||||||
_timerProvider.Delete(timer);
|
_timerProvider.Delete(timer);
|
||||||
}
|
}
|
||||||
else
|
else if (DateTime.UtcNow < timer.EndDate)
|
||||||
{
|
|
||||||
if (DateTime.UtcNow < timer.EndDate)
|
|
||||||
{
|
{
|
||||||
const int retryIntervalSeconds = 60;
|
const int retryIntervalSeconds = 60;
|
||||||
_logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
|
_logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
|
||||||
|
|
||||||
_timerProvider.StartTimer(timer, TimeSpan.FromSeconds(retryIntervalSeconds));
|
_timerProvider.StartTimer(timer, TimeSpan.FromSeconds(retryIntervalSeconds));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_timerProvider.Delete(timer);
|
||||||
|
_recordingProvider.Delete(recording);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user