diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2013-03-13 17:53:14 -0400 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2013-03-13 17:53:14 -0400 |
| commit | a26ef05e7a310a4821c2397d7fd9b2cac08cc3bc (patch) | |
| tree | c7b86254202b1b24ca75464dc997659b2ba05f1e | |
| parent | 2f64303dcdc3c0a550c66c16584d330bf8c3c174 (diff) | |
| parent | 2ca20eeefcfbd0258a76f4139a8ba68971cf2434 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
4 files changed, 50 insertions, 5 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs index 61e1f6329..0f3bae87c 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs @@ -106,7 +106,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <param name="task">The task.</param> private void QueueScheduledTask(IScheduledTaskWorker task) { - var type = task.GetType(); + var type = task.ScheduledTask.GetType(); lock (_taskQueue) { @@ -173,14 +173,46 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks return ((ScheduledTaskWorker)task).Execute(); } + /// <summary> + /// Called when [task executing]. + /// </summary> + /// <param name="task">The task.</param> internal void OnTaskExecuting(IScheduledTask task) { EventHelper.QueueEventIfNotNull(TaskExecuting, task, EventArgs.Empty, Logger); } + /// <summary> + /// Called when [task completed]. + /// </summary> + /// <param name="task">The task.</param> + /// <param name="result">The result.</param> internal void OnTaskCompleted(IScheduledTask task, TaskResult result) { EventHelper.QueueEventIfNotNull(TaskExecuting, task, new GenericEventArgs<TaskResult> { Argument = result }, Logger); + ExecuteQueuedTasks(); + } + + /// <summary> + /// Executes the queued tasks. + /// </summary> + private void ExecuteQueuedTasks() + { + // Execute queued tasks + lock (_taskQueue) + { + foreach (var type in _taskQueue.ToList()) + { + var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == type); + + if (scheduledTask.State == TaskState.Idle) + { + ((ScheduledTaskWorker)scheduledTask).Execute(); + + _taskQueue.Remove(type); + } + } + } } } } diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs index 0155d0c90..35f203a62 100644 --- a/MediaBrowser.ServerApplication/App.xaml.cs +++ b/MediaBrowser.ServerApplication/App.xaml.cs @@ -134,6 +134,11 @@ namespace MediaBrowser.ServerApplication Logger.ErrorException("UnhandledException", exception); MessageBox.Show("Unhandled exception: " + exception.Message); + + if (!Debugger.IsAttached) + { + Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(exception)); + } } /// <summary> diff --git a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs index 5fc1f75c5..6109f73bb 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardInfoWebSocketListener.cs @@ -43,12 +43,13 @@ namespace MediaBrowser.WebDashboard.Api /// <param name="logger">The logger.</param> /// <param name="taskManager">The task manager.</param> /// <param name="userManager">The user manager.</param> - public DashboardInfoWebSocketListener(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager) + public DashboardInfoWebSocketListener(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager, ILibraryManager libraryManager) : base(logger) { _appHost = appHost; _taskManager = taskManager; _userManager = userManager; + _libraryManager = libraryManager; } /// <summary> diff --git a/MediaBrowser.WebDashboard/Html/scripts/site.js b/MediaBrowser.WebDashboard/Html/scripts/site.js index 7ecaff85b..cb4ba3bdd 100644 --- a/MediaBrowser.WebDashboard/Html/scripts/site.js +++ b/MediaBrowser.WebDashboard/Html/scripts/site.js @@ -382,7 +382,7 @@ var Dashboard = { setTimeout(function () {
Dashboard.reloadPageWhenServerAvailable();
- }, 500);
+ }, 250);
}).fail(function () {
Dashboard.suppressAjaxErrors = false;
@@ -391,10 +391,17 @@ var Dashboard = { reloadPageWhenServerAvailable: function (retryCount) {
- ApiClient.getSystemInfo().done(function () {
- Dashboard.reloadPage();
+ ApiClient.getSystemInfo().done(function (info) {
+
+ // If this is back to false, the restart completed
+ if (!info.HasPendingRestart) {
+ Dashboard.reloadPage();
+ } else {
+ Dashboard.reloadPageWhenServerAvailable(retryCount);
+ }
}).fail(function () {
+
setTimeout(function () {
retryCount = retryCount || 0;
|
