From 3d8154ca2d31ac543f2df8bd0604e5240b9e13a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Tue, 23 Nov 2021 16:12:41 +0500 Subject: [PATCH] Fix TelemetryTracker dbContext disposing. --- .../Services/TelemetryTracker.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/AsbCloudInfrastructure/Services/TelemetryTracker.cs b/AsbCloudInfrastructure/Services/TelemetryTracker.cs index fdab89e8..349a0667 100644 --- a/AsbCloudInfrastructure/Services/TelemetryTracker.cs +++ b/AsbCloudInfrastructure/Services/TelemetryTracker.cs @@ -44,7 +44,7 @@ namespace AsbCloudInfrastructure.Services var options = new DbContextOptionsBuilder() .UseNpgsql(configuration.GetConnectionString("DefaultConnection")) .Options; - using var db = new AsbCloudDbContext(options); + var db = new AsbCloudDbContext(options); var cacheTelemetry = cacheDb.GetCachedTable(db); var keyValuePairs = new Dictionary(cacheTelemetry.Count()); @@ -65,7 +65,7 @@ namespace AsbCloudInfrastructure.Services Task.Run(async () => { - db.Database.SetCommandTimeout(2 * 60); + db.Database.SetCommandTimeout(2 * 60); var dates = await db.TelemetryDataSaub .GroupBy(d => d.IdTelemetry) .Select(g => new @@ -77,9 +77,7 @@ namespace AsbCloudInfrastructure.Services .AsNoTracking() .ToListAsync() .ConfigureAwait(false); - - db.Dispose(); - + var oldReqs = dates.Select(t => new { 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 }); telemetryStat.TelemetryDateMin = oldReq.DateMin; - telemetryStat.TelemetryDateMax = oldReq.DateMax; + telemetryStat.TelemetryDateMax = oldReq.DateMax; telemetryStat.LastTimeServer = oldReq.DateMax; } + }).ContinueWith((t) => + { + db.Dispose(); + return t; }); }