add message for db upgrade

This commit is contained in:
Luke Pulverenti 2016-02-01 14:54:49 -05:00
parent 4d7c016224
commit 96120099cb
6 changed files with 55 additions and 10 deletions

View File

@ -268,13 +268,18 @@ namespace MediaBrowser.Server.Implementations.HttpServer
private bool EnableLogging(string url) private bool EnableLogging(string url)
{ {
var parts = url.Split(new[] { '?' }, 2); var extension = GetExtension(url);
var extension = Path.GetExtension(parts[0]);
return string.IsNullOrWhiteSpace(extension) || !_skipLogExtensions.ContainsKey(extension); return string.IsNullOrWhiteSpace(extension) || !_skipLogExtensions.ContainsKey(extension);
} }
private string GetExtension(string url)
{
var parts = url.Split(new[] { '?' }, 2);
return Path.GetExtension(parts[0]);
}
/// <summary> /// <summary>
/// Overridable method that can be used to implement a custom hnandler /// Overridable method that can be used to implement a custom hnandler
/// </summary> /// </summary>
@ -339,6 +344,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer
{ {
httpRes.Write(GlobalResponse); httpRes.Write(GlobalResponse);
httpRes.ContentType = "text/plain"; httpRes.ContentType = "text/plain";
if (!string.Equals(GetExtension(urlString), "html", StringComparison.OrdinalIgnoreCase))
{
httpRes.StatusCode = 503;
}
return Task.FromResult(true); return Task.FromResult(true);
} }

View File

@ -174,5 +174,6 @@
"HeaderWriter": "Writers", "HeaderWriter": "Writers",
"HeaderParentalRatings": "Parental Ratings", "HeaderParentalRatings": "Parental Ratings",
"HeaderCommunityRatings": "Community ratings", "HeaderCommunityRatings": "Community ratings",
"StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete."
} }

View File

@ -173,5 +173,6 @@
"HeaderWriter": "Writers", "HeaderWriter": "Writers",
"HeaderParentalRatings": "Parental Ratings", "HeaderParentalRatings": "Parental Ratings",
"HeaderCommunityRatings": "Community ratings", "HeaderCommunityRatings": "Community ratings",
"StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete."
} }

View File

@ -9,11 +9,14 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using CommonIO; using CommonIO;
using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Net;
namespace MediaBrowser.Server.Implementations.Persistence namespace MediaBrowser.Server.Implementations.Persistence
{ {
@ -24,16 +27,21 @@ namespace MediaBrowser.Server.Implementations.Persistence
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IServerConfigurationManager _config; private readonly IServerConfigurationManager _config;
private readonly IFileSystem _fileSystem; private readonly IFileSystem _fileSystem;
private readonly IHttpServer _httpServer;
private readonly ILocalizationManager _localization;
public const int MigrationVersion = 7; public const int MigrationVersion = 12;
public static bool EnableUnavailableMessage = false;
public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem) public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IHttpServer httpServer, ILocalizationManager localization)
{ {
_libraryManager = libraryManager; _libraryManager = libraryManager;
_itemRepo = itemRepo; _itemRepo = itemRepo;
_logger = logger; _logger = logger;
_config = config; _config = config;
_fileSystem = fileSystem; _fileSystem = fileSystem;
_httpServer = httpServer;
_localization = localization;
} }
public string Name public string Name
@ -54,7 +62,23 @@ namespace MediaBrowser.Server.Implementations.Persistence
public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress) public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
{ {
var innerProgress = new ActionableProgress<double>(); var innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(p => progress.Report(.4 * p)); innerProgress.RegisterAction(p =>
{
double newPercentCommplete = .4 * p;
if (EnableUnavailableMessage)
{
var html = "<!doctype html><html><head><title>Emby</title></head><body>";
var text = _localization.GetLocalizedString("DbUpgradeMessage");
html += string.Format(text, newPercentCommplete.ToString("N2", CultureInfo.InvariantCulture));
html += "<script>setTimeout(function(){window.location.reload(true);}, 5000);</script>";
html += "</body></html>";
_httpServer.GlobalResponse = html;
}
progress.Report(newPercentCommplete);
});
await UpdateToLatestSchema(cancellationToken, innerProgress).ConfigureAwait(false); await UpdateToLatestSchema(cancellationToken, innerProgress).ConfigureAwait(false);
@ -69,6 +93,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
progress.Report(100); progress.Report(100);
await _itemRepo.UpdateInheritedValues(cancellationToken).ConfigureAwait(false); await _itemRepo.UpdateInheritedValues(cancellationToken).ConfigureAwait(false);
if (EnableUnavailableMessage)
{
EnableUnavailableMessage = false;
_httpServer.GlobalResponse = null;
}
} }
private async Task UpdateToLatestSchema(CancellationToken cancellationToken, IProgress<double> progress) private async Task UpdateToLatestSchema(CancellationToken cancellationToken, IProgress<double> progress)

View File

@ -82,7 +82,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
private IDbCommand _updateInheritedRatingCommand; private IDbCommand _updateInheritedRatingCommand;
private const int LatestSchemaVersion = 40; private const int LatestSchemaVersion = 44;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class. /// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.

View File

@ -20,9 +20,11 @@ namespace MediaBrowser.Server.Startup.Common.Migrations
{ {
if (_config.Configuration.MigrationVersion < CleanDatabaseScheduledTask.MigrationVersion) if (_config.Configuration.MigrationVersion < CleanDatabaseScheduledTask.MigrationVersion)
{ {
CleanDatabaseScheduledTask.EnableUnavailableMessage = true;
Task.Run(async () => Task.Run(async () =>
{ {
await Task.Delay(2000).ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false);
_taskManager.QueueScheduledTask<CleanDatabaseScheduledTask>(); _taskManager.QueueScheduledTask<CleanDatabaseScheduledTask>();
}); });