読取りの例外

ストアで読取り操作を行うと、いくつかの例外が発生します。1つ目は、ConsistencyExceptionです。この例外は、一貫性ポリシーが満たされないため、操作を完了できないことを表します。詳細は、「一貫性保証」を参照してください。

2つ目の例外RequestTimeoutExceptionです。これは、ストアのタイムアウト・プロパティで指定された時間内に操作を完了できなかったことを表します。ストアで一度に多くの読取りリクエストをサービスしようとしていることを示している可能性があります。データは、ストア内のシャード全体でパーティション化され、パーティション化は、シャード・キーに基づいて行われることに注意してください。1つのキーに対して多数の読取りリクエストが発生するようにキーを設計した場合、ストア内の一部のシャードがアイドルの場合でもリクエストのタイムアウトが発生することがあります。

リクエストのタイムアウトは、ネットワーク速度の低下やまったく反応しない状態を引き起こしているネットワークの問題を表していることもあります。

RequestTimeoutExceptionに対処するには、単にエラーを記録して続行するか、少しの間待ってから操作を再試行します。タイムアウト値を大きくして操作を再試行することもできます。

IllegalArgumentExceptionを受け取ることもできます。これは、ストアに書き込んでいるRowに主キーがない、または行が無効な場合にスローされます。

また、一貫性の問題やリクエスト・タイムアウトの問題以外でなんらかの例外が発生したことを表す一般的なFaultExceptionを受け取ることもあります。この対処法は、エラーを記録して続行するか、操作を再試行することのみです。

また、クライアントのメタデータが同期していない可能性があることを示すMetadataNotFoundExceptionを受け取ることもあります。これはFaultExceptionを拡張したものであり、アプリケーションが取得すると、メタデータ(特にTableAPI.getTable()によって取得された表ハンドル)のリフレッシュのニーズをトリガーします。

さらに、認証が必要なセキュア・ストアを使用している場合は、適切な認証資格証明を指定しないと、AuthenticationFailureExceptionまたはAuthenticationRequiredExceptionを受け取ることあります。セキュア・ストアを使用するときに、UnauthorizedExceptionを受け取ることもあります。これは、認証されたユーザーが、適切な権限を持たない操作を試行していることを意味します。