mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-08 10:44:23 -04:00
reduce server pinging
This commit is contained in:
parent
58a87f203f
commit
a9246d01d4
@ -210,7 +210,6 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
private readonly string _releaseAssetFilename;
|
private readonly string _releaseAssetFilename;
|
||||||
|
|
||||||
internal INativeApp NativeApp { get; set; }
|
internal INativeApp NativeApp { get; set; }
|
||||||
private Timer _ipAddressCacheTimer;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ApplicationHost" /> class.
|
/// Initializes a new instance of the <see cref="ApplicationHost" /> class.
|
||||||
@ -234,8 +233,6 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
NativeApp = nativeApp;
|
NativeApp = nativeApp;
|
||||||
|
|
||||||
SetBaseExceptionMessage();
|
SetBaseExceptionMessage();
|
||||||
|
|
||||||
_ipAddressCacheTimer = new Timer(OnCacheClearTimerFired, null, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Version _version;
|
private Version _version;
|
||||||
@ -981,10 +978,10 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (!ServerConfigurationManager.Configuration.EnableAutoUpdate)
|
if (!ServerConfigurationManager.Configuration.EnableAutoUpdate)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
@ -1168,7 +1165,12 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
}
|
}
|
||||||
|
|
||||||
private readonly ConcurrentDictionary<string, bool> _validAddressResults = new ConcurrentDictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
private readonly ConcurrentDictionary<string, bool> _validAddressResults = new ConcurrentDictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
private DateTime _lastAddressCacheClear;
|
||||||
private bool IsIpAddressValid(IPAddress address)
|
private bool IsIpAddressValid(IPAddress address)
|
||||||
|
{
|
||||||
|
return IsIpAddressValidInternal(address).Result;
|
||||||
|
}
|
||||||
|
private async Task<bool> IsIpAddressValidInternal(IPAddress address)
|
||||||
{
|
{
|
||||||
if (IPAddress.IsLoopback(address))
|
if (IPAddress.IsLoopback(address))
|
||||||
{
|
{
|
||||||
@ -1178,6 +1180,12 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
var apiUrl = GetLocalApiUrl(address.ToString());
|
var apiUrl = GetLocalApiUrl(address.ToString());
|
||||||
apiUrl += "/system/ping";
|
apiUrl += "/system/ping";
|
||||||
|
|
||||||
|
if ((DateTime.UtcNow - _lastAddressCacheClear).TotalMinutes >= 5)
|
||||||
|
{
|
||||||
|
_lastAddressCacheClear = DateTime.UtcNow;
|
||||||
|
_validAddressResults.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
bool cachedResult;
|
bool cachedResult;
|
||||||
if (_validAddressResults.TryGetValue(apiUrl, out cachedResult))
|
if (_validAddressResults.TryGetValue(apiUrl, out cachedResult))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1194,15 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var response = HttpClient.SendAsync(new HttpRequestOptions
|
using (var response = await HttpClient.SendAsync(new HttpRequestOptions
|
||||||
{
|
{
|
||||||
Url = apiUrl,
|
Url = apiUrl,
|
||||||
LogErrorResponseBody = false,
|
LogErrorResponseBody = false,
|
||||||
LogErrors = false,
|
LogErrors = false,
|
||||||
LogRequest = false
|
LogRequest = false,
|
||||||
|
TimeoutMs = 30000
|
||||||
|
|
||||||
}, "POST").Result)
|
}, "POST").ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
using (var reader = new StreamReader(response.Content))
|
using (var reader = new StreamReader(response.Content))
|
||||||
{
|
{
|
||||||
@ -1201,25 +1210,20 @@ namespace MediaBrowser.Server.Startup.Common
|
|||||||
var valid = string.Equals(Name, result, StringComparison.OrdinalIgnoreCase);
|
var valid = string.Equals(Name, result, StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
_validAddressResults.AddOrUpdate(apiUrl, valid, (k, v) => valid);
|
_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;
|
return valid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
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);
|
_validAddressResults.AddOrUpdate(apiUrl, false, (k, v) => false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCacheClearTimerFired(object state)
|
|
||||||
{
|
|
||||||
_validAddressResults.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string FriendlyName
|
public string FriendlyName
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
Loading…
x
Reference in New Issue
Block a user