Buffer ... mistery decided!
Well, when you do CloudBlob.OpenRead() , the client library does two CloudBlob.OpenRead() :
First get a list of blob blocks:
GET /devstoreaccount1/etagtest/test2.txt?comp=blocklist&blocklisttype=Committed&timeout=90 HTTP/1.1 x-ms-version: 2009-09-19 User-Agent: WA-Storage/6.0.6002.18006 x-ms-date: Wed, 23 Feb 2011 22:21:01 GMT Authorization: SharedKey devstoreaccount1:SPOBe/IUrZJvoPXnAdD/Twnppvu37+qrUbHnaBHJY24= Host: 127.0.0.1:10000 HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: application/xml Last-Modified: Wed, 23 Feb 2011 22:20:33 GMT ETag: 0x8CDA1BF0593B660 Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: ecffddf2-137f-403c-9595-c8fc2847c9d0 x-ms-version: 2009-09-19 x-ms-blob-content-length: 4 Date: Wed, 23 Feb 2011 22:21:02 GMT
Attention to ETag in the answer.
Secondly, I think you should start extracting it, and now attention to ETag in the request:
GET /devstoreaccount1/etagtest/test2.txt?timeout=90 HTTP/1.1 x-ms-version: 2009-09-19 User-Agent: WA-Storage/6.0.6002.18006 x-ms-range: bytes=0-525311 If-Match: 0x8CDA1BF0593B660 x-ms-date: Wed, 23 Feb 2011 22:21:02 GMT Authorization: SharedKey devstoreaccount1:WXzXRv5e9+p0SzlHUAd7iv7jRHXvf+27t9tO4nrhY5Q= Host: 127.0.0.1:10000 HTTP/1.1 206 Partial Content Content-Length: 4 Content-Type: text/plain Content-Range: bytes 0-3/4 Last-Modified: Wed, 23 Feb 2011 22:20:33 GMT ETag: 0x8CDA1BF0593B660 Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: db1e221d-fc61-4837-a255-28b1547cb5d7 x-ms-version: 2009-09-19 x-ms-lease-status: unlocked x-ms-blob-type: BlockBlob Date: Wed, 23 Feb 2011 22:21:02 GMT
What happens if another WebRole does something in blob between calls? YES race condition .
Solution: use CloudBlob.DownloadToStream() , this method only calls one call:
GET /devstoreaccount1/etagtestxx/test2.txt?timeout=90 HTTP/1.1 x-ms-version: 2009-09-19 User-Agent: WA-Storage/6.0.6002.18006 x-ms-date: Wed, 23 Feb 2011 22:34:02 GMT Authorization: SharedKey devstoreaccount1:VjXIO2kbjCIP4UeiXPtxDxmFLeoYAKOqiRv4SV3bZno= Host: 127.0.0.1:10000 HTTP/1.1 200 OK Content-Length: 4 Content-Type: text/plain Last-Modified: Wed, 23 Feb 2011 22:33:47 GMT ETag: 0x8CDA1C0DEB562D0 Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: 183a05bb-ea47-4811-8768-6a62195cdb64 x-ms-version: 2009-09-19 x-ms-lease-status: unlocked x-ms-blob-type: BlockBlob Date: Wed, 23 Feb 2011 22:34:02 GMT
I'll put it into practice tomorrow morning at work and see what happens.
vtortola
source share