Handle S3Errors::RESOURCE_NOT_FOUND from aws-sdk-cpp

This is returned by recent versions. Also handle NO_SUCH_KEY even
though the library doesn't actually return that at the moment.
This commit is contained in:
Eelco Dolstra 2017-06-19 18:15:23 +02:00
parent 1c969611ba
commit b33621d425
No known key found for this signature in database
GPG Key ID: 8170B4726D7198DE

View File

@ -233,8 +233,10 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
if (!res.IsSuccess()) {
auto & error = res.GetError();
if (error.GetErrorType() == Aws::S3::S3Errors::UNKNOWN // FIXME
&& error.GetMessage().find("404") != std::string::npos)
if (error.GetErrorType() == Aws::S3::S3Errors::RESOURCE_NOT_FOUND
|| error.GetErrorType() == Aws::S3::S3Errors::NO_SUCH_KEY
|| (error.GetErrorType() == Aws::S3::S3Errors::UNKNOWN // FIXME
&& error.GetMessage().find("404") != std::string::npos))
return false;
throw Error(format("AWS error fetching %s: %s") % path % error.GetMessage());
}