Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RTK Queryでretry: 3 が指定されているが、backendがtransactionを考慮していないと挙動がおかしくなる #306

Open
hrk091 opened this issue Oct 7, 2022 · 0 comments

Comments

@hrk091
Copy link
Member

hrk091 commented Oct 7, 2022

RTK Queryのretryが組み込まれ、500番台のエラーのときはauto retryする仕組みとなっているが、backend側がtransactionalなAPIになっておらず、かつ500を返したりする場合に、おかしなバグにつながる。

具体例を以下にあげる。
POST chatの際に、backendはRDBに書き込む -> Amazon SQSに突っ込む -> backendでhookしてwebsocketでUIに通知する、という流れになっているように見えるが、ここでSQSに投入する際に失敗するとUIに500 errorを返している。このAPI設計でUI側でretryを具備すると、SQSとの接続がおかしいときは3回書き込んでしまい、同じchat messageが3つ保存されてしまう事態になる。

このケースは、backend側を 先にSQSに書く -> RDBに書く という形で修正すればよい話だが、他にも類似の問題があるかもしれないので、そもそもUIからauto retryする必要があるのかを検討したい。
(mutationは1回のみ、queryは複数回retryというのが妥当な線かも。できるのかは知らないけど)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant