Update DbFlushService
This commit is contained in:
@@ -35,7 +35,7 @@ namespace MP.IOC.Services
|
||||
try
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromSeconds(interval), stoppingToken);
|
||||
await FlushMetricsAsync();
|
||||
await FlushLiveMetricsAsync();
|
||||
}
|
||||
catch (TaskCanceledException)
|
||||
{
|
||||
@@ -74,27 +74,19 @@ namespace MP.IOC.Services
|
||||
{
|
||||
try
|
||||
{
|
||||
var allHoursIndices = await _db.KeyExistsAsync($"{baseKey}:stats:hours:*");
|
||||
|
||||
if (!allHoursIndices)
|
||||
{
|
||||
Log.Debug("No hourly indices found in Redis");
|
||||
return;
|
||||
}
|
||||
var detailRecordsToInsert = new List<StatsDetailModel>();
|
||||
|
||||
var cursor = 0L;
|
||||
var pattern = $"{baseKey}:stats:hours:*";
|
||||
var hourIndexPattern = $"{baseKey}:stats:hours:*";
|
||||
var allHourIndices = new List<RedisKey>();
|
||||
|
||||
do
|
||||
{
|
||||
var result = await _db.KeyScanAsync(pattern, cursor);
|
||||
allHourIndices.AddRange(result.Keys.Where(k => k != null));
|
||||
cursor = result.Cursor;
|
||||
var keysResult = await _db.KeysAsync(hourIndexPattern, cursor);
|
||||
allHourIndices.AddRange(keysResult.Where(k => k != null));
|
||||
cursor = keysResult.Cursor;
|
||||
} while (cursor > 0 && allHourIndices.Count < 10000);
|
||||
|
||||
var detailRecordsToInsert = new List<StatsDetailModel>();
|
||||
|
||||
foreach (var hoursIndexKey in allHourIndices)
|
||||
{
|
||||
var keyStr = hoursIndexKey.ToString();
|
||||
@@ -104,9 +96,11 @@ namespace MP.IOC.Services
|
||||
|
||||
var dest = parts[4];
|
||||
var method = parts[5];
|
||||
var dayHourPart = string.Join(":", parts.Skip(6).TakeWhile(p => DateTime.TryParseExact(p, "yyyyMMddHH", CultureInfo.InvariantCulture, DateTimeStyles.None, out _)));
|
||||
|
||||
if (!DateTime.TryParseExact(dayHourPart, "yyyyMMddHH", CultureInfo.InvariantCulture, DateTimeStyles.None, out var hourFromKey))
|
||||
var dayPart = parts[6];
|
||||
var hourPart = parts[7];
|
||||
|
||||
if (!DateTime.TryParseExact($"{dayPart}{hourPart}", "yyyyMMddHH", CultureInfo.InvariantCulture, DateTimeStyles.None, out var hourFromKey))
|
||||
continue;
|
||||
|
||||
if (hourFromKey > cutoff) continue;
|
||||
@@ -128,10 +122,10 @@ namespace MP.IOC.Services
|
||||
|
||||
if (countVal.Value.IsNullOrEmpty || totalMsVal.Value.IsNullOrEmpty) continue;
|
||||
|
||||
var count = long.TryParse(countVal.Value.ToString(), out var count) ? count : 0;
|
||||
var totalMs = double.TryParse(totalMsVal.Value.ToString(), out var totalMs) ? totalMs : 0;
|
||||
var maxMs = double.TryParse(maxMsVal.Value.ToString(), out var maxMs) ? maxMs : 0;
|
||||
var minMs = double.TryParse(minMsVal.Value.ToString(), out var minMs) ? minMs : 0;
|
||||
var count = long.TryParse(countVal.Value.ToString(), out var countParsed) ? countParsed : 0;
|
||||
var totalMs = double.TryParse(totalMsVal.Value.ToString(), out var totalMsParsed) ? totalMsParsed : 0;
|
||||
var maxMs = double.TryParse(maxMsVal.Value.ToString(), out var maxMsParsed) ? maxMsParsed : 0;
|
||||
var minMs = double.TryParse(minMsVal.Value.ToString(), out var minMsParsed) ? minMsParsed : 0;
|
||||
|
||||
if (count == 0) continue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user