Skip to content

Commit 03f7911

Browse files
committed
fix: correct userIds selection, clean up code
1 parent 134b6d5 commit 03f7911

File tree

2 files changed

+15
-23
lines changed

2 files changed

+15
-23
lines changed

Intersect.Server.Core/Database/IntersectDbContext.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -209,18 +209,8 @@ public override int SaveChanges(bool acceptAllChangesOnSuccess)
209209
}
210210
catch (DbUpdateConcurrencyException concurrencyException)
211211
{
212-
static Guid GetUserIdFrom(object entry)
213-
{
214-
return entry switch
215-
{
216-
IPlayerOwned playerOwned => playerOwned.Player?.User?.Id ?? playerOwned.Player?.UserId ?? default,
217-
Player player => player.User?.Id ?? player.UserId,
218-
_ => default,
219-
};
220-
}
221-
222212
var concurrencyErrors = new StringBuilder();
223-
var userIds = concurrencyException.Entries.Select(GetUserIdFrom)
213+
var userIds = concurrencyException.Entries.Select(entry => GetUserIdFrom(entry.Entity))
224214
.Where(id => id != default)
225215
.Distinct()
226216
.ToArray();
@@ -273,9 +263,11 @@ static Guid GetUserIdFrom(object entry)
273263
.Select(entry => entry.Entity.GetType().Name)
274264
.Distinct()
275265
.ToArray();
266+
267+
concurrencyErrors.AppendLine(Environment.StackTrace);
268+
276269
Log.Error(concurrencyException, $"Jackpot! Concurrency Bug For {string.Join(", ", entityTypeNames)} {suffix}");
277270
Log.Error(concurrencyErrors.ToString());
278-
Log.Error(Environment.StackTrace);
279271

280272
#if DEBUG
281273
Log.Debug($"DBOP-C SaveChanges({acceptAllChangesOnSuccess}) #{currentExecutionId}");
@@ -286,6 +278,16 @@ static Guid GetUserIdFrom(object entry)
286278
);
287279

288280
return -1;
281+
282+
static Guid GetUserIdFrom(object entry)
283+
{
284+
return entry switch
285+
{
286+
IPlayerOwned playerOwned => playerOwned.Player?.User?.Id ?? playerOwned.Player?.UserId ?? default,
287+
Player player => player.User?.Id ?? player.UserId,
288+
_ => default,
289+
};
290+
}
289291
}
290292
}
291293

Intersect.Server.Core/Database/PlayerData/Players/Variable.cs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,9 @@ namespace Intersect.Server.Database.PlayerData.Players
66
{
77
public partial class Variable
88
{
9-
private Guid _id;
10-
119
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
1210
[JsonIgnore]
13-
public Guid Id
14-
{
15-
get => _id;
16-
set
17-
{
18-
Console.WriteLine("HERE IS THE ISSUE?", Environment.StackTrace);
19-
_id = value;
20-
}
21-
}
11+
public Guid Id { get; set; }
2212

2313
[DatabaseGenerated(DatabaseGeneratedOption.None)]
2414
public Guid VariableId { get; protected set; }

0 commit comments

Comments
 (0)