[BUG] The function in aws-node-express-dynamodb-api is not idempotent
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- aws, javascript
調査の方向性
aws-node-express-dynamodb-api/index.js から始め、ユーザー名を書き込む関数内の DynamoDB の put 呼び出しを調べてください。リンクされた Lambda のリトライと DynamoDB トランザクションのドキュメントを読み、その後、同時更新とリトライによる動作を検証してください。リトライされた書き込みが同じリクエストとして認識され、ユーザー名が繰り返し変更されなければ完了です。
索引モデルが issue の本文から書いたものです。
説明
The function of writing username in index.js under aws-node-express-dynamodb-api is not idempotent and may cause data inconsistency.
try {
await dynamoDbClient.put(params).promise();
res.json({ userId, name });
}
Assuming two concurrent functions want to change the user name with the same userId. When one of them fails after executing dynamodb_client.put, AWS Lambda will retry it and change the user name again. Then the client will see the username is changed between two different names repeatedly even if there are only two functions changing the name. This should not happen if every function is executed only once and causes data inconsistency.
This can be fixed by making the function idempotent. DynamoDB has provided an idempotent write operation called TransactWriteItems. Replacing dynamodb_client.put with it can fix the idempotence bug. Users need to provide a unique client token to be the parameter of TransactWriteItems API. which helps DynamoDB to determine whether the incoming write is a retry.
- 主要言語
- JavaScript
- スター
- 11.5k
- フォーク
- 4.4k
- 平均マージ
- 2時間 55分
- マージ済み PR(30日)
- 3
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
serverless/examples のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
serverless/examples#404 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
serverless/examples#809 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 30/100
serverless/examples#793 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
serverless/examples#784 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
serverless/examples#782 ·
serverless/examples の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
area-deployment area-integrations triage:bot-seen
難易度 2/5 半日 初心者へのやさしさ 86/100
-
Issue-Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
sugarlabs/musicblocks#8924 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
ArduPilot/ardupilot_wiki#8088 ·
-
[BUG] createTool tools cannot be registered with Mastra when exactOptionalPropertyTypes is enabled オープンcustomer-eng status: needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100