浏览代码

sync updates

Luke Pulverenti 10 年之前
父节点
当前提交
ac68e0ba41

+ 0 - 1
MediaBrowser.Api/UserLibrary/PersonsService.cs

@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Querying;
 using ServiceStack;
 using System;
 using System.Collections.Generic;

+ 68 - 4
MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs

@@ -335,12 +335,30 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
             trigger.Start(false);
         }
 
+        private Task _currentTask;
+
         /// <summary>
         /// Executes the task
         /// </summary>
         /// <returns>Task.</returns>
         /// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception>
         public async Task Execute()
+        {
+            var task = ExecuteInternal();
+
+            _currentTask = task;
+
+            try
+            {
+                await task.ConfigureAwait(false);
+            }
+            finally
+            {
+                _currentTask = null;
+            }
+        }
+
+        private async Task ExecuteInternal()
         {
             // Cancel the current execution, if any
             if (CurrentCancellationTokenSource != null)
@@ -585,14 +603,60 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
             {
                 DisposeTriggers();
 
-                if (State == TaskState.Running)
+                var wassRunning = State == TaskState.Running;
+                var startTime = CurrentExecutionStartTime;
+
+                var token = CurrentCancellationTokenSource;
+                if (token != null)
+                {
+                    try
+                    {
+                        Logger.Debug(Name + ": Cancelling");
+                        token.Cancel();
+                    }
+                    catch (Exception ex)
+                    {
+                        Logger.ErrorException("Error calling CancellationToken.Cancel();", ex);
+                    }
+                }
+                var task = _currentTask;
+                if (task != null)
                 {
-                    OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, null);
+                    try
+                    {
+                        Logger.Debug(Name + ": Waiting on Task");
+                        var exited = Task.WaitAll(new[] { task }, 2000);
+
+                        if (exited)
+                        {
+                            Logger.Debug(Name + ": Task exited");
+                        }
+                        else
+                        {
+                            Logger.Debug(Name + ": Timed out waiting for task to stop");
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        Logger.ErrorException("Error calling Task.WaitAll();", ex);
+                    }
                 }
 
-                if (CurrentCancellationTokenSource != null)
+                if (token != null)
+                {
+                    try
+                    {
+                        Logger.Debug(Name + ": Disposing CancellationToken");
+                        token.Dispose();
+                    }
+                    catch (Exception ex)
+                    {
+                        Logger.ErrorException("Error calling CancellationToken.Dispose();", ex);
+                    }
+                }
+                if (wassRunning)
                 {
-                    CurrentCancellationTokenSource.Dispose();
+                    OnTaskCompleted(startTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, null);
                 }
             }
         }

+ 1 - 1
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -1098,7 +1098,7 @@ namespace MediaBrowser.Server.Implementations.Library
 
                 try
                 {
-                    await task.Run(innerProgress, cancellationToken);
+                    await task.Run(innerProgress, cancellationToken).ConfigureAwait(false);
                 }
                 catch (OperationCanceledException)
                 {

+ 6 - 6
MediaBrowser.Server.Implementations/Localization/Server/server.json

@@ -285,10 +285,10 @@
     "ButtonHelp": "Help",
     "OptionAllowUserToManageServer": "Allow this user to manage the server",
     "HeaderFeatureAccess": "Feature Access",
-    "OptionAllowMediaPlayback": "Media playback",
-    "OptionAllowBrowsingLiveTv": "Live TV",
-    "OptionAllowDeleteLibraryContent": "Media deletion",
-    "OptionAllowManageLiveTv": "Live TV recording management",
+    "OptionAllowMediaPlayback": "Allow media playback",
+    "OptionAllowBrowsingLiveTv": "Allow Live TV access",
+    "OptionAllowDeleteLibraryContent": "Allow media deletion",
+    "OptionAllowManageLiveTv": "Allow Live TV recording management",
     "OptionAllowRemoteControlOthers": "Allow remote control of other users",
     "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices",
     "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.",
@@ -1362,8 +1362,8 @@
     "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.",
     "TabActivity": "Activity",
     "TitleSync": "Sync",
-    "OptionAllowSyncContent": "Sync",
-    "OptionAllowContentDownloading": "Media downloading",
+    "OptionAllowSyncContent": "Allow Sync",
+    "OptionAllowContentDownloading": "Allow media downloading",
     "NameSeasonUnknown": "Season Unknown",
     "NameSeasonNumber": "Season {0}",
     "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)",