public static void FixDiffs(Client client, List<ConfigState.ShardServer> shardServers, Int64 tableID, List<string> diffs)
{
var i = 0;
foreach (var key in diffs)
{
i += 1;
byte[] startKey = Utils.StringToByteArray(key);
byte[] endKey = Utils.NextKey(startKey);
var serverKeyValues = ConfigStateHelpers.ParallelFetchTableKeyValuesHTTP(shardServers, tableID, startKey, endKey, true);
if (Array.TrueForAll(serverKeyValues, val => (val.Count == 1 && Utils.ByteArraysEqual(val.First().Key, serverKeyValues[0].First().Key))))
continue;
foreach (var keyValue in serverKeyValues)
{
if (keyValue == null || keyValue.Count == 0)
continue;
if (keyValue.First().Value.Length > 0)
{
Assert.IsTrue(Utils.ByteArraysEqual(Utils.StringToByteArray(key), keyValue.First().Key));
Console.WriteLine("Setting key {0}", key);
Table table = new Table(client, null, (ulong)tableID, "");
table.Set(startKey, keyValue.First().Value);
client.Submit();
}
}
}
}