Hiểu biết của tôi là Azure CloudAppendBlob đã an toàn khỏi các vấn đề tương tranh vì bạn chỉ có thể thêm vào bộ nhớ blob này và không cần so sánh các thẻ E. Như đã trình bày qua đường bưu điện này:Lỗi Azure CloudAppendBlob với quyền truy cập đồng thời
cụ thể:
Bên cạnh đó, Nối Blob hỗ trợ có nhiều khách hàng bằng văn bản cho blob cùng mà không cần phải đồng bộ hóa (không giống như khối và trang blob)
Tuy nhiên, kiểm tra đơn vị sau đây nêu lên:
412 điều kiện vị trí phụ được chỉ định không được đáp ứng.
stack trace
Microsoft.WindowsAzure.Storage.Blob.BlobWriteStream.Flush()
Microsoft.WindowsAzure.Storage.Blob.BlobWriteStream.Commit()
Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob.UploadFromStreamHelper
Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob.AppendFromStream
Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob.AppendFromByteArray
Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob.AppendText
Đây là bài kiểm tra đơn vị. Có lẽ dịch vụ sẽ xử lý các yêu cầu từ các ngữ cảnh khác nhau nhưng không như thế này là song song?
[TestMethod]
public void test_append_text_concurrency()
{
AppendBlobStorage abs = new AppendBlobStorage(new TestConnectConfig(), "testappendblob");
string filename = "test-concurrent-blob";
abs.Delete(filename);
Parallel.Invoke(
() => { abs.AppendText(filename, "message1\r\n"); },
() => { abs.AppendText(filename, "message2\r\n"); }
);
string text = abs.ReadText(filename);
Assert.IsTrue(text.Contains("message1"));
Assert.IsTrue(text.Contains("message2"));
}
Phương pháp trong AppendBlobStorage
public void AppendText(string filename, string text)
{
CloudAppendBlob cab = m_BlobStorage.BlobContainer.GetAppendBlobReference(filename);
// Create if it doesn't exist
if (!cab.Exists())
{
try
{
cab.CreateOrReplace(AccessCondition.GenerateIfNotExistsCondition(), null, null);
}
catch { }
}
// Append the text
cab.AppendText(text);
}
Có lẽ tôi đang thiếu một cái gì đó. Lý do tôi đang cố gắng để làm điều này là tôi có nhiều công việc web mà tất cả có thể viết cho phụ này blob và tôi figured đây là những gì nó được thiết kế cho?
Tôi cũng vừa thử nghiệm điều này từ quay lên nhiều webjob và viết một số văn bản vào cùng một appendblob. Tôi nhận được lỗi tương tự. – James
Lưu ý rằng tôi đang sử dụng phiên bản 5.0.2.0 của Microsoft.WindowsAzure.Storage (Tôi cũng đã thử chống lại bản xem trước 5.0.3.0) – James