BlobRequestOptions.AbsorbConditionalErrorsOnRetry Propiedad

Definición

Obtiene o establece un valor que indica si se debe absorber un error condicional en un reintento para la solicitud.

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

Valor de propiedad

Ejemplos

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

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

Comentarios

Esta opción solo la usa el CloudAppendBlob objeto en los métodos UploadFrom* , los métodos AppendFrom* y la clase BlobWriteStream . De forma predeterminada, se establece en false. Establezca esta opción true en solo para escenarios de escritor único. Establecer esta opción true en en un escenario de varios sistemas de escritura puede provocar datos de blobs dañados.

Al llamar a "UploadFrom*" en un blob en anexos, el cliente de almacenamiento divide los datos de entrada en una serie de bloques de datos y carga cada bloque de datos con una operación de "anexar bloque". Normalmente, se agrega una condición de acceso "IfAppendPositionEqual" a la operación de bloque append, para que se produzca un error en la operación de carga si algún otro proceso tiene datos anexados en medio de este flujo de datos. Sin embargo, esto puede dar lugar a un error falso en un caso muy específico. Si se produce un error en una operación de anexión con un tiempo de espera, existe la posibilidad de que la operación se haya realizado correctamente en el servicio, pero la respuesta "correcta" no la devolvió al cliente. En este caso, el cliente volverá a intentarlo y, a continuación, obtendrá un error de "no se cumple la posición de anexión".

Si se establece este valor true en, la operación de carga continúa cuando ve un error de "posición de anexión no cumplido" en el reintento, teniendo en cuenta la posibilidad anterior. Sin embargo, esto pierde la protección en el escenario de varios sistemas de escritura: si varios subprocesos se cargan en el blob a la vez y este valor se establece trueen , es posible que se pierdan algunos datos, ya que el cliente cree que los datos se cargaron, cuando de hecho eran los datos del otro proceso.

Se aplica a