Skip to content
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

Dev/robin/8656 blob etag support for forestrie #31

Merged
merged 4 commits into from
Nov 6, 2023

Conversation

robinbryce
Copy link
Collaborator

@robinbryce robinbryce commented Nov 3, 2023

feat: etag support for put & read blob

The introduction of ETag support makes it possible to do two things:

  1. read/modify/write concurrency guards, so that values are written back
    only if the destination content hasn't been modified since being
    read.

  2. Efficient cache refreshing without fetching the blob data. still
    requires request round trip, but no data is returned in the response
    if the content is unchanged since the last read.

  3. is going to give us crash fault tollerance and race reconciliaiton
    for updating forestrie blobs.

behaviour change:

Previously Read swallowed any error that wasn't accompanied by an io.EOF
condition. This causes the return states to be very confusing when
dealint with If- header responses. The err is now returned in that case.

The arrangements to ensure body.Read is called remain as before

AB#8656

Robin Bryce added 3 commits November 2, 2023 23:36
The introduction of ETag support makes it possible to do two things:

1. read/modify/write concurrency guards, so that values are written back
   only if the destination content hasn't been modified since being
   read.
2. Efficient cache refreshing without fetching the blob data. still
   requires request round trip, but no data is returned in the response
   if the content is unchanged since the last read.

1. is going to give us crash fault tollerance and race reconciliaiton
   for updating forestrie blobs.

behaviour change:

Previously Read swallowed any error that wasn't accompanied by an io.EOF
condition. This causes the return states to be very confusing when
dealint with If- header responses. The err is now returned in that case.

The arrangements to ensure body.Read is called remain as before

AB#8656
azblob/bytesreadercloser.go Outdated Show resolved Hide resolved
@robinbryce robinbryce merged commit 232f4a3 into main Nov 6, 2023
1 check passed
@robinbryce robinbryce deleted the dev/robin/8656-blob-etag-support-for-forestrie branch November 6, 2023 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants