in code/KustoCopyConsole/Kusto/DbCommandClient.cs [369:410]
public async Task<int> CleanExtentTagsAsync(
KustoPriority priority,
string tableName,
IEnumerable<string> tags,
CancellationToken ct)
{
return await _commandQueue.RequestRunAsync(
priority,
async () =>
{
var tagListText = string.Join(", ", tags.Select(t => $"'{t}'"));
var commandText = @$"
.drop table ['{tableName}'] extent tags
({tagListText})
";
var properties = new ClientRequestProperties();
var reader = await _provider.ExecuteControlCommandAsync(
DatabaseName,
commandText,
properties);
var results = reader
.ToEnumerable(r => new
{
OriginalExtentId = (string)(r[0]),
ResultExtentId = (string)(r[1]),
ResultExtentTags = (string)(r[2]),
Details = r[3].ToString()
})
.ToImmutableArray();
var singleDetail = results
.Where(r => !string.IsNullOrWhiteSpace(r.Details))
.Select(r => r.Details)
.FirstOrDefault();
if (singleDetail != null)
{
throw new CopyException($"Clean extent failure: '{singleDetail}'", true);
}
return results.Count();
});
}