mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-12 08:16:05 -07:00
Reverted the global app lock for the db #2750
This commit is contained in:
parent
13a73020e5
commit
439dc395d0
12 changed files with 10 additions and 57 deletions
|
@ -4,6 +4,7 @@ using Moq;
|
||||||
using Ombi.Core.Rule.Rules.Request;
|
using Ombi.Core.Rule.Rules.Request;
|
||||||
using Ombi.Store.Entities.Requests;
|
using Ombi.Store.Entities.Requests;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using Ombi.Core.Authentication;
|
||||||
using Ombi.Helpers;
|
using Ombi.Helpers;
|
||||||
|
|
||||||
namespace Ombi.Core.Tests.Rule.Request
|
namespace Ombi.Core.Tests.Rule.Request
|
||||||
|
@ -16,7 +17,7 @@ namespace Ombi.Core.Tests.Rule.Request
|
||||||
{
|
{
|
||||||
|
|
||||||
PrincipalMock = new Mock<IPrincipal>();
|
PrincipalMock = new Mock<IPrincipal>();
|
||||||
Rule = new AutoApproveRule(PrincipalMock.Object);
|
Rule = new AutoApproveRule(PrincipalMock.Object, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Ombi.Core.Tests.Rule.Request
|
||||||
{
|
{
|
||||||
|
|
||||||
PrincipalMock = new Mock<IPrincipal>();
|
PrincipalMock = new Mock<IPrincipal>();
|
||||||
Rule = new CanRequestRule(PrincipalMock.Object);
|
Rule = new CanRequestRule(PrincipalMock.Object, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Ombi.Core.Tests.Rule.Search
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
ContextMock = new Mock<IEmbyContentRepository>();
|
ContextMock = new Mock<IEmbyContentRepository>();
|
||||||
Rule = new EmbyAvailabilityRule(ContextMock.Object);
|
Rule = new EmbyAvailabilityRule(ContextMock.Object, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbyAvailabilityRule Rule { get; set; }
|
private EmbyAvailabilityRule Rule { get; set; }
|
||||||
|
|
|
@ -158,7 +158,7 @@ namespace Ombi.Core.Authentication
|
||||||
if (!email.Equals(result.User?.Email))
|
if (!email.Equals(result.User?.Email))
|
||||||
{
|
{
|
||||||
user.Email = result.User?.Email;
|
user.Email = result.User?.Email;
|
||||||
await GlobalMutex.Lock(async () => await UpdateAsync(user));
|
await UpdateAsync(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Nito.AsyncEx;
|
|
||||||
|
|
||||||
namespace Ombi.Helpers
|
|
||||||
{
|
|
||||||
public static class GlobalMutex
|
|
||||||
{
|
|
||||||
public static async Task<T> Lock<T>(Func<Task<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 await func();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (hasHandle)
|
|
||||||
mutex.ReleaseMutex();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -83,7 +83,7 @@ namespace Ombi.Store.Repository
|
||||||
|
|
||||||
protected async Task<int> InternalSaveChanges()
|
protected async Task<int> InternalSaveChanges()
|
||||||
{
|
{
|
||||||
return await GlobalMutex.Lock(async () => await _ctx.SaveChangesAsync());
|
return await _ctx.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace Ombi.Store.Repository
|
||||||
|
|
||||||
private async Task<int> InternalSaveChanges()
|
private async Task<int> InternalSaveChanges()
|
||||||
{
|
{
|
||||||
return await GlobalMutex.Lock(async () => await Db.SaveChangesAsync());
|
return await Db.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _disposed;
|
private bool _disposed;
|
||||||
|
|
|
@ -78,10 +78,5 @@ namespace Ombi.Store.Repository.Requests
|
||||||
{
|
{
|
||||||
await InternalSaveChanges();
|
await InternalSaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<int> InternalSaveChanges()
|
|
||||||
{
|
|
||||||
return await GlobalMutex.Lock(async () => await Db.SaveChangesAsync());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -69,9 +69,5 @@ namespace Ombi.Store.Repository.Requests
|
||||||
{
|
{
|
||||||
await InternalSaveChanges();
|
await InternalSaveChanges();
|
||||||
}
|
}
|
||||||
private async Task<int> InternalSaveChanges()
|
|
||||||
{
|
|
||||||
return await GlobalMutex.Lock(async () => await Db.SaveChangesAsync());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -154,7 +154,7 @@ namespace Ombi.Store.Repository.Requests
|
||||||
|
|
||||||
private async Task<int> InternalSaveChanges()
|
private async Task<int> InternalSaveChanges()
|
||||||
{
|
{
|
||||||
return await GlobalMutex.Lock(async () => await Db.SaveChangesAsync());
|
return await Db.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -93,7 +93,7 @@ namespace Ombi.Store.Repository
|
||||||
|
|
||||||
private async Task<int> InternalSaveChanges()
|
private async Task<int> InternalSaveChanges()
|
||||||
{
|
{
|
||||||
return await GlobalMutex.Lock(async () => await Db.SaveChangesAsync());
|
return await Db.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _disposed;
|
private bool _disposed;
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace Ombi.Store.Repository
|
||||||
}
|
}
|
||||||
private async Task<int> InternalSaveChanges()
|
private async Task<int> InternalSaveChanges()
|
||||||
{
|
{
|
||||||
return await GlobalMutex.Lock(async () => await Db.SaveChangesAsync());
|
return await Db.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue