in code/KustoCopyConsole/Runner/ExportingRunner.cs [94:117]
private async Task EnsureCapacityCacheAsync(
IDictionary<Uri, CapacityCache> capacityMap,
IEnumerable<Uri> clusterUris,
CancellationToken ct)
{
var clustersToUpdate = clusterUris
.Where(u => !capacityMap.ContainsKey(u)
|| capacityMap[u].CachedTime + CAPACITY_REFRESH_PERIOD < DateTime.Now);
var capacityUpdateTasks = clustersToUpdate
.Select(u => new
{
ClusterUri = u,
CapacityTask = FetchCapacityAsync(u, ct)
})
.ToImmutableArray();
await TaskHelper.WhenAllWithErrors(capacityUpdateTasks.Select(o => o.CapacityTask));
foreach (var update in capacityUpdateTasks)
{
capacityMap[update.ClusterUri] =
new CapacityCache(DateTime.Now, update.CapacityTask.Result);
}
}