[BUG] The function in aws-node-express-dynamodb-api is not idempotent
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- aws, javascript
Hướng nghiên cứu
Bắt đầu trong aws-node-express-dynamodb-api/index.js và kiểm tra lệnh gọi put của DynamoDB trong hàm ghi username. Đọc tài liệu được liên kết về việc retry của Lambda và giao dịch DynamoDB, sau đó xác minh hành vi với các lần cập nhật và retry đồng thời. Hoàn tất khi một lần ghi được retry được nhận diện là cùng một yêu cầu và không liên tục thay đổi username.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- JavaScript
- Star
- 11.5k
- Fork
- 4.4k
- Merge trung bình
- 2 giờ 55 phút
- Pull request đã merge (30 ngày)
- 3
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của serverless/examples
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
serverless/examples#404 ·
-
ENOTDIR error on starter project Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
serverless/examples#809 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 30/100
serverless/examples#793 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
serverless/examples#784 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
serverless/examples#782 ·
Tất cả issue của serverless/examples
Issue tương tự
-
Update HugeIcons library Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
antfu-collective/icones#398 ·
-
ECmail.com Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
wesbos/burner-email-providers#554 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
radiantearth/stac-browser#1023 ·
-
HMR stops working Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
components-web-app/docs#92 ·