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);
                }
            }
        }