diff --git a/src/DurableTask.AzureStorage/EntityTrackingStoreQueries.cs b/src/DurableTask.AzureStorage/EntityTrackingStoreQueries.cs index e6a146833..cdfeae1f2 100644 --- a/src/DurableTask.AzureStorage/EntityTrackingStoreQueries.cs +++ b/src/DurableTask.AzureStorage/EntityTrackingStoreQueries.cs @@ -65,7 +65,7 @@ public async override Task QueryEntitiesAsync(EntityQuery fil var condition = new OrchestrationInstanceStatusQueryCondition() { InstanceId = null, - InstanceIdPrefix = filter.InstanceIdStartsWith, + InstanceIdPrefix = string.IsNullOrEmpty(filter.InstanceIdStartsWith) ? "@" : filter.InstanceIdStartsWith, CreatedTimeFrom = filter.LastModifiedFrom ?? default(DateTime), CreatedTimeTo = filter.LastModifiedTo ?? default(DateTime), FetchInput = filter.IncludeState, @@ -73,6 +73,11 @@ public async override Task QueryEntitiesAsync(EntityQuery fil ExcludeEntities = false, }; + if (condition.InstanceIdPrefix![0] != '@') + { + condition.InstanceIdPrefix = $"@{condition.InstanceIdPrefix}"; + } + await this.ensureTaskHub(); List entityResult; @@ -177,8 +182,7 @@ bool OrchestrationIsRunning(OrchestrationStatus? status) if (! OrchestrationIsRunning(ownerState?.OrchestrationStatus)) { // the owner is not a running orchestration. Send a lock release. - var targetInstance = new OrchestrationInstance() { InstanceId = lockOwner }; - EntityMessageEvent eventToSend = ClientEntityHelpers.EmitUnlockForOrphanedLock(targetInstance, lockOwner); + EntityMessageEvent eventToSend = ClientEntityHelpers.EmitUnlockForOrphanedLock(state.OrchestrationInstance, lockOwner); await this.sendEvent(eventToSend.AsTaskMessage()); Interlocked.Increment(ref orphanedLocksReleased); } diff --git a/src/DurableTask.AzureStorage/Tracking/OrchestrationInstanceStatusQueryCondition.cs b/src/DurableTask.AzureStorage/Tracking/OrchestrationInstanceStatusQueryCondition.cs index 46415f98f..37cd5d3cb 100644 --- a/src/DurableTask.AzureStorage/Tracking/OrchestrationInstanceStatusQueryCondition.cs +++ b/src/DurableTask.AzureStorage/Tracking/OrchestrationInstanceStatusQueryCondition.cs @@ -87,7 +87,8 @@ public TableQuery ToTableQuery() this.CreatedTimeTo == default(DateTime) && this.TaskHubNames == null && this.InstanceIdPrefix == null && - this.InstanceId == null)) + this.InstanceId == null && + !this.ExcludeEntities)) { if (!this.FetchInput || !this.FetchOutput) {