add error handling to package retrieval
This commit is contained in:
parent
1597b9bfa9
commit
b501d66fa8
|
@ -193,38 +193,37 @@ namespace MediaBrowser.Common.Implementations.Updates
|
|||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>Task{List{PackageInfo}}.</returns>
|
||||
public async Task<IEnumerable<PackageInfo>> GetAvailablePackagesWithoutRegistrationInfo(CancellationToken cancellationToken)
|
||||
{
|
||||
using (var stream = await GetCachedPackages(cancellationToken).ConfigureAwait(false))
|
||||
{
|
||||
var packages = _jsonSerializer.DeserializeFromStream<List<PackageInfo>>(stream).ToList();
|
||||
|
||||
if ((DateTime.UtcNow - _lastPackageUpdateTime) > GetCacheLength())
|
||||
{
|
||||
UpdateCachedPackages(CancellationToken.None, false);
|
||||
}
|
||||
|
||||
return packages;
|
||||
}
|
||||
}
|
||||
|
||||
private string PackageCachePath
|
||||
{
|
||||
get { return Path.Combine(_appPaths.CachePath, "serverpackages.json"); }
|
||||
}
|
||||
|
||||
private async Task<Stream> GetCachedPackages(CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _fileSystem.OpenRead(PackageCachePath);
|
||||
using (var stream = _fileSystem.OpenRead(PackageCachePath))
|
||||
{
|
||||
var packages = _jsonSerializer.DeserializeFromStream<List<PackageInfo>>(stream).ToList();
|
||||
|
||||
if ((DateTime.UtcNow - _lastPackageUpdateTime) > GetCacheLength())
|
||||
{
|
||||
UpdateCachedPackages(CancellationToken.None, false);
|
||||
}
|
||||
|
||||
return packages;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
_lastPackageUpdateTime = DateTime.MinValue;
|
||||
await UpdateCachedPackages(cancellationToken, true).ConfigureAwait(false);
|
||||
return _fileSystem.OpenRead(PackageCachePath);
|
||||
using (var stream = _fileSystem.OpenRead(PackageCachePath))
|
||||
{
|
||||
return _jsonSerializer.DeserializeFromStream<List<PackageInfo>>(stream).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private string PackageCachePath
|
||||
{
|
||||
get { return Path.Combine(_appPaths.CachePath, "serverpackages.json"); }
|
||||
}
|
||||
|
||||
private readonly SemaphoreSlim _updateSemaphore = new SemaphoreSlim(1, 1);
|
||||
|
|
Loading…
Reference in New Issue
Block a user