Azure table storage error: “Unexpected response code for operation : 99”

北城以北 提交于 2019-12-07 01:35:16

问题


I got this error when I executed the following code:

var insert = new TableBatchOperation();
foreach (var entity in entities)
{
    insert.Insert(entity);
}
cloudTable.ExecuteBatch(insert);  

Where the entities collection contained 512 elements. The Azure SDK through a StorageException:

"Unexpected response code for operation : 99" 

What does this error mean, and how can I solve this?


回答1:


This un-descriptive error means that Azure bulk operations (at least in this case) takes up to 100 elements. Limit your batch and you'll be good.

I ended up using something like this:

public void Insert(IEnumerable<T> entities)
{
    foreach (var chunk in entities.Chunk(100))
    {
        InsertMaxLimitElements(chunk);
    }
}

private void InsertMaxLimitElements(IEnumerable<T> chunk)
{
    var insert = new TableBatchOperation();

    foreach (var entity in chunk)
    {
        insert.Insert(entity);
    }
    cloudTable.ExecuteBatch(insert);
}

The Chunk extension method was copied from this answer:

public static IEnumerable<IEnumerable<T>> Chunk<T>(this IEnumerable<T> source, int chunksize)
{
    while (source.Any())
    {
        yield return source.Take(chunksize);
        source = source.Skip(chunksize);
    }
}



回答2:


If the batch size is < 100, it could also mean that you have duplicate entries (two entries with the same rowkey). This is very likely if it succeeds when you write the entries individually but fails writing in batch.



来源:https://stackoverflow.com/questions/18170920/azure-table-storage-error-unexpected-response-code-for-operation-99

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!