yuizho / salon

A login less planning poker app
https://salon-ppoker.com
MIT License
2 stars 1 forks source link

REFLESH_TABLE の操作があった際の処理をRMUに実装 #4

Closed yuizho closed 2 years ago

yuizho commented 2 years ago

overview

https://github.com/yuizho/salon/issues/1#issuecomment-1107332442 で記述していた処理を実装した。

REFRESH_TABLE はその部屋のアクティブなユーザのステータスを CHOOSING に変える操作なので、他の操作と違って他のユーザの操作と競合する可能性がある。

ケアしないといけないのは、以下のケース

  1. ユーザAがREFRESH_TABLEの操作が行い、更新対象のアクティブな(LEAVEDでない)ユーザ情報をテーブルから取得処理が実行される
  2. ユーザBが部屋から退出しており、絶妙なタイミングでユーザBのSTATUSがLEAVEDに更新される
  3. ユーザAのREFRESH_TABLEの更新処理が実行されるが、ユーザBのステータスは2.の操作でLEAVEDになっているので更新してはいけない

Transaction使ったり、BatchWriteで更新することを検討したが、結局REFRESH_TABLEの操作で LEAVED のステータスが更新されなければ良いので、UpdateItemで繰り返し実行する実装になった。

reference

実装にあたって書き残したメモ