0

App Engineトランザクションのドキュメントで、次のメモを見つけました。

注:トランザクションの送信時にアプリが例外を受け取った場合、それは必ずしもトランザクションが失敗したことを意味するわけではありません。トランザクションがコミットされ、最終的に正常に適用される場合は、Timeout、TransactionFailedError、またはInternalError例外を受け取る可能性があります。可能な限り、データストアトランザクションをべき等にして、トランザクションを繰り返しても最終結果が同じになるようにします。

これは非常に一般的な情報であり、詳細を見つけることができませんでした。この問題に関して次の質問があります。

  1. NDBの変換に影響しますか?NDBのドキュメントには記載されていませんが、この動作は継承されていると思います
  2. この種の状況の原因は何ですか?
  3. どのくらいの頻度で発生する可能性がありますか?
  4. それを防ぐことはできますか、それとも確率を下げることができますか?
  5. この状況でトランザクションタスクはキューに入れられますか?
  6. この状況は、将来修正されるバグですか、それとも私が慣れるべき機能ですか?
4

1 に答える 1

2

はい、ndbにも影響します。

考えられる原因には、データストアサーバーが正常にコミットしたが、結果をアプリに伝達できないネットワークパーティションが含まれます。

まれですが、防ぐことはできず、修正されることはありません。これは、すべての分散システムに固有のものです。

タスクキューの追加は、データストアサーバーによるトランザクションでコミットされます。

于 2012-12-07T06:32:54.947 に答える