Почему assert (s_monitors) в MonitoringManager :: OnRequestSucceeded () завершается ошибкой? - PullRequest
0 голосов
/ 21 января 2019

Я загружаю файл на S3. Сразу после запроса я получаю исключение от MonitoringManager и не знаю, что я делаю неправильно. Мы используем несколько потоков в нашем приложении.

Исключение: утверждение не выполнено. Программа: ... Монитор ... ger.cpp Line 55 Expresion: 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;

1 Ответ

0 голосов
/ 28 января 2019

Проблема заключалась в том, что мое приложение использовало несколько потоков, поэтому API был инициализирован и завершен несколько раз.Проблема была решена, когда я только один раз выполнил инициализацию / завершение API в своем приложении.

...