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

rsc: Allow file blobs in DbOnly Store #1634

Merged
merged 1 commit into from
Aug 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions share/wake/lib/system/remote_cache_api.wake
Original file line number Diff line number Diff line change
Expand Up @@ -316,11 +316,7 @@ export def makeRemoteCacheApi (config: String): Result RemoteCacheApi Error =
# (RemoteCacheApi "foo" 1 None) | rscApiPostStringBlob "foo" "my foo contents" = Fail "authorization required"
# ```
export def rscApiPostStringBlob (name: String) (value: String) (api: RemoteCacheApi): Result String Error =
def contentType =
if value.strlen < 95 then
Some "blob/small"
else
None
def contentType = contentTypeFromSize value.strlen

require Pass temp = writeTempFile name value

Expand All @@ -336,7 +332,12 @@ export def rscApiPostStringBlob (name: String) (value: String) (api: RemoteCache
export def rscApiPostFileBlob (name: String) (file: String) (api: RemoteCacheApi): Result String Error =
# We must use unsafe here since we cannot elevate *file* to a Path without either copying it
# or triggering the 'job output by multiple files' error.
uploadBlobRequest api (unsafe_addFormData name file None)

def contentType = match (unsafe_stat file)
Pass (Stat _ _ size) -> contentTypeFromSize size
Fail _ -> None
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if there is some benefit to failing earlier here rather than waiting for the uploadBlobRequest to fail if it can't stat the file?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe, I'm not sure which one happens first but I'll at it to the list of things to give a look


uploadBlobRequest api (unsafe_addFormData name file contentType)

# rscApiPostJob: Posts a job defined by *req* to the remote cache server. Requires authorization.
#
Expand Down Expand Up @@ -631,6 +632,10 @@ export def rscApiGetFileBlob ((CacheSearchBlob _ uri): CacheSearchBlob) (path: S
Pass path

## --- Helper functions ---

def contentTypeFromSize size =
if size < 95 then Some "blob/small" else None
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did we determine ~100 was the right limit still?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope, we talked about 256 but I'm kicking that down the road


# TODO: Delete these once new json API is added to wake repo
def jField (jvalue: JValue) (key: String) =
require JObject obj = jvalue
Expand Down
Loading