private async Task <OrchestrationRuntimeState> GetOrchestrationRuntimeState(string orchestrationId) { IDatabase redisDatabase = this.redisConnection.GetDatabase(); string orchestrationRuntimeState = RedisKeyNameResolver.GetOrchestrationRuntimeStateHashKey(this.taskHub, this.partition); string eventListJson = await redisDatabase.HashGetAsync(orchestrationRuntimeState, orchestrationId); return(RedisSerializer.DeserializeRuntimeState(eventListJson)); }
private async Task RestoreLocks() { IDatabase redisDatabase = this.redisConnection.GetDatabase(); string runtimeEventsKey = RedisKeyNameResolver.GetOrchestrationRuntimeStateHashKey(this.taskHub, this.partition); HashEntry[] runtimeEvents = await redisDatabase.HashGetAllAsync(runtimeEventsKey); foreach (var hashEntry in runtimeEvents) { OrchestrationRuntimeState state = RedisSerializer.DeserializeRuntimeState(hashEntry.Value); if (state.OrchestrationStatus == OrchestrationStatus.Pending || state.OrchestrationStatus == OrchestrationStatus.ContinuedAsNew || state.OrchestrationStatus == OrchestrationStatus.Running) { // Still running, so add lock this.activeOrchestrationLocks[hashEntry.Name] = new SemaphoreSlim(1); } } }