diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs
index 563625a544..0c6ee20f79 100644
--- a/MediaBrowser.Api/PackageService.cs
+++ b/MediaBrowser.Api/PackageService.cs
@@ -132,7 +132,7 @@ namespace MediaBrowser.Api
if (request.PackageType == PackageType.UserInstalled || request.PackageType == PackageType.All)
{
- result.AddRange(_installationManager.GetAvailablePluginUpdates(false, CancellationToken.None).Result.ToList());
+ result.AddRange(_installationManager.GetAvailablePluginUpdates(_appHost.ApplicationVersion, false, CancellationToken.None).Result.ToList());
}
else if (request.PackageType == PackageType.System || request.PackageType == PackageType.All)
@@ -194,7 +194,7 @@ namespace MediaBrowser.Api
public void Post(InstallPackage request)
{
var package = string.IsNullOrEmpty(request.Version) ?
- _installationManager.GetLatestCompatibleVersion(request.Name, request.UpdateClass).Result :
+ _installationManager.GetLatestCompatibleVersion(request.Name, _appHost.ApplicationVersion, request.UpdateClass).Result :
_installationManager.GetPackage(request.Name, request.UpdateClass, Version.Parse(request.Version)).Result;
if (package == null)
diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
index 732a108934..e1757afd5a 100644
--- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
+++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
@@ -225,9 +225,9 @@ namespace MediaBrowser.Common.Implementations.Updates
/// Determines whether [is package version up to date] [the specified package version info].
///
/// The package version info.
- /// The application version.
+ /// The current server version.
/// true if [is package version up to date] [the specified package version info]; otherwise, false.
- private bool IsPackageVersionUpToDate(PackageVersionInfo packageVersionInfo, Version applicationVersion)
+ private bool IsPackageVersionUpToDate(PackageVersionInfo packageVersionInfo, Version currentServerVersion)
{
if (string.IsNullOrEmpty(packageVersionInfo.requiredVersionStr))
{
@@ -236,7 +236,7 @@ namespace MediaBrowser.Common.Implementations.Updates
Version requiredVersion;
- return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && applicationVersion >= requiredVersion;
+ return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && currentServerVersion >= requiredVersion;
}
///
@@ -264,13 +264,14 @@ namespace MediaBrowser.Common.Implementations.Updates
/// Gets the latest compatible version.
///
/// The name.
+ /// The current server version.
/// The classification.
/// Task{PackageVersionInfo}.
- public async Task GetLatestCompatibleVersion(string name, PackageVersionClass classification = PackageVersionClass.Release)
+ public async Task GetLatestCompatibleVersion(string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release)
{
var packages = await GetAvailablePackages(CancellationToken.None).ConfigureAwait(false);
- return GetLatestCompatibleVersion(packages, name, classification);
+ return GetLatestCompatibleVersion(packages, name, currentServerVersion, classification);
}
///
@@ -278,9 +279,10 @@ namespace MediaBrowser.Common.Implementations.Updates
///
/// The available packages.
/// The name.
+ /// The current server version.
/// The classification.
/// PackageVersionInfo.
- public PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, PackageVersionClass classification = PackageVersionClass.Release)
+ public PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release)
{
var package = availablePackages.FirstOrDefault(p => p.name.Equals(name, StringComparison.OrdinalIgnoreCase));
@@ -291,23 +293,20 @@ namespace MediaBrowser.Common.Implementations.Updates
return package.versions
.OrderByDescending(v => v.version)
- .FirstOrDefault(v => v.classification <= classification && IsPackageVersionUpToDate(v, _applicationHost.ApplicationVersion));
+ .FirstOrDefault(v => v.classification <= classification && IsPackageVersionUpToDate(v, currentServerVersion));
}
///
/// Gets the available plugin updates.
///
+ /// The current server version.
/// if set to true [with auto update enabled].
/// The cancellation token.
/// Task{IEnumerable{PackageVersionInfo}}.
- public async Task> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken)
+ public async Task> GetAvailablePluginUpdates(Version currentServerVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken)
{
var catalog = await GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false);
- return FilterCatalog(catalog, withAutoUpdateEnabled);
- }
- protected IEnumerable FilterCatalog(IEnumerable catalog, bool withAutoUpdateEnabled)
- {
var plugins = _applicationHost.Plugins.ToList();
if (withAutoUpdateEnabled)
@@ -320,7 +319,7 @@ namespace MediaBrowser.Common.Implementations.Updates
// Figure out what needs to be installed
var packages = plugins.Select(p =>
{
- var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Configuration.UpdateClass);
+ var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, currentServerVersion, p.Configuration.UpdateClass);
return latestPluginInfo != null && latestPluginInfo.version != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null;
diff --git a/MediaBrowser.Common/Updates/IInstallationManager.cs b/MediaBrowser.Common/Updates/IInstallationManager.cs
index 95eca6e29f..143a90b856 100644
--- a/MediaBrowser.Common/Updates/IInstallationManager.cs
+++ b/MediaBrowser.Common/Updates/IInstallationManager.cs
@@ -76,26 +76,29 @@ namespace MediaBrowser.Common.Updates
/// Gets the latest compatible version.
///
/// The name.
+ /// The current server version.
/// The classification.
/// Task{PackageVersionInfo}.
- Task GetLatestCompatibleVersion(string name, PackageVersionClass classification = PackageVersionClass.Release);
+ Task GetLatestCompatibleVersion(string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release);
///
/// Gets the latest compatible version.
///
/// The available packages.
/// The name.
+ /// The current server version.
/// The classification.
/// PackageVersionInfo.
- PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, PackageVersionClass classification = PackageVersionClass.Release);
+ PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release);
///
/// Gets the available plugin updates.
///
+ /// The current server version.
/// if set to true [with auto update enabled].
/// The cancellation token.
/// Task{IEnumerable{PackageVersionInfo}}.
- Task> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken);
+ Task> GetAvailablePluginUpdates(Version currentServerVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken);
///
/// Installs the package.
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index a724067d5b..e68d4be8e6 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1004,7 +1004,7 @@ namespace MediaBrowser.Controller.Entities
throw new ArgumentNullException();
}
- var list = new List(10000);
+ var list = new List(_children.Count);
AddRecursiveChildrenInternal(user, includeLinkedChildren, list);
diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs
index 2936520075..e4f7134d7e 100644
--- a/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs
+++ b/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Common;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Common.Updates;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
@@ -23,15 +24,13 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
private readonly IInstallationManager _installationManager;
- ///
- /// Initializes a new instance of the class.
- ///
- /// The logger.
- /// The installation manager.
- public PluginUpdateTask(ILogger logger, IInstallationManager installationManager)
+ private readonly IApplicationHost _appHost;
+
+ public PluginUpdateTask(ILogger logger, IInstallationManager installationManager, IApplicationHost appHost)
{
_logger = logger;
_installationManager = installationManager;
+ _appHost = appHost;
}
///
@@ -60,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
{
progress.Report(0);
- var packagesToInstall = (await _installationManager.GetAvailablePluginUpdates(true, cancellationToken).ConfigureAwait(false)).ToList();
+ var packagesToInstall = (await _installationManager.GetAvailablePluginUpdates(_appHost.ApplicationVersion, true, cancellationToken).ConfigureAwait(false)).ToList();
progress.Report(10);
diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs
index 4715258167..2d19260dc2 100644
--- a/MediaBrowser.ServerApplication/ApplicationHost.cs
+++ b/MediaBrowser.ServerApplication/ApplicationHost.cs
@@ -60,7 +60,6 @@ using System.Net.Http;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
-using System.Windows;
namespace MediaBrowser.ServerApplication
{
@@ -708,7 +707,7 @@ namespace MediaBrowser.ServerApplication
{
var availablePackages = await InstallationManager.GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false);
- var version = InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MbServerPkgName, ConfigurationManager.CommonConfiguration.SystemUpdateLevel);
+ var version = InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MbServerPkgName, ApplicationVersion, ConfigurationManager.CommonConfiguration.SystemUpdateLevel);
return version != null ? new CheckForUpdateResult { AvailableVersion = version.version, IsUpdateAvailable = version.version > ApplicationVersion, Package = version } :
new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false };