Fix TelemetryTracker dbContext disposing.

This commit is contained in:
Фролов 2021-11-23 16:12:41 +05:00
parent 6412c24a3e
commit 3d8154ca2d

View File

@ -44,7 +44,7 @@ namespace AsbCloudInfrastructure.Services
var options = new DbContextOptionsBuilder<AsbCloudDbContext>() var options = new DbContextOptionsBuilder<AsbCloudDbContext>()
.UseNpgsql(configuration.GetConnectionString("DefaultConnection")) .UseNpgsql(configuration.GetConnectionString("DefaultConnection"))
.Options; .Options;
using var db = new AsbCloudDbContext(options); var db = new AsbCloudDbContext(options);
var cacheTelemetry = cacheDb.GetCachedTable<Telemetry>(db); var cacheTelemetry = cacheDb.GetCachedTable<Telemetry>(db);
var keyValuePairs = new Dictionary<string, TrackerStat>(cacheTelemetry.Count()); var keyValuePairs = new Dictionary<string, TrackerStat>(cacheTelemetry.Count());
@ -65,7 +65,7 @@ namespace AsbCloudInfrastructure.Services
Task.Run(async () => Task.Run(async () =>
{ {
db.Database.SetCommandTimeout(2 * 60); db.Database.SetCommandTimeout(2 * 60);
var dates = await db.TelemetryDataSaub var dates = await db.TelemetryDataSaub
.GroupBy(d => d.IdTelemetry) .GroupBy(d => d.IdTelemetry)
.Select(g => new .Select(g => new
@ -77,9 +77,7 @@ namespace AsbCloudInfrastructure.Services
.AsNoTracking() .AsNoTracking()
.ToListAsync() .ToListAsync()
.ConfigureAwait(false); .ConfigureAwait(false);
db.Dispose();
var oldReqs = dates.Select(t => new var oldReqs = dates.Select(t => new
{ {
Uid = cacheTelemetry.FirstOrDefault(c => c.Id == t.IdTelemetry)?.RemoteUid, Uid = cacheTelemetry.FirstOrDefault(c => c.Id == t.IdTelemetry)?.RemoteUid,
@ -91,9 +89,13 @@ namespace AsbCloudInfrastructure.Services
{ {
var telemetryStat = telemetriesStats.GetOrAdd(oldReq.Uid, (uid) => new TrackerStat { RemoteUid = uid }); var telemetryStat = telemetriesStats.GetOrAdd(oldReq.Uid, (uid) => new TrackerStat { RemoteUid = uid });
telemetryStat.TelemetryDateMin = oldReq.DateMin; telemetryStat.TelemetryDateMin = oldReq.DateMin;
telemetryStat.TelemetryDateMax = oldReq.DateMax; telemetryStat.TelemetryDateMax = oldReq.DateMax;
telemetryStat.LastTimeServer = oldReq.DateMax; telemetryStat.LastTimeServer = oldReq.DateMax;
} }
}).ContinueWith((t) =>
{
db.Dispose();
return t;
}); });
} }