BlobRequestOptions.AbsorbConditionalErrorsOnRetry Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 true
en , 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
Azure SDK for .NET