1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-12-12 11:01:17 +03:00

Integrated S3 lib's s3-to-s3 copy fcn.

This commit is contained in:
Patrick LeBlanc
2019-04-25 14:33:56 -05:00
parent 6e2247e2b1
commit 701534e3d3

View File

@@ -267,6 +267,31 @@ void S3Storage::deleteObject(const string &key)
int S3Storage::copyObject(const string &sourceKey, const string &destKey)
{
uint8_t s3err;
ms3_st *creds = getConnection();
ScopedConnection sc(this, creds);
do
{
s3err = ms3_copy(creds, bucket.c_str(), sourceKey.c_str(), bucket.c_str(), destKey.c_str());
if (s3err && retryable_error(s3err))
{
logger->log(LOG_CRIT, "S3Storage::copyObject(): failed to copy, got '%s'. bucket = %s, key = %s. Retrying...",
s3err_msgs[s3err], bucket.c_str(), key.c_str());
sleep(5);
}
} while (s3err && retryable_error(s3err));
if (s3err)
{
logger->log(LOG_CRIT, "S3Storage::copyObject(): failed to copy, got '%s'. bucket = %s, key = %s.",
s3err_msgs[s3err], bucket.c_str(), key.c_str());
errno = s3err_to_errno[s3err];
return -1;
}
return 0;
#if 0
// no s3-s3 copy yet. get & put for now.
int err;
@@ -276,6 +301,7 @@ int S3Storage::copyObject(const string &sourceKey, const string &destKey)
if (err)
return err;
return putObject(data, len, destKey);
#endif
}
int S3Storage::exists(const string &key, bool *out)