diff --git a/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationService.cs b/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationService.cs index a1d3acb0..d21adc53 100644 --- a/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationService.cs +++ b/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationService.cs @@ -226,7 +226,7 @@ public bool TryGetScalingMonitor(out ScalingMonitor monitor) try { ILoadPublisherService loadPublisher = string.IsNullOrEmpty(this.Settings.LoadInformationAzureTableName) ? - new AzureBlobLoadPublisher(this.Settings.BlobStorageConnection, this.Settings.HubName) + new AzureBlobLoadPublisher(this.Settings.BlobStorageConnection, this.Settings.HubName, this.Settings.TaskhubParametersFilePath) : new AzureTableLoadPublisher(this.Settings.TableStorageConnection, this.Settings.LoadInformationAzureTableName, this.Settings.HubName); monitor = new ScalingMonitor( diff --git a/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationServiceSettings.cs b/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationServiceSettings.cs index 52fc2542..e96747d3 100644 --- a/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationServiceSettings.cs +++ b/src/DurableTask.Netherite/OrchestrationService/NetheriteOrchestrationServiceSettings.cs @@ -118,6 +118,11 @@ public class NetheriteOrchestrationServiceSettings /// public string PartitionManagementParameters { get; set; } = null; + /// + /// The path to the file containing the taskhub parameters. + /// + public string TaskhubParametersFilePath { get; set; } = "taskhubparameters.json"; + /// /// Gets or sets the activity scheduler option /// diff --git a/src/DurableTask.Netherite/Scaling/AzureBlobLoadPublisher.cs b/src/DurableTask.Netherite/Scaling/AzureBlobLoadPublisher.cs index 5ba30353..c2cf511c 100644 --- a/src/DurableTask.Netherite/Scaling/AzureBlobLoadPublisher.cs +++ b/src/DurableTask.Netherite/Scaling/AzureBlobLoadPublisher.cs @@ -19,6 +19,7 @@ class AzureBlobLoadPublisher : ILoadPublisherService { readonly string taskHubName; readonly Task blobContainer; + readonly string taskhubParametersFilePath; TaskhubParameters parameters; readonly static JsonSerializerSettings serializerSettings = new JsonSerializerSettings() @@ -27,10 +28,11 @@ class AzureBlobLoadPublisher : ILoadPublisherService MissingMemberHandling = MissingMemberHandling.Ignore, }; - public AzureBlobLoadPublisher(ConnectionInfo connectionInfo, string taskHubName) + public AzureBlobLoadPublisher(ConnectionInfo connectionInfo, string taskHubName, string taskHubParametersFilePath) { this.blobContainer = this.GetBlobContainer(connectionInfo, taskHubName); this.taskHubName = taskHubName; + this.taskhubParametersFilePath = taskHubParametersFilePath; } async Task GetBlobContainer(ConnectionInfo connectionInfo, string taskHubName) @@ -54,7 +56,7 @@ async ValueTask LoadParameters(bool throwIfNotFound, CancellationToken can if (this.parameters == null) { this.parameters = await this.ReadJsonBlobAsync( - (await this.blobContainer).GetBlockBlobReference("taskhubparameters.json"), + (await this.blobContainer).GetBlockBlobReference(this.taskhubParametersFilePath), throwIfNotFound: throwIfNotFound, throwOnParseError: throwIfNotFound, cancellationToken).ConfigureAwait(false); diff --git a/src/DurableTask.Netherite/StorageLayer/Faster/FasterStorageProvider.cs b/src/DurableTask.Netherite/StorageLayer/Faster/FasterStorageProvider.cs index c652e2d8..a80d9d47 100644 --- a/src/DurableTask.Netherite/StorageLayer/Faster/FasterStorageProvider.cs +++ b/src/DurableTask.Netherite/StorageLayer/Faster/FasterStorageProvider.cs @@ -73,7 +73,7 @@ async Task GetBlobContainerAsync() async Task GetTaskhubParametersAsync() { var cloudBlobContainer = await this.cloudBlobContainer; - return cloudBlobContainer.GetBlockBlobReference("taskhubparameters.json"); + return cloudBlobContainer.GetBlockBlobReference(settings.TaskhubParametersFilePath); } this.traceHelper.TraceProgress("Creating LoadPublisher Service"); @@ -83,7 +83,7 @@ async Task GetTaskhubParametersAsync() } else { - this.LoadPublisher = new AzureBlobLoadPublisher(settings.BlobStorageConnection, settings.HubName); + this.LoadPublisher = new AzureBlobLoadPublisher(settings.BlobStorageConnection, settings.HubName, settings.TaskhubParametersFilePath); } } diff --git a/test/PerformanceTests/host.json b/test/PerformanceTests/host.json index 6d9a9bac..c6ae40c8 100644 --- a/test/PerformanceTests/host.json +++ b/test/PerformanceTests/host.json @@ -100,6 +100,8 @@ // "PartitionManagement": "RecoveryTester", // "PartitionManagementParameters": "7", + //"TaskhubParametersFilePath": "preserved-hub.json", + // set this to "Local" to disable the global activity distribution algorithm // options: "Local", "Static", "Locavore" "ActivityScheduler": "Locavore",