From e9f883c296ba9734210827844b9bcd466e3a0430 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 8 Sep 2015 20:56:28 +0100 Subject: [PATCH] Removed unnecessary call to DistributedLockSchemaBuilder. Also added code to commit the transaction if the schema was created so that it can be used in the same request (DataMigrationManager is doing the same after each migration). --- .../Modules/Orchard.Setup/Services/SetupService.cs | 5 ----- src/Orchard/Data/Migration/AutomaticDataMigrations.cs | 6 +++++- .../Tasks/Locking/Services/DistributedLockSchemaBuilder.cs | 5 +++-- .../Tasks/Locking/Services/DistributedLockService.cs | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs index dfff5b008..16b3e465b 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs @@ -23,7 +23,6 @@ using Orchard.Recipes.Models; using Orchard.Recipes.Services; using Orchard.Security; using Orchard.Settings; -using Orchard.Tasks.Locking.Services; using Orchard.Utility.Extensions; namespace Orchard.Setup.Services { @@ -155,10 +154,6 @@ namespace Orchard.Setup.Services { schemaBuilder.AlterTable("Orchard_Framework_DataMigrationRecord", table => table.AddUniqueConstraint("UC_DMR_DataMigrationClass_Version", "DataMigrationClass", "Version")); - // Create the distributed lock record schema. - var distributedLockSchemaBuilder = new DistributedLockSchemaBuilder(_shellSettings, schemaBuilder); - distributedLockSchemaBuilder.CreateSchema(); - var dataMigrationManager = environment.Resolve(); dataMigrationManager.Update("Settings"); diff --git a/src/Orchard/Data/Migration/AutomaticDataMigrations.cs b/src/Orchard/Data/Migration/AutomaticDataMigrations.cs index 088903a06..ba6462cd1 100644 --- a/src/Orchard/Data/Migration/AutomaticDataMigrations.cs +++ b/src/Orchard/Data/Migration/AutomaticDataMigrations.cs @@ -18,18 +18,21 @@ namespace Orchard.Data.Migration { private readonly IDistributedLockService _distributedLockService; private readonly IDataMigrationInterpreter _dataMigrationInterpreter; private readonly ShellSettings _shellSettings; + private readonly ITransactionManager _transactionManager; public AutomaticDataMigrations( IDataMigrationManager dataMigrationManager, IDataMigrationInterpreter dataMigrationInterpreter, IFeatureManager featureManager, IDistributedLockService distributedLockService, + ITransactionManager transactionManager, ShellSettings shellSettings) { _dataMigrationManager = dataMigrationManager; _featureManager = featureManager; _distributedLockService = distributedLockService; _shellSettings = shellSettings; + _transactionManager = transactionManager; _dataMigrationInterpreter = dataMigrationInterpreter; Logger = NullLogger.Instance; @@ -77,7 +80,8 @@ namespace Orchard.Data.Migration { // Ensure the distributed lock record schema exists. var schemaBuilder = new SchemaBuilder(_dataMigrationInterpreter); var distributedLockSchemaBuilder = new DistributedLockSchemaBuilder(_shellSettings, schemaBuilder); - distributedLockSchemaBuilder.EnsureSchema(); + if (distributedLockSchemaBuilder.EnsureSchema()) + _transactionManager.RequireNew(); } } } diff --git a/src/Orchard/Tasks/Locking/Services/DistributedLockSchemaBuilder.cs b/src/Orchard/Tasks/Locking/Services/DistributedLockSchemaBuilder.cs index 8a577d8a1..2f22f1220 100644 --- a/src/Orchard/Tasks/Locking/Services/DistributedLockSchemaBuilder.cs +++ b/src/Orchard/Tasks/Locking/Services/DistributedLockSchemaBuilder.cs @@ -13,11 +13,12 @@ namespace Orchard.Tasks.Locking.Services { _schemaBuilder = schemaBuilder; } - public void EnsureSchema() { + public bool EnsureSchema() { if (SchemaExists()) - return; + return false; CreateSchema(); + return true; } public void CreateSchema() { diff --git a/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs b/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs index 34ab4332f..05c87b41f 100644 --- a/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs +++ b/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs @@ -110,7 +110,7 @@ namespace Orchard.Tasks.Locking.Services { ); }); - return result; + return result; } private DistributedLock AcquireLockInternal(string name, TimeSpan? maxValidFor) {