Skip to content

Conversation

@bbockelm
Copy link
Collaborator

If the client declares the expected size of the uploaded object, then pass this information on to the OSS layer via the oss.asize CGI.

This is relevant for the S3 backend as the S3 protocol requires object sizes to be declared ahead of time. If XRootD doesn't provide this information, then the S3 OSS backend has to buffer the uploaded object to know the final size, costing both in overall throughput and memory usage.

@amadio amadio requested a review from abh3 December 11, 2024 19:17
@amadio amadio force-pushed the devel branch 3 times, most recently from bf0b7bc to d54785d Compare December 18, 2024 16:12
@bbockelm bbockelm changed the base branch from devel to master December 31, 2024 19:22
@bbockelm
Copy link
Collaborator Author

Per input from @amadio in a different ticket, I re-targeted this to master.

@bbockelm bbockelm requested a review from ccaffy January 10, 2025 20:30
@bbockelm
Copy link
Collaborator Author

@ccaffy - since you've been working on the XrdHttp pieces, would you be able to review this?

Copy link
Contributor

@ccaffy ccaffy left a comment

Choose a reason for hiding this comment

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

Thanks Brian, I tried it on my local box, it works without any problem. Just one minor thing to change if possible :)

Copy link
Contributor

@ccaffy ccaffy left a comment

Choose a reason for hiding this comment

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

That's great, thanks for the addition of the system tests!

If the client declares the expected size of the uploaded object,
then pass this information on to the OSS layer via the `oss.asize`
CGI.

This is relevant for the S3 backend as the S3 protocol requires object
sizes to be declared ahead of time.  If XRootD doesn't provide this
information, then the S3 OSS backend has to buffer the uploaded object
to know the final size, costing both in overall throughput and memory
usage.
This adds a test where `curl` is invoked in such a way that the
final object length is known at open time.  This is passed through
to the xrootd bridge layer and allows the OSS to allocate itself
appropriately.

The test itself looks through the server log not for the oss.asize
string (which is not logged) but rather for the length of the request
(which contains the URL) sent to the bridge.  The first upload of
a file does not include `oss.asize` so the size of the two log
messages can be compared.
@amadio amadio added this to the 5.7.3 milestone Jan 25, 2025
@amadio amadio merged commit 7426d01 into xrootd:master Jan 27, 2025
9 checks passed
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