reduce some potential errors
This commit is contained in:
parent
9baad44ab4
commit
67be4f8e7f
@ -19,7 +19,10 @@ using Data.Models.Client;
|
||||
using Data.Models.Client.Stats;
|
||||
using Data.Models.Server;
|
||||
using Humanizer.Localisation;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Npgsql;
|
||||
using Stats.Client.Abstractions;
|
||||
using Stats.Config;
|
||||
using Stats.Helpers;
|
||||
@ -432,6 +435,12 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
||||
return null;
|
||||
}
|
||||
|
||||
if (pl.ClientId <= 0)
|
||||
{
|
||||
_log.LogWarning("Stats for {Client} are not yet initialized", pl.ToString());
|
||||
return null;
|
||||
}
|
||||
|
||||
// get the client's stats from the database if it exists, otherwise create and attach a new one
|
||||
// if this fails we want to throw an exception
|
||||
|
||||
@ -511,6 +520,15 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
||||
return clientStats;
|
||||
}
|
||||
|
||||
catch (DbUpdateException updateException) when (
|
||||
updateException.InnerException is PostgresException {SqlState: "23503"}
|
||||
|| updateException.InnerException is SqliteException {SqliteErrorCode: 787}
|
||||
|| updateException.InnerException is MySqlException {SqlState: "23503"})
|
||||
{
|
||||
_log.LogWarning("Trying to add {Client} to stats before they have been added to the database",
|
||||
pl.ToString());
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
_log.LogError(ex, "Could not add client to stats {@client}", pl.ToString());
|
||||
@ -653,6 +671,12 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
||||
var clientDetection = attacker.GetAdditionalProperty<Detection>(CLIENT_DETECTIONS_KEY);
|
||||
var clientStats = attacker.GetAdditionalProperty<EFClientStatistics>(CLIENT_STATS_KEY);
|
||||
|
||||
if (clientDetection == null || clientStats?.ClientId == null)
|
||||
{
|
||||
_log.LogWarning("Client stats state for {Client} is not yet initialized", attacker.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
waiter = clientStats.ProcessingHit;
|
||||
await waiter.WaitAsync(Utilities.DefaultCommandTimeout, Plugin.ServerManager.CancellationToken);
|
||||
|
||||
@ -1529,4 +1553,4 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
||||
return serverId.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using IW4MAdmin.Plugins.Stats.Config;
|
||||
using IW4MAdmin.Plugins.Stats.Helpers;
|
||||
using IW4MAdmin.Plugins.Stats.Helpers;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Dtos.Meta.Responses;
|
||||
@ -15,9 +14,7 @@ using Data.Abstractions;
|
||||
using Data.Models.Client;
|
||||
using Data.Models.Client.Stats;
|
||||
using Data.Models.Server;
|
||||
using Humanizer;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SharedLibraryCore.Commands;
|
||||
using IW4MAdmin.Plugins.Stats.Client.Abstractions;
|
||||
using Stats.Client.Abstractions;
|
||||
using Stats.Config;
|
||||
|
Loading…
Reference in New Issue
Block a user