1

DynamoDB を使用しています。アプリからスキャン操作を行います。すべてが完璧に機能します。しばらくすると、応答はゼロになります。しかし、私は例外を受け取っていません。を使用して詳細ログを有効にしました。

[AmazonLogger verboseLogging];

詳細ログが有効になっている場合、次のようなログが表示されます。

"__type":"com.amazonaws.dynamodb.v20111205#ProvisionedThroughputExceededException","message":"テーブルに設定されたプロビジョニング済みスループットのレベルを超えました。UpdateTable API を使用してプロビジョニング レベルを上げることを検討してください"

私のコードは次のようになります。

@try {
    DynamoDBScanRequest *request = /* Create request */;
    DynamoDBScanResponse *response = [[AmazonClientManager ddb] scan:request];
    /* 
     * response is nil if the provisioning throughput is exceeded 
     * and the all retries are over
     */
    ALog(@"Response: %@", response); 
    NSMutableArray *array = response.items;
    return array;
} @catch (NSException *exception) {
    /* 
     * I am expecting the  ProvisionedThroughputExceededException 
     * to be thrown here. But its not throwing here. Instead I get the response
     * as nil above.
     */
    ALog(@"Exception: %@", exception);
    return nil;
}

私はそれを正しくやっていますか?誰か助けてくれませんか?

ありがとう。

編集: TopicID、QuestionID、Question、Answer、AskedAt、RepliedAt、QuestionType などのほぼ 10 のフィールドを含む QuestionAnswer テーブルに設定するスループット (読み取り/書き込みの両方) 容量の大まかなアイデアを誰か教えてもらえますか? ありがとう。

4

1 に答える 1

4

プロビジョニングされたよりも多くの読み取りキャパシティーユニットでスキャンリクエストを試みたところ、AmazonClientException「不明なエラーが発生しました」という一般的なメッセージが表示されました。私たちは修正に取り組んでおり、次のバージョンはDynamoDBProvisionedThroughputExceededException上記の状況で正しく戻るはずです。

レスポンスがゼロになるとおっしゃいましたが、再現できませんでした。[AmazonErrorHandler shouldNotThrowExceptions]例外をオフにするために呼び出しますか? このオプションをオンにすると、SDK は と をスローAmazonClientExceptionしませんAmazonServiceException。古いバージョンの SDK を使用している可能性もあります。1.4.4 を試して、例外が発生するかどうかを確認してください。最適ではありませんが、少なくとも、何か問題が発生したときに例外をキャッチできるはずです。

于 2012-11-28T00:01:37.460 に答える