-
Notifications
You must be signed in to change notification settings - Fork 24.7k
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
OOME during GCP upload resulted in creation of empty blob #72018
Comments
Pinging @elastic/es-distributed (Team:Distributed) |
Thanks for tracking this down David ... this is actually a pretty obvious failure with the information you provided. Since we close the writer channel to GCS in a finally block and that's where we actually create the blob this makes a lot of sense. I gotta think about a fix for a bit, it's not obvious to me how we can easily prevent this from happening. |
Ohh yikes yes I see we use a |
I don't see the same issue with S3 tho: at least, we set the blob length explicitly. The API is different too, we pass an |
In the corner case of uploading a large (>5MB) metadata blob we did not set content validation requirement on the upload request (we automatically have it for smaller requests that are not resumable uploads). This change sets the relevant request option to enforce a CRC32C hash check when writing `BytesReference` to GCS (as is the case with all but data blob writes). The custom CRC32C implementation here can be removed after backporting to 7.x. I copied over the Guava version of CRC32C with slight adjustments for consuming `BytesReference` instead of pulling the Guava dependency into the compile path so that we can use the JDK's implementation of CRC32C in 8.x without having different dependencies in 8.x and 7.x. closes elastic#72018
In the corner case of uploading a large (>5MB) metadata blob we did not set content validation requirement on the upload request (we automatically have it for smaller requests that are not resumable uploads). This change sets the relevant request option to enforce a MD5 hash check when writing `BytesReference` to GCS (as is the case with all but data blob writes) closes #72018
In the corner case of uploading a large (>5MB) metadata blob we did not set content validation requirement on the upload request (we automatically have it for smaller requests that are not resumable uploads). This change sets the relevant request option to enforce a MD5 hash check when writing `BytesReference` to GCS (as is the case with all but data blob writes) closes elastic#72018
In the corner case of uploading a large (>5MB) metadata blob we did not set content validation requirement on the upload request (we automatically have it for smaller requests that are not resumable uploads). This change sets the relevant request option to enforce a MD5 hash check when writing `BytesReference` to GCS (as is the case with all but data blob writes) closes elastic#72018
In the corner case of uploading a large (>5MB) metadata blob we did not set content validation requirement on the upload request (we automatically have it for smaller requests that are not resumable uploads). This change sets the relevant request option to enforce a MD5 hash check when writing `BytesReference` to GCS (as is the case with all but data blob writes) closes #72018
In the corner case of uploading a large (>5MB) metadata blob we did not set content validation requirement on the upload request (we automatically have it for smaller requests that are not resumable uploads). This change sets the relevant request option to enforce a MD5 hash check when writing `BytesReference` to GCS (as is the case with all but data blob writes) closes #72018
Elasticsearch version (
bin/elasticsearch --version
): 7.9.1Plugins installed: Cloud
JVM version (
java -version
): BundledOS version (
uname -a
if on a Unix-like system): CloudDescription of the problem including expected versus actual behavior:
The master node reported an OOME while writing the
RepositoryData
blob at2021-03-17T04:30:56.129
. However it apparently created an empty blob rather than failing outright:This rendered the repository unusable: an empty blob is not valid at this location.
Provide logs (if relevant):
The stack trace from an OOME is often not an indication of the reason for the OOME, but in this case it does indicate we were writing the repository data at the time.
The text was updated successfully, but these errors were encountered: