Официант DynamoDB Ничего не делает (Waituntablenotexists, waituntablenotexistswithcontext)

#aws-sdk-go

Вопрос:

Официант DynamoDB в AWS SDK v1 для Go работает не так, как ожидалось.

Я пытаюсь запустить интеграционные тесты в контейнерной среде, используя DynamoDB Local. Я не уверен, что это имеет к этому какое-то отношение…

Я начал с простого dynamodb.WaitUntilTableExists , а затем вызвал doesTableExist простую функцию, которую я написал, которая просто вызывается dynamodb.ListTables под капотом.

Я заметил, что вызов WaitUntilTableExists возвращается немедленно без ошибки. А затем doesTableExist обнаруживает, что таблица не существует, поэтому ниже приводится эта ошибка: «ожидаемая таблица=%v должна существовать, но ее нет».

 klog.Infof("waiting until table table=%s exists", tableName)
err = ddb.WaitUntilTableExists(amp;dynamodb.DescribeTableInput{TableName: aws.String(tableName)})
if err != nil {
    return fmt.Errorf("gave up waiting for table=%s to be ready", tableName)
}
klog.Infof("finished waiting until table table=%s exists", tableName)

if exists := doesTableExist(ddb, tableName); !exists {
    return fmt.Errorf("expected table=%v to exist but it does not", tableName)
}
 

Затем я попытался переключиться на dynamodb.WaitUntilTableExistsWithContext . Но поведение такое же: он немедленно возвращается без ошибок, а затем doesTableExist обнаруживает, что таблица не существует.

 dynamodb.WaitUntilTableExistsWithContext(context.TODO(), amp;dynamodb.DescribeTableInput{TableName: aws.String(tableName)},
        request.WithWaiterMaxAttempts(3), request.WithWaiterDelay(request.ConstantWaiterDelay(time.Second*1)), request.WithWaiterLogger(aws.NewDefaultLogger()))
 

Обратите внимание, что некоторые интеграционные тесты, которые выполняются подобным образом, работают нормально. Таким образом, таблица создается достаточно быстро, чтобы тест прошел успешно. Таким образом, кажется, что небольшой процент таблиц создается недостаточно быстро, и официант DynamoDB не работает, поэтому тест завершается неудачно, потому что таблица не существует.