update upgrade process
This commit is contained in:
parent
89a3a77110
commit
6cb1f77789
|
@ -453,7 +453,7 @@ namespace MediaBrowser.Common.Implementations
|
||||||
|
|
||||||
RegisterSingleInstance<IApplicationPaths>(ApplicationPaths);
|
RegisterSingleInstance<IApplicationPaths>(ApplicationPaths);
|
||||||
|
|
||||||
TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, Logger, FileSystemManager);
|
TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, LogManager.GetLogger("TaskManager"), FileSystemManager);
|
||||||
|
|
||||||
RegisterSingleInstance(JsonSerializer);
|
RegisterSingleInstance(JsonSerializer);
|
||||||
RegisterSingleInstance(XmlSerializer);
|
RegisterSingleInstance(XmlSerializer);
|
||||||
|
@ -465,7 +465,7 @@ namespace MediaBrowser.Common.Implementations
|
||||||
|
|
||||||
RegisterSingleInstance(FileSystemManager);
|
RegisterSingleInstance(FileSystemManager);
|
||||||
|
|
||||||
HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger, FileSystemManager);
|
HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager);
|
||||||
RegisterSingleInstance(HttpClient);
|
RegisterSingleInstance(HttpClient);
|
||||||
|
|
||||||
NetworkManager = CreateNetworkManager(LogManager.GetLogger("NetworkManager"));
|
NetworkManager = CreateNetworkManager(LogManager.GetLogger("NetworkManager"));
|
||||||
|
@ -474,7 +474,7 @@ namespace MediaBrowser.Common.Implementations
|
||||||
SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths, LogManager);
|
SecurityManager = new PluginSecurityManager(this, HttpClient, JsonSerializer, ApplicationPaths, LogManager);
|
||||||
RegisterSingleInstance(SecurityManager);
|
RegisterSingleInstance(SecurityManager);
|
||||||
|
|
||||||
InstallationManager = new InstallationManager(Logger, this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager, FileSystemManager);
|
InstallationManager = new InstallationManager(LogManager.GetLogger("InstallationManager"), this, ApplicationPaths, HttpClient, JsonSerializer, SecurityManager, ConfigurationManager, FileSystemManager);
|
||||||
RegisterSingleInstance(InstallationManager);
|
RegisterSingleInstance(InstallationManager);
|
||||||
|
|
||||||
ZipClient = new ZipClient(FileSystemManager);
|
ZipClient = new ZipClient(FileSystemManager);
|
||||||
|
|
|
@ -55,6 +55,25 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
||||||
private ILogger Logger { get; set; }
|
private ILogger Logger { get; set; }
|
||||||
private readonly IFileSystem _fileSystem;
|
private readonly IFileSystem _fileSystem;
|
||||||
|
|
||||||
|
private bool _suspendTriggers;
|
||||||
|
|
||||||
|
public bool SuspendTriggers
|
||||||
|
{
|
||||||
|
get { return _suspendTriggers; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Logger.Info("Setting SuspendTriggers to {0}", value);
|
||||||
|
var executeQueued = _suspendTriggers && !value;
|
||||||
|
|
||||||
|
_suspendTriggers = value;
|
||||||
|
|
||||||
|
if (executeQueued)
|
||||||
|
{
|
||||||
|
ExecuteQueuedTasks();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="TaskManager" /> class.
|
/// Initializes a new instance of the <see cref="TaskManager" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -151,6 +170,31 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
||||||
QueueScheduledTask<T>(new TaskExecutionOptions());
|
QueueScheduledTask<T>(new TaskExecutionOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Execute<T>()
|
||||||
|
where T : IScheduledTask
|
||||||
|
{
|
||||||
|
var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == typeof(T));
|
||||||
|
|
||||||
|
if (scheduledTask == null)
|
||||||
|
{
|
||||||
|
Logger.Error("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var type = scheduledTask.ScheduledTask.GetType();
|
||||||
|
|
||||||
|
Logger.Info("Queueing task {0}", type.Name);
|
||||||
|
|
||||||
|
lock (_taskQueue)
|
||||||
|
{
|
||||||
|
if (scheduledTask.State == TaskState.Idle)
|
||||||
|
{
|
||||||
|
Execute(scheduledTask, new TaskExecutionOptions());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queues the scheduled task.
|
/// Queues the scheduled task.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -183,7 +227,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
||||||
|
|
||||||
lock (_taskQueue)
|
lock (_taskQueue)
|
||||||
{
|
{
|
||||||
if (task.State == TaskState.Idle)
|
if (task.State == TaskState.Idle && !SuspendTriggers)
|
||||||
{
|
{
|
||||||
Execute(task, options);
|
Execute(task, options);
|
||||||
return;
|
return;
|
||||||
|
@ -273,6 +317,13 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ExecuteQueuedTasks()
|
private void ExecuteQueuedTasks()
|
||||||
{
|
{
|
||||||
|
if (SuspendTriggers)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.Info("ExecuteQueuedTasks");
|
||||||
|
|
||||||
// Execute queued tasks
|
// Execute queued tasks
|
||||||
lock (_taskQueue)
|
lock (_taskQueue)
|
||||||
{
|
{
|
||||||
|
|
|
@ -66,7 +66,12 @@ namespace MediaBrowser.Common.ScheduledTasks
|
||||||
void Cancel(IScheduledTaskWorker task);
|
void Cancel(IScheduledTaskWorker task);
|
||||||
Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options = null);
|
Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options = null);
|
||||||
|
|
||||||
|
void Execute<T>()
|
||||||
|
where T : IScheduledTask;
|
||||||
|
|
||||||
event EventHandler<GenericEventArgs<IScheduledTaskWorker>> TaskExecuting;
|
event EventHandler<GenericEventArgs<IScheduledTaskWorker>> TaskExecuting;
|
||||||
event EventHandler<TaskCompletionEventArgs> TaskCompleted;
|
event EventHandler<TaskCompletionEventArgs> TaskCompleted;
|
||||||
|
|
||||||
|
bool SuspendTriggers { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -32,7 +32,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
private readonly ILocalizationManager _localization;
|
private readonly ILocalizationManager _localization;
|
||||||
private readonly ITaskManager _taskManager;
|
private readonly ITaskManager _taskManager;
|
||||||
|
|
||||||
public const int MigrationVersion = 12;
|
public const int MigrationVersion = 17;
|
||||||
public static bool EnableUnavailableMessage = false;
|
public static bool EnableUnavailableMessage = false;
|
||||||
|
|
||||||
public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IHttpServer httpServer, ILocalizationManager localization, ITaskManager taskManager)
|
public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IHttpServer httpServer, ILocalizationManager localization, ITaskManager taskManager)
|
||||||
|
@ -97,12 +97,20 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
await _itemRepo.UpdateInheritedValues(cancellationToken).ConfigureAwait(false);
|
await _itemRepo.UpdateInheritedValues(cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
if (_config.Configuration.MigrationVersion < MigrationVersion)
|
||||||
|
{
|
||||||
|
_config.Configuration.MigrationVersion = MigrationVersion;
|
||||||
|
_config.SaveConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
if (EnableUnavailableMessage)
|
if (EnableUnavailableMessage)
|
||||||
{
|
{
|
||||||
EnableUnavailableMessage = false;
|
EnableUnavailableMessage = false;
|
||||||
_httpServer.GlobalResponse = null;
|
_httpServer.GlobalResponse = null;
|
||||||
_taskManager.QueueScheduledTask<RefreshMediaLibraryTask>();
|
_taskManager.QueueScheduledTask<RefreshMediaLibraryTask>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_taskManager.SuspendTriggers = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnProgress(double newPercentCommplete)
|
private void OnProgress(double newPercentCommplete)
|
||||||
|
@ -164,12 +172,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
progress.Report(percent * 100);
|
progress.Report(percent * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_config.Configuration.MigrationVersion < MigrationVersion)
|
|
||||||
{
|
|
||||||
_config.Configuration.MigrationVersion = MigrationVersion;
|
|
||||||
_config.SaveConfiguration();
|
|
||||||
}
|
|
||||||
|
|
||||||
progress.Report(100);
|
progress.Report(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -317,6 +317,11 @@ namespace MediaBrowser.Server.Startup.Common
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
public override async Task RunStartupTasks()
|
public override async Task RunStartupTasks()
|
||||||
{
|
{
|
||||||
|
if (ServerConfigurationManager.Configuration.MigrationVersion < CleanDatabaseScheduledTask.MigrationVersion)
|
||||||
|
{
|
||||||
|
TaskManager.SuspendTriggers = true;
|
||||||
|
}
|
||||||
|
|
||||||
await base.RunStartupTasks().ConfigureAwait(false);
|
await base.RunStartupTasks().ConfigureAwait(false);
|
||||||
|
|
||||||
Logger.Info("ServerId: {0}", SystemId);
|
Logger.Info("ServerId: {0}", SystemId);
|
||||||
|
|
|
@ -20,13 +20,14 @@ namespace MediaBrowser.Server.Startup.Common.Migrations
|
||||||
{
|
{
|
||||||
if (_config.Configuration.MigrationVersion < CleanDatabaseScheduledTask.MigrationVersion)
|
if (_config.Configuration.MigrationVersion < CleanDatabaseScheduledTask.MigrationVersion)
|
||||||
{
|
{
|
||||||
|
_taskManager.SuspendTriggers = true;
|
||||||
CleanDatabaseScheduledTask.EnableUnavailableMessage = true;
|
CleanDatabaseScheduledTask.EnableUnavailableMessage = true;
|
||||||
|
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await Task.Delay(1000).ConfigureAwait(false);
|
await Task.Delay(1000).ConfigureAwait(false);
|
||||||
|
|
||||||
_taskManager.QueueScheduledTask<CleanDatabaseScheduledTask>();
|
_taskManager.Execute<CleanDatabaseScheduledTask>();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user