update clean db task

This commit is contained in:
Luke Pulverenti 2016-02-02 21:51:00 -05:00
parent 4e6d3dba5b
commit e602577401

View File

@ -65,6 +65,44 @@ namespace MediaBrowser.Server.Implementations.Persistence
innerProgress.RegisterAction(p => innerProgress.RegisterAction(p =>
{ {
double newPercentCommplete = .4 * p; double newPercentCommplete = .4 * p;
OnProgress(newPercentCommplete);
progress.Report(newPercentCommplete);
});
await UpdateToLatestSchema(cancellationToken, innerProgress).ConfigureAwait(false);
innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(p =>
{
double newPercentCommplete = 40 + (.05 * p);
OnProgress(newPercentCommplete);
progress.Report(newPercentCommplete);
});
await CleanDeadItems(cancellationToken, innerProgress).ConfigureAwait(false);
progress.Report(45);
innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(p =>
{
double newPercentCommplete = 45 + (.55 * p);
OnProgress(newPercentCommplete);
progress.Report(newPercentCommplete);
});
await CleanDeletedItems(cancellationToken, innerProgress).ConfigureAwait(false);
progress.Report(100);
await _itemRepo.UpdateInheritedValues(cancellationToken).ConfigureAwait(false);
if (EnableUnavailableMessage)
{
EnableUnavailableMessage = false;
_httpServer.GlobalResponse = null;
}
}
private void OnProgress(double newPercentCommplete)
{
if (EnableUnavailableMessage) if (EnableUnavailableMessage)
{ {
var html = "<!doctype html><html><head><title>Emby</title></head><body>"; var html = "<!doctype html><html><head><title>Emby</title></head><body>";
@ -76,29 +114,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
_httpServer.GlobalResponse = html; _httpServer.GlobalResponse = html;
} }
progress.Report(newPercentCommplete);
});
await UpdateToLatestSchema(cancellationToken, innerProgress).ConfigureAwait(false);
innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(p => progress.Report(40 + (.05 * p)));
await CleanDeadItems(cancellationToken, innerProgress).ConfigureAwait(false);
progress.Report(45);
innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(p => progress.Report(45 + (.55 * p)));
await CleanDeletedItems(cancellationToken, innerProgress).ConfigureAwait(false);
progress.Report(100);
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)
@ -117,12 +132,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
if (itemId == Guid.Empty) if (itemId != Guid.Empty)
{ {
// Somehow some invalid data got into the db. It probably predates the boundary checking // Somehow some invalid data got into the db. It probably predates the boundary checking
continue;
}
var item = _libraryManager.GetItemById(itemId); var item = _libraryManager.GetItemById(itemId);
if (item != null) if (item != null)
@ -140,6 +152,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
_logger.ErrorException("Error saving item", ex); _logger.ErrorException("Error saving item", ex);
} }
} }
}
numComplete++; numComplete++;
double percent = numComplete; double percent = numComplete;