mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 11:34:57 +02:00
reduce server pinging
This commit is contained in:
parent
8c7296b560
commit
8a50392ba7
1 changed files with 22 additions and 18 deletions
|
@ -210,7 +210,6 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
private readonly string _releaseAssetFilename;
|
||||
|
||||
internal INativeApp NativeApp { get; set; }
|
||||
private Timer _ipAddressCacheTimer;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ApplicationHost" /> class.
|
||||
|
@ -234,8 +233,6 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
NativeApp = nativeApp;
|
||||
|
||||
SetBaseExceptionMessage();
|
||||
|
||||
_ipAddressCacheTimer = new Timer(OnCacheClearTimerFired, null, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3));
|
||||
}
|
||||
|
||||
private Version _version;
|
||||
|
@ -534,7 +531,7 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
RegisterSingleInstance(EncodingManager);
|
||||
|
||||
RegisterSingleInstance(NativeApp.GetPowerManagement());
|
||||
|
||||
|
||||
var sharingRepo = new SharingRepository(LogManager, ApplicationPaths);
|
||||
await sharingRepo.Initialize().ConfigureAwait(false);
|
||||
RegisterSingleInstance<ISharingManager>(new SharingManager(sharingRepo, ServerConfigurationManager, LibraryManager, this));
|
||||
|
@ -972,10 +969,10 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
{
|
||||
get
|
||||
{
|
||||
if (!ServerConfigurationManager.Configuration.EnableAutoUpdate)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!ServerConfigurationManager.Configuration.EnableAutoUpdate)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#if DEBUG
|
||||
return false;
|
||||
#endif
|
||||
|
@ -1159,7 +1156,12 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
}
|
||||
|
||||
private readonly ConcurrentDictionary<string, bool> _validAddressResults = new ConcurrentDictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||
private DateTime _lastAddressCacheClear;
|
||||
private bool IsIpAddressValid(IPAddress address)
|
||||
{
|
||||
return IsIpAddressValidInternal(address).Result;
|
||||
}
|
||||
private async Task<bool> IsIpAddressValidInternal(IPAddress address)
|
||||
{
|
||||
if (IPAddress.IsLoopback(address))
|
||||
{
|
||||
|
@ -1169,6 +1171,12 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
var apiUrl = GetLocalApiUrl(address.ToString());
|
||||
apiUrl += "/system/ping";
|
||||
|
||||
if ((DateTime.UtcNow - _lastAddressCacheClear).TotalMinutes >= 5)
|
||||
{
|
||||
_lastAddressCacheClear = DateTime.UtcNow;
|
||||
_validAddressResults.Clear();
|
||||
}
|
||||
|
||||
bool cachedResult;
|
||||
if (_validAddressResults.TryGetValue(apiUrl, out cachedResult))
|
||||
{
|
||||
|
@ -1177,14 +1185,15 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
|
||||
try
|
||||
{
|
||||
using (var response = HttpClient.SendAsync(new HttpRequestOptions
|
||||
using (var response = await HttpClient.SendAsync(new HttpRequestOptions
|
||||
{
|
||||
Url = apiUrl,
|
||||
LogErrorResponseBody = false,
|
||||
LogErrors = false,
|
||||
LogRequest = false
|
||||
LogRequest = false,
|
||||
TimeoutMs = 30000
|
||||
|
||||
}, "POST").Result)
|
||||
}, "POST").ConfigureAwait(false))
|
||||
{
|
||||
using (var reader = new StreamReader(response.Content))
|
||||
{
|
||||
|
@ -1192,25 +1201,20 @@ namespace MediaBrowser.Server.Startup.Common
|
|||
var valid = string.Equals(Name, result, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
_validAddressResults.AddOrUpdate(apiUrl, valid, (k, v) => valid);
|
||||
Logger.Debug("Ping test result to {0}. Success: {1}", apiUrl, valid);
|
||||
//Logger.Debug("Ping test result to {0}. Success: {1}", apiUrl, valid);
|
||||
return valid;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Logger.Debug("Ping test result to {0}. Success: {1}", apiUrl, false);
|
||||
//Logger.Debug("Ping test result to {0}. Success: {1}", apiUrl, false);
|
||||
|
||||
_validAddressResults.AddOrUpdate(apiUrl, false, (k, v) => false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCacheClearTimerFired(object state)
|
||||
{
|
||||
_validAddressResults.Clear();
|
||||
}
|
||||
|
||||
public string FriendlyName
|
||||
{
|
||||
get
|
||||
|
|
Loading…
Reference in a new issue