Description
opened by wada at 2022-06-08T10:12:05; updated 2022-06-14T10:58:50
現象
お世話になっております。
ヤマダポイントの付与履歴を確認したところ、重複でのエラーとなっていました。
[INFO ][2022-06-06 21:09:56] jp.yamada_denki.api.service.impl.ApiServiceImpl - method:addPoint sapKey:21014080190b7ae03f4a4e09756d31f9ea5849951eab5bb1b8c0b01f53c900f6 game_code:JOLLY_ROGER_SP point:2 requestNo:JOLLY_ROGER_SP hash:2e5c88d0c402d6724906fb90d39a949377069a19
「requestNo:JOLLY_ROGER_SP」ですが、本来一意になるよう設定頂いているものですが、こちらに値が設定されておらず、
3/24に既に存在している履歴との重複によりエラーとなったようです。
正常付与時は以下になっています。
[INFO ][2022-06-06 21:10:52] jp.yamada_denki.api.service.impl.ApiServiceImpl - method:addPoint sapKey:21014080190b7ae03f4a4e09756d31f9ea5849951eab5bb1b8c0b01f53c900f6 game_code:JOLLY_ROGER_SP point:1 requestNo:JOLLY_ROGER_SP16545174524793087 hash:311d8b24541b90174a7f07f1f7959343567e6456
連番をつけないケースがある可能性があり、プログラムをご確認いただけますでしょうか。
調査
request_noが空になるケース
対応
request_noが空にならないように修正
wada change_title at 2022-06-08T10:58:30: 【CS】ヤマダAPI通信時にrequest_noが空になる
ヤマダAPI通信時にrequest_noが空になる
wada assign at 2022-06-08T11:13:44: Not assigned:wada
Comment
#19807 by wada at 2022-06-08T11:51:06; updated 2022-06-08T11:51:06
API通信時の処理
1. API通信前にログテーブルにレコードが作成される(request_noは未設定)
2. API通信時にrequest_noが生成される
3. API通信成功後、ログテーブルのrequest_noが更新される
4. API通信がなんらかの理由でエラーもしくは中断された場合、request_noは更新されない(空のまま)
失敗後に再度同じ内容でAPI通信
1. ログテーブルからAPI通信失敗のレコードを取得
2. レコードのrequest_noを使用してAPI通信
3. 失敗したレコードのため、request_noが空のままAPI通信
4. 空のrequest_noは、初回であれば重複しないので、API通信が成功
5. 空のrequest_noが、2回目だとエラーのためAPI通信が失敗
6. 何度実行しても、上記の理由でAPi通信が失敗し続ける
Comment
#19808 by wada at 2022-06-08T12:44:59; updated 2022-06-08T12:44:59
空request_noのAPI通信失敗は処理が続行するので、ゲーム側ではポイントを受け取った表示になっている。
そのため、実際にはポイントを受け取っていないことに気づいていないユーザーはいる。
Comment
#19994 by wada at 2022-06-14T10:58:46; updated 2022-06-14T10:58:46
wada close at 2022-06-14T10:58:50: Close