Browse Source

Try to remove deadlock from UpdateResource (#6112)

Andreas Nägeli 4 years ago
parent
commit
d50247cb4a
1 changed files with 17 additions and 15 deletions
  1. 17 15
      frameworks/CSharp/genhttp/Benchmarks/Tests/UpdateResource.cs

+ 17 - 15
frameworks/CSharp/genhttp/Benchmarks/Tests/UpdateResource.cs

@@ -1,11 +1,9 @@
-using System;
+using Benchmarks.Model;
+using GenHTTP.Modules.Webservices;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 
-using Benchmarks.Model;
-
-using GenHTTP.Modules.Webservices;
-
 namespace Benchmarks.Tests
 {
 
@@ -28,29 +26,33 @@ namespace Benchmarks.Tests
 
             var result = new List<World>(count);
 
-            using (var context = DatabaseContext.Create())
-            {
-                var ids = Enumerable.Range(1, 10000).Select(x => _Random.Next(1, 10001)).Distinct().Take(count).ToArray();
+            var ids = Enumerable.Range(1, 10000).Select(x => _Random.Next(1, 10001)).Distinct().Take(count).ToArray();
 
-                foreach (var id in ids)
+            foreach (var id in ids)
+            {
+                using (var context = DatabaseContext.Create())
                 {
                     var record = context.World.First(w => w.Id == id);
 
                     var old = record.RandomNumber;
 
-                    do
+                    var current = old;
+
+                    for (int i = 0; i < 5; i++)
                     {
-                        record.RandomNumber = _Random.Next(1, 10001);
+                        current = _Random.Next(1, 10001);
+
+                        if (current != old) break;
                     }
-                    while (old == record.RandomNumber);
+
+                    record.RandomNumber = current;
 
                     result.Add(record);
-                }
 
-                context.SaveChanges();
+                    context.SaveChanges();
+                }
             }
 
-
             return result;
         }