public override async Task <HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) { if (ForceClusterAwareness == false) { var clusterAwareHeader = GetClusterHeader(controllerContext, Constants.Cluster.ClusterAwareHeader); bool clusterAware; if (clusterAwareHeader == null || bool.TryParse(clusterAwareHeader, out clusterAware) == false || clusterAware == false) { return(await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false)); } } InnerInitialization(controllerContext); if (CounterStorage == null || ClusterManager.IsActive() == false) { return(await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false)); } if (CountersName != null && await CountersLandlord.GetResourceInternal(CountersName).ConfigureAwait(false) == null) { var msg = "Could not find a counter named: " + CountersName; return(GetMessageWithObject(new { Error = msg }, HttpStatusCode.ServiceUnavailable)); } if (CounterStorage.IsClusterDatabase() == false) { return(await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false)); } if (ClusterManager.IsLeader()) { return(await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false)); } if (IsReadRequest(controllerContext)) { var clusterReadBehaviorHeader = GetClusterHeader(controllerContext, Constants.Cluster.ClusterReadBehaviorHeader); if (string.Equals(clusterReadBehaviorHeader, "All", StringComparison.OrdinalIgnoreCase)) { return(await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false)); } } var clusterFailoverBehaviorHeader = GetClusterHeader(controllerContext, Constants.Cluster.ClusterFailoverBehaviorHeader); bool clusterFailoverBehavior; if (bool.TryParse(clusterFailoverBehaviorHeader, out clusterFailoverBehavior) && clusterFailoverBehavior) { return(await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false)); } return(RedirectToLeader(controllerContext.Request)); }