ui: add elapsed time per indexer (#15100)

This commit is contained in:
Bogdan
2024-02-29 01:11:02 +02:00
committed by GitHub
parent c3c3edc305
commit 2bc6d2834c
6 changed files with 39 additions and 13 deletions

View File

@@ -580,9 +580,12 @@
>
{{Name}}
{{#if Error}}
(<span title="{{Error}}"<b>Error</b></span>)
{{~else~}}
({{~Results~}})
(<span title="{{Error}}"<b>Error</b></span>)
{{~else~}}
({{~Results~}})
{{#if ElapsedTime}}
<span title="Elapsed time">[{{~ElapsedTime~}}ms]</span>
{{~/if~}}
{{~/if~}}
{{~#if @last~}}
.
@@ -782,6 +785,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20240224v1"></script>
<script type="text/javascript" src="../custom.js?changed=20240229v1"></script>
</body>
</html>

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -323,27 +324,34 @@ namespace Jackett.Common.Indexers
var queryCopy = query.Clone();
if (!CanHandleQuery(queryCopy) || !CanHandleCategories(queryCopy, isMetaIndexer))
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), false);
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), 0, false);
if (!SupportsPagination && queryCopy.Offset > 0)
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), false);
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), 0, false);
if (queryCopy.Cache)
{
var cachedReleases = cacheService.Search(this, queryCopy);
if (cachedReleases != null)
return new IndexerResult(this, cachedReleases, true);
return new IndexerResult(this, cachedReleases, 0, true);
}
try
{
var sw = new Stopwatch();
sw.Start();
var results = await PerformQuery(queryCopy);
results = FilterResults(queryCopy, results);
results = FixResults(queryCopy, results);
sw.Stop();
results = FilterResults(queryCopy, results).ToList();
results = FixResults(queryCopy, results).ToList();
cacheService.CacheResults(this, queryCopy, results.ToList());
errorCount = 0;
expireAt = DateTime.Now.Add(HealthyStatusValidity);
return new IndexerResult(this, results, false);
return new IndexerResult(this, results, sw.ElapsedMilliseconds, false);
}
catch (TooManyRequestsException ex)
{

View File

@@ -13,12 +13,14 @@ namespace Jackett.Common.Indexers
{
public IIndexer Indexer { get; set; }
public IEnumerable<ReleaseInfo> Releases { get; set; }
public long ElapsedTime { get; set; }
public bool IsFromCache;
public IndexerResult(IIndexer indexer, IEnumerable<ReleaseInfo> releases, bool isFromCache)
public IndexerResult(IIndexer indexer, IEnumerable<ReleaseInfo> releases, long elapsedTime, bool isFromCache)
{
Indexer = indexer;
Releases = releases;
ElapsedTime = elapsedTime;
IsFromCache = isFromCache;
}
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Jackett.Common.Models;
@@ -48,14 +49,21 @@ namespace Jackett.Common.Indexers.Meta
query = query.Clone();
if (query.Offset > 0 || !CanHandleQuery(query) || !CanHandleCategories(query, true))
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), false);
return new IndexerResult(this, Array.Empty<ReleaseInfo>(), 0, false);
try
{
var sw = new Stopwatch();
sw.Start();
var results = await PerformQuery(query);
sw.Stop();
// the results are already filtered and fixed by each indexer
// some results may come from cache, but we can't inform without refactor the code
return new IndexerResult(this, results, false);
return new IndexerResult(this, results, sw.ElapsedMilliseconds, false);
}
catch (Exception ex)
{

View File

@@ -19,6 +19,8 @@ namespace Jackett.Common.Models.DTO
public int Results { get; set; }
[DataMember]
public string Error { get; set; }
[DataMember]
public long ElapsedTime { get; set; }
}
[DataContract]

View File

@@ -272,6 +272,7 @@ namespace Jackett.Server.Controllers
{
resultIndexer.Status = ManualSearchResultIndexerStatus.OK;
resultIndexer.Results = t.Result.Releases.Count();
resultIndexer.ElapsedTime = t.Result.ElapsedTime;
resultIndexer.Error = null;
indexer = t.Result.Indexer;
}
@@ -279,6 +280,7 @@ namespace Jackett.Server.Controllers
{
resultIndexer.Status = ManualSearchResultIndexerStatus.Error;
resultIndexer.Results = 0;
resultIndexer.ElapsedTime = 0;
resultIndexer.Error = ((IndexerException)t.Exception.InnerException).ToString();
indexer = ((IndexerException)t.Exception.InnerException).Indexer;
}
@@ -286,6 +288,7 @@ namespace Jackett.Server.Controllers
{
resultIndexer.Status = ManualSearchResultIndexerStatus.Unknown;
resultIndexer.Results = 0;
resultIndexer.ElapsedTime = 0;
resultIndexer.Error = null;
}