为什么 MonitoringManager::OnRequestSucceeded() 中的 assert(s_monitors) 会失败?
Why does an assert(s_monitors) in MonitoringManager::OnRequestSucceeded() fail?
我将文件上传到 S3。在收到请求后,我立即从 MonitoringManager 收到异常,我不知道自己做错了什么。我们在我们的应用程序中使用了多个线程。
异常:断言失败。程序:...监控...ger.cpp第55行
表达式:s_monitors
cpp 文件:https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp 第 55 行
uploadFileToS3(...);
方法'uploadFileToS3':
bool result = false;
const Aws::SDKOptions options;
Aws::InitAPI(options);
{
std::shared_ptr<Aws::Utils::Threading::Executor> m_executor = Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>("TransferTests", 4);
Aws::Transfer::TransferManagerConfiguration config(m_executor.get());
config.s3Client = client;
auto transmanager = Aws::Transfer::TransferManager::Create(config);
std::shared_ptr<Aws::Transfer::TransferHandle> handle = transmanager->UploadFile(fileDestination, Aws::String(S3_BUCKET_NAME),
Aws::String(s3key), Aws::String("multipart/form-data"), metadata);
handle->WaitUntilFinished();
result = isAwsActionSuccessful(handle) && boost::filesystem::remove(fileDestination);
}
Aws::ShutdownAPI(options);
return result;
问题是我的应用程序使用了多个线程,因此 API 被多次初始化和关闭。当我在我的应用程序中只执行一次 API 的初始化/关闭时,问题就解决了。
我将文件上传到 S3。在收到请求后,我立即从 MonitoringManager 收到异常,我不知道自己做错了什么。我们在我们的应用程序中使用了多个线程。
异常:断言失败。程序:...监控...ger.cpp第55行 表达式:s_monitors
cpp 文件:https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp 第 55 行
uploadFileToS3(...);
方法'uploadFileToS3':
bool result = false;
const Aws::SDKOptions options;
Aws::InitAPI(options);
{
std::shared_ptr<Aws::Utils::Threading::Executor> m_executor = Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>("TransferTests", 4);
Aws::Transfer::TransferManagerConfiguration config(m_executor.get());
config.s3Client = client;
auto transmanager = Aws::Transfer::TransferManager::Create(config);
std::shared_ptr<Aws::Transfer::TransferHandle> handle = transmanager->UploadFile(fileDestination, Aws::String(S3_BUCKET_NAME),
Aws::String(s3key), Aws::String("multipart/form-data"), metadata);
handle->WaitUntilFinished();
result = isAwsActionSuccessful(handle) && boost::filesystem::remove(fileDestination);
}
Aws::ShutdownAPI(options);
return result;
问题是我的应用程序使用了多个线程,因此 API 被多次初始化和关闭。当我在我的应用程序中只执行一次 API 的初始化/关闭时,问题就解决了。