You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
MCOL-3494: make option for testing configuration to skip retryable errors.
This commit is contained in:
@ -89,7 +89,7 @@ S3Storage::ScopedConnection::~ScopedConnection()
|
|||||||
s3->returnConnection(conn);
|
s3->returnConnection(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
S3Storage::S3Storage()
|
S3Storage::S3Storage(bool skipRetry) : skipRetryableErrors(skipRetry)
|
||||||
{
|
{
|
||||||
/* Check creds from envvars
|
/* Check creds from envvars
|
||||||
Get necessary vars from config
|
Get necessary vars from config
|
||||||
@ -239,6 +239,10 @@ int S3Storage::getObject(const string &_sourceKey, boost::shared_array<uint8_t>
|
|||||||
else
|
else
|
||||||
logger->log(LOG_ERR, "S3Storage::getObject(): failed to GET, got '%s'. bucket = %s, key = %s. Retrying...",
|
logger->log(LOG_ERR, "S3Storage::getObject(): failed to GET, got '%s'. bucket = %s, key = %s. Retrying...",
|
||||||
s3err_msgs[err], bucket.c_str(), sourceKey.c_str());
|
s3err_msgs[err], bucket.c_str(), sourceKey.c_str());
|
||||||
|
if (skipRetryableErrors)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
sleep(5);
|
sleep(5);
|
||||||
}
|
}
|
||||||
} while (err && retryable_error(err));
|
} while (err && retryable_error(err));
|
||||||
@ -329,6 +333,10 @@ int S3Storage::putObject(const boost::shared_array<uint8_t> data, size_t len, co
|
|||||||
else
|
else
|
||||||
logger->log(LOG_ERR, "S3Storage::putObject(): failed to PUT, got '%s'. bucket = %s, key = %s."
|
logger->log(LOG_ERR, "S3Storage::putObject(): failed to PUT, got '%s'. bucket = %s, key = %s."
|
||||||
" Retrying...", s3err_msgs[s3err], bucket.c_str(), destKey.c_str());
|
" Retrying...", s3err_msgs[s3err], bucket.c_str(), destKey.c_str());
|
||||||
|
if (skipRetryableErrors)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
sleep(5);
|
sleep(5);
|
||||||
}
|
}
|
||||||
} while (s3err && retryable_error(s3err));
|
} while (s3err && retryable_error(s3err));
|
||||||
@ -363,6 +371,10 @@ int S3Storage::deleteObject(const string &_key)
|
|||||||
else
|
else
|
||||||
logger->log(LOG_ERR, "S3Storage::deleteObject(): failed to DELETE, got '%s'. bucket = %s, key = %s. Retrying...",
|
logger->log(LOG_ERR, "S3Storage::deleteObject(): failed to DELETE, got '%s'. bucket = %s, key = %s. Retrying...",
|
||||||
s3err_msgs[s3err], bucket.c_str(), key.c_str());
|
s3err_msgs[s3err], bucket.c_str(), key.c_str());
|
||||||
|
if (skipRetryableErrors)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
sleep(5);
|
sleep(5);
|
||||||
}
|
}
|
||||||
} while (s3err && s3err != MS3_ERR_NOT_FOUND && retryable_error(s3err));
|
} while (s3err && s3err != MS3_ERR_NOT_FOUND && retryable_error(s3err));
|
||||||
@ -398,6 +410,10 @@ int S3Storage::copyObject(const string &_sourceKey, const string &_destKey)
|
|||||||
else
|
else
|
||||||
logger->log(LOG_ERR, "S3Storage::copyObject(): failed to copy, got '%s'. bucket = %s, srckey = %s, "
|
logger->log(LOG_ERR, "S3Storage::copyObject(): failed to copy, got '%s'. bucket = %s, srckey = %s, "
|
||||||
" destkey = %s. Retrying...", s3err_msgs[s3err], bucket.c_str(), sourceKey.c_str(), destKey.c_str());
|
" destkey = %s. Retrying...", s3err_msgs[s3err], bucket.c_str(), sourceKey.c_str(), destKey.c_str());
|
||||||
|
if (skipRetryableErrors)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
sleep(5);
|
sleep(5);
|
||||||
}
|
}
|
||||||
} while (s3err && retryable_error(s3err));
|
} while (s3err && retryable_error(s3err));
|
||||||
@ -447,6 +463,10 @@ int S3Storage::exists(const string &_key, bool *out)
|
|||||||
else
|
else
|
||||||
logger->log(LOG_ERR, "S3Storage::exists(): failed to HEAD, got '%s'. bucket = %s, key = %s. Retrying...",
|
logger->log(LOG_ERR, "S3Storage::exists(): failed to HEAD, got '%s'. bucket = %s, key = %s. Retrying...",
|
||||||
s3err_msgs[s3err], bucket.c_str(), key.c_str());
|
s3err_msgs[s3err], bucket.c_str(), key.c_str());
|
||||||
|
if (skipRetryableErrors)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
sleep(5);
|
sleep(5);
|
||||||
}
|
}
|
||||||
} while (s3err && s3err != MS3_ERR_NOT_FOUND && retryable_error(s3err));
|
} while (s3err && s3err != MS3_ERR_NOT_FOUND && retryable_error(s3err));
|
||||||
|
@ -30,7 +30,8 @@ namespace storagemanager
|
|||||||
class S3Storage : public CloudStorage
|
class S3Storage : public CloudStorage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
S3Storage();
|
S3Storage(bool skipRetry = false);
|
||||||
|
|
||||||
virtual ~S3Storage();
|
virtual ~S3Storage();
|
||||||
|
|
||||||
int getObject(const std::string &sourceKey, const std::string &destFile, size_t *size = NULL);
|
int getObject(const std::string &sourceKey, const std::string &destFile, size_t *size = NULL);
|
||||||
@ -46,6 +47,8 @@ class S3Storage : public CloudStorage
|
|||||||
ms3_st *getConnection();
|
ms3_st *getConnection();
|
||||||
void returnConnection(ms3_st *);
|
void returnConnection(ms3_st *);
|
||||||
|
|
||||||
|
bool skipRetryableErrors;
|
||||||
|
|
||||||
std::string bucket; // might store this as a char *, since it's only used that way
|
std::string bucket; // might store this as a char *, since it's only used that way
|
||||||
std::string prefix;
|
std::string prefix;
|
||||||
std::string region;
|
std::string region;
|
||||||
|
@ -35,7 +35,7 @@ int s3TestConnection()
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
S3Storage* s3 = new S3Storage();
|
S3Storage* s3 = new S3Storage(true);
|
||||||
cout << "S3 Storage Manager Configuration OK" << endl;
|
cout << "S3 Storage Manager Configuration OK" << endl;
|
||||||
delete s3;
|
delete s3;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user