3.0.5768.1

This commit is contained in:
Luke Pulverenti
2015-10-17 11:05:12 -04:00
parent 317a487229
commit 034c0b95b2
10 changed files with 113 additions and 54 deletions

View File

@@ -42,6 +42,7 @@ namespace MediaBrowser.Server.Implementations.Channels
private readonly IFileSystem _fileSystem;
private readonly IJsonSerializer _jsonSerializer;
private readonly IHttpClient _httpClient;
private readonly IProviderManager _providerManager;
private readonly ILocalizationManager _localization;
private readonly ConcurrentDictionary<Guid, bool> _refreshedItems = new ConcurrentDictionary<Guid, bool>();
@@ -51,7 +52,7 @@ namespace MediaBrowser.Server.Implementations.Channels
private Timer _refreshTimer;
private Timer _clearDownloadCountsTimer;
public ChannelManager(IUserManager userManager, IDtoService dtoService, ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IUserDataManager userDataManager, IJsonSerializer jsonSerializer, ILocalizationManager localization, IHttpClient httpClient)
public ChannelManager(IUserManager userManager, IDtoService dtoService, ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IUserDataManager userDataManager, IJsonSerializer jsonSerializer, ILocalizationManager localization, IHttpClient httpClient, IProviderManager providerManager)
{
_userManager = userManager;
_dtoService = dtoService;
@@ -63,6 +64,7 @@ namespace MediaBrowser.Server.Implementations.Channels
_jsonSerializer = jsonSerializer;
_localization = localization;
_httpClient = httpClient;
_providerManager = providerManager;
_refreshTimer = new Timer(s => _refreshedItems.Clear(), null, TimeSpan.FromHours(3), TimeSpan.FromHours(3));
_clearDownloadCountsTimer = new Timer(s => _downloadCounts.Clear(), null, TimeSpan.FromHours(24), TimeSpan.FromHours(24));
@@ -649,7 +651,7 @@ namespace MediaBrowser.Server.Implementations.Channels
var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray();
await RefreshIfNeeded(internalItems, new Progress<double>(), cancellationToken).ConfigureAwait(false);
RefreshIfNeeded(internalItems);
if (query.StartIndex.HasValue)
{
@@ -814,7 +816,7 @@ namespace MediaBrowser.Server.Implementations.Channels
var internalResult = await GetAllMediaInternal(query, cancellationToken).ConfigureAwait(false);
await RefreshIfNeeded(internalResult.Items, new Progress<double>(), cancellationToken).ConfigureAwait(false);
RefreshIfNeeded(internalResult.Items);
var dtoOptions = new DtoOptions();
@@ -954,7 +956,7 @@ namespace MediaBrowser.Server.Implementations.Channels
}
}
return await GetReturnItems(internalItems, providerTotalRecordCount, user, query, progress, cancellationToken).ConfigureAwait(false);
return await GetReturnItems(internalItems, providerTotalRecordCount, user, query).ConfigureAwait(false);
}
public async Task<QueryResult<BaseItemDto>> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken)
@@ -1123,9 +1125,7 @@ namespace MediaBrowser.Server.Implementations.Channels
private async Task<QueryResult<BaseItem>> GetReturnItems(IEnumerable<BaseItem> items,
int? totalCountFromProvider,
User user,
ChannelItemQuery query,
IProgress<double> progress,
CancellationToken cancellationToken)
ChannelItemQuery query)
{
items = ApplyFilters(items, query.Filters, user);
@@ -1148,7 +1148,7 @@ namespace MediaBrowser.Server.Implementations.Channels
}
var returnItemArray = all.ToArray();
await RefreshIfNeeded(returnItemArray, progress, cancellationToken).ConfigureAwait(false);
RefreshIfNeeded(returnItemArray);
return new QueryResult<BaseItem>
{
@@ -1272,32 +1272,22 @@ namespace MediaBrowser.Server.Implementations.Channels
return item;
}
private async Task RefreshIfNeeded(BaseItem[] programs, IProgress<double> progress, CancellationToken cancellationToken)
private void RefreshIfNeeded(BaseItem[] programs)
{
var numComplete = 0;
var numItems = programs.Length;
foreach (var program in programs)
{
await RefreshIfNeeded(program, cancellationToken).ConfigureAwait(false);
numComplete++;
double percent = numComplete;
percent /= numItems;
progress.Report(percent * 100);
RefreshIfNeeded(program);
}
}
private readonly Task _cachedTask = Task.FromResult(true);
private Task RefreshIfNeeded(BaseItem program, CancellationToken cancellationToken)
private void RefreshIfNeeded(BaseItem program)
{
if (!_refreshedItems.ContainsKey(program.Id))
{
_refreshedItems.TryAdd(program.Id, true);
return program.RefreshMetadata(cancellationToken);
_providerManager.QueueRefresh(program.Id, new MetadataRefreshOptions(_fileSystem));
}
return _cachedTask;
}
internal IChannel GetChannelProvider(Channel channel)

View File

@@ -225,19 +225,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
var columns = string.Join(",", _mediaStreamSaveColumns);
string[] queries = {
"INSERT INTO mediastreams("+columns+") SELECT "+columns+" FROM MediaInfoOld.mediastreams;"
"REPLACE INTO mediastreams("+columns+") SELECT "+columns+" FROM MediaInfoOld.mediastreams;"
};
try
{
_connection.RunQueries(queries, _logger);
File.Delete(file);
}
catch (Exception ex)
{
throw ex;
_logger.ErrorException("Error migrating media info database", ex);
}
File.Delete(file);
}
private void MigrateChapters(string file)
@@ -247,19 +246,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
SqliteExtensions.Attach(_connection, backupFile, "ChaptersOld");
string[] queries = {
"INSERT INTO "+ChaptersTableName+"(ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath) SELECT ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath FROM ChaptersOld.Chapters;"
"REPLACE INTO "+ChaptersTableName+"(ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath) SELECT ItemId, ChapterIndex, StartPositionTicks, Name, ImagePath FROM ChaptersOld.Chapters;"
};
try
{
_connection.RunQueries(queries, _logger);
File.Delete(file);
}
catch (Exception ex)
{
throw ex;
_logger.ErrorException("Error migrating chapter database", ex);
}
File.Delete(file);
}
/// <summary>