-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GET Blob Structured Message #42959
GET Blob Structured Message #42959
Conversation
API change check APIView has identified API level changes in this PR and created following API reviews. |
rangeGetContentMD5 = true; | ||
break; | ||
case StorageChecksumAlgorithm.StorageCrc64: | ||
if (pageRange?.Length <= Constants.StructuredMessage.MaxDownloadCrcWithHeader) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, do we want to just always use Structured Message for this download? Is splitting the logic worth the efficiency gain of using the header? I guess the logic split is not very impactful in code, but I wonder if customers who are watching requests might be confused? Not really sure here, just thinking aloud.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We already have to split for crc vs md5. I'd rather just use the simpler implementation when we're able.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sticking with this for compatibility on certain error states.
@@ -1725,8 +1753,15 @@ private void SetNameFieldsIfNull() | |||
long length = response.IsUnavailable() ? 0 : response.Headers.ContentLength ?? 0; | |||
ClientConfiguration.Pipeline.LogTrace($"Response: {response.GetRawResponse().Status}, ContentLength: {length}"); | |||
|
|||
BlobDownloadStreamingResult result = response.ToBlobDownloadStreamingResult(); | |||
if (response.GetRawResponse().Headers.TryGetValue(Constants.StructuredMessage.CrcStructuredMessageHeader, out string _) && |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to fail if we asked for structured message but didn't get one back? Again, not sure here, just a thought.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably. Need to think on that more. Good catch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
throw added as sanity check, but relying on service to return a 400
9c0fcbc
into
Azure:feature/storage/ContentValidation
* download range structured message * testproxy * throw when service fails to give back structured message * test * testproxy
* Structured Message Decode Stream (#42079) * Initial implementation and basic test * seek/write tests * fix test param * fix exceptions * Content validation update spec (#42191) * enum rename and footer read/write methods * align encode/decode tests | update encoding stream * decode stream footer * rename * decode tests & bugfixes (#42256) * decode tests & bugfixes * roundtrip tests * more tests * better errors | remove duplicate test * test coverage | exception message (#42363) * Structured Message Decode: Validate Content Length (#42370) * validate stream length * tests * stageblock | appendblock | putpages StructuredMessage (#42699) * regenerate and stage block uses structured message * page and append * testproxy * cleanup * fix datalake/share tests * testproxy * testproxy * re-add null-safe access * GET Blob Structured Message (#42959) * download range structured message * testproxy * throw when service fails to give back structured message * test * testproxy * PUT Blob Structured Message (#43130) * putblob structured message * testproxy * fixes * Structured Message: DataLake Append (#43275) * datalake append * null fix * fixes * Retriable decode (#44155) * retriable decode * rewind mock test * bugfix * bugfix * tests * Download retriable stream structured message (#44176) * blobs retriable structured message download * test proxy * testproxy * remove commented code * CRC: Always Structured Message (#44955) * blockblob working * revert testing change * page/append * datalake file * testfix * bug fixes | test fixes * disable new API for presenting CRC from structured message * fix nunit * whitespace * fix/test-proxy * csproj * more csproj removeals This is building fine locally idk what's up * Trigger Fresh Build * fileshare testproxy * fix mock * Update macos image from 11 to latest (#44607) * Update macos image from 11 to latest * Update eng/pipelines/templates/jobs/ci.mgmt.yml Co-authored-by: Ben Broderick Phillips <ben@benbp.net> --------- Co-authored-by: Ben Broderick Phillips <ben@benbp.net> * Revert "Update macos image from 11 to latest (#44607)" this is causing too many problems. skipping macos tests for now. They'll run when this feature branch merges into main. This reverts commit 29e87b4. --------- Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com> Co-authored-by: Ben Broderick Phillips <ben@benbp.net> * Enable fileshare crc (#45124) * impl * testproxy * shares fix * testproxy * block blob fix (#45129) * block blob fix * testproxy * rename and validation (#45160) * rename and validation * fix * crc tracking converted to longs (#45307) * Crc reporting pt2 (#45447) * expose crc from structured message * testproxy * undo typo * exportapi * testproxy * remove unused parameter * add `ExpectTrailingDetails` to download response * fix test inconsistency * fix auto --------- Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com> Co-authored-by: Ben Broderick Phillips <ben@benbp.net>
GET Blob uses structured message when requesting a CRC on an unspecified range, or a range larger than 4 MiB.