Skip to content

Commit 9a1851f

Browse files
authored
Merge pull request #77 from github/caol-ila-parallel-rollouts
Add parallel rollouts
2 parents 2b2b886 + bb53913 commit 9a1851f

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

KustoSchemaTools/KustoSchemaHandler.cs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
using KustoSchemaTools.Model;
44
using KustoSchemaTools.Parser;
55
using Microsoft.Extensions.Logging;
6+
using System.Collections.Concurrent;
7+
using System.Data;
68
using System.Text;
79

810
namespace KustoSchemaTools
@@ -87,21 +89,32 @@ public async Task Import(string path, string databaseName, bool includeColumns)
8789
}
8890

8991

90-
public async Task Apply(string path, string databaseName)
92+
public async Task<ConcurrentDictionary<string,Exception>> Apply(string path, string databaseName)
9193
{
9294
var clustersFile = File.ReadAllText(Path.Combine(path, "clusters.yml"));
9395
var clusters = Serialization.YamlPascalCaseDeserializer.Deserialize<Clusters>(clustersFile);
9496

9597
var yamlHandler = YamlDatabaseHandlerFactory.Create(path, databaseName);
9698
var yamlDb = await yamlHandler.LoadAsync();
9799

98-
foreach (var cluster in clusters.Connections)
100+
var results = new ConcurrentDictionary<string,Exception>();
101+
102+
await Parallel.ForEachAsync(clusters.Connections, async (cluster, token) =>
99103
{
100-
Log.LogInformation($"Generating diff markdown for {Path.Combine(path, databaseName)} => {cluster}/{databaseName}");
104+
try
105+
{
106+
Log.LogInformation($"Generating and applying script for {Path.Combine(path, databaseName)} => {cluster}/{databaseName}");
107+
var dbHandler = KustoDatabaseHandlerFactory.Create(cluster.Url, databaseName);
108+
await dbHandler.WriteAsync(yamlDb);
109+
results.TryAdd(cluster.Url, null);
110+
}
111+
catch (Exception ex)
112+
{
113+
results.TryAdd(cluster.Url, ex);
114+
}
115+
});
101116

102-
var dbHandler = KustoDatabaseHandlerFactory.Create(cluster.Url, databaseName);
103-
await dbHandler.WriteAsync(yamlDb);
104-
}
117+
return results;
105118
}
106119
}
107120
}

0 commit comments

Comments
 (0)