Added a global mutex (not used yet) and moved around the code for loggin in since I suspect the Get Roles call is using deffered execution on the database causing the lock when attempting to access straight away #2750

pull/3895/head
Jamie Rees 6 years ago
parent 8459edc421
commit 63b93561e3

@ -0,0 +1,38 @@
using System;
using System.Threading;
namespace Ombi.Helpers
{
public static class GlobalMutex
{
public static T Lock<T>(Func<T> func)
{
const string mutexId = "Global\\OMBI";
using (var mutex = new Mutex(false, mutexId, out __))
{
var hasHandle = false;
try
{
try
{
hasHandle = mutex.WaitOne(5000, false);
if (hasHandle == false)
throw new TimeoutException("Timeout waiting for exclusive access");
}
catch (AbandonedMutexException)
{
hasHandle = true;
}
return func();
}
finally
{
if (hasHandle)
mutex.ReleaseMutex();
}
}
}
}
}

@ -121,9 +121,6 @@ namespace Ombi.Controllers.V1
return new UnauthorizedResult(); return new UnauthorizedResult();
} }
user.LastLoggedIn = DateTime.UtcNow;
await _userManager.UpdateAsync(user);
var claims = new List<Claim> var claims = new List<Claim>
{ {
new Claim(JwtRegisteredClaimNames.Sub, user.UserName), new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
@ -150,6 +147,9 @@ namespace Ombi.Controllers.V1
//await _token.CreateToken(new Tokens() {Token = accessToken, User = user}); //await _token.CreateToken(new Tokens() {Token = accessToken, User = user});
} }
user.LastLoggedIn = DateTime.UtcNow;
await _userManager.UpdateAsync(user);
return new JsonResult(new return new JsonResult(new
{ {
access_token = accessToken, access_token = accessToken,

Loading…
Cancel
Save