BlobRequestOptions.AbsorbConditionalErrorsOnRetry Propriedade

Definição

Obtém ou define um valor que indica se uma falha condicional deve ser absorvida em uma tentativa de repetição para a solicitação.

public bool? AbsorbConditionalErrorsOnRetry { get; set; }
member this.AbsorbConditionalErrorsOnRetry : Nullable<bool> with get, set
Public Property AbsorbConditionalErrorsOnRetry As Nullable(Of Boolean)

Valor da propriedade

Exemplos

using (MemoryStream inputDataStream = new MemoryStream(inputData))
{
    BlobRequestOptions conditionalErrorRequestOptions = new BlobRequestOptions() { AbsorbConditionalErrorsOnRetry = true };

    CloudAppendBlob appendBlob = container.GetAppendBlobReference("appendBlob");
    appendBlob.UploadFromStream(inputDataStream, accessCondition: null, options: conditionalErrorRequestOptions);
}

Comentários

Essa opção é usada apenas pelo CloudAppendBlob objeto nos métodos UploadFrom* , os métodos AppendFrom* e a classe BlobWriteStream . Por padrão, ele é definido como false. Defina essa opção true como apenas para cenários de gravador único. Definir essa opção true como em um cenário de vários gravadores pode levar a dados de blob corrompidos.

Ao chamar "UploadFrom*" em um blob de acréscimo, o Cliente de Armazenamento divide os dados de entrada em vários blocos de dados e carrega cada bloco de dados com uma operação de "bloco de acréscimo". Normalmente, uma condição de acesso "IfAppendPositionEqual" é adicionada à operação de bloco de acréscimo, para que a operação de upload falhe se algum outro processo em algum lugar tiver acrescentado dados no meio desse fluxo de dados. No entanto, isso pode resultar em uma falha falsa em um caso muito específico. Se uma operação de acréscimo falhar com um tempo limite, há uma chance de que a operação tenha sido bem-sucedida no serviço, mas a resposta de "êxito" não voltou para o cliente. Nesse caso, o cliente tentará novamente e obterá uma falha de "posição de acréscimo não atendida".

Definir esse valor como true resulta na continuação da operação de upload quando ele vê uma falha de "posição de acréscimo não atendida" na repetição – contabilizando a possibilidade acima. No entanto, isso perde a proteção no cenário de vários gravadores – se vários threads estiverem carregando para o blob de uma vez e esse valor for definido truecomo , alguns dados poderão ser perdidos, pois o cliente acha que os dados foram carregados, quando na verdade eram os dados do outro processo.

Aplica-se a