@@ -3,8 +3,10 @@ using System.Data;
|
|||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Web;
|
||||||
using Umbraco.Core.Logging;
|
using Umbraco.Core.Logging;
|
||||||
using Umbraco.Core.Persistence;
|
using Umbraco.Core.Persistence;
|
||||||
using Umbraco.Core.Persistence.Dtos;
|
using Umbraco.Core.Persistence.Dtos;
|
||||||
@@ -16,7 +18,7 @@ namespace Umbraco.Core.Runtime
|
|||||||
internal class SqlMainDomLock : IMainDomLock
|
internal class SqlMainDomLock : IMainDomLock
|
||||||
{
|
{
|
||||||
private string _lockId;
|
private string _lockId;
|
||||||
private const string MainDomKey = "Umbraco.Core.Runtime.SqlMainDom";
|
private const string MainDomKeyPrefix = "Umbraco.Core.Runtime.SqlMainDom";
|
||||||
private const string UpdatedSuffix = "_updated";
|
private const string UpdatedSuffix = "_updated";
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private IUmbracoDatabase _db;
|
private IUmbracoDatabase _db;
|
||||||
@@ -119,6 +121,16 @@ namespace Umbraco.Core.Runtime
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the keyvalue table key for the current server/app
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// The key is the the normal MainDomId which takes into account the AppDomainAppId and the physical file path of the app and this is
|
||||||
|
/// combined with the current machine name. The machine name is required because the default semaphore lock is machine wide so it implicitly
|
||||||
|
/// takes into account machine name whereas this needs to be explicitly per machine.
|
||||||
|
/// </remarks>
|
||||||
|
private string MainDomKey { get; } = MainDomKeyPrefix + "-" + (NetworkHelper.MachineName + MainDom.GetMainDomId()).GenerateHash<SHA1>();
|
||||||
|
|
||||||
private void ListeningLoop()
|
private void ListeningLoop()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
|
|||||||
Reference in New Issue
Block a user