SpannerとgRPCを使ったらバグった話
by
lp-peg
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
SpannerとgRPCでバグった話 Tomohiro Katsukura
Slide 2
Slide 2 text
自己紹介 ・勝倉 智央 ・株式会社DeNA ・19新卒入社(1年目) ・ゲームサーバー(フレームワーク)の開発
Slide 3
Slide 3 text
app data Project GKE Cloud Spanner Cloud Storage gRPC ゲームサーバーの構成
Slide 4
Slide 4 text
なにがダメかわかりますか?
Slide 5
Slide 5 text
サンプルコード Call Stack ReadWriteTransaction()
Slide 6
Slide 6 text
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction()
Slide 7
Slide 7 text
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f()
Slide 8
Slide 8 text
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction()
Slide 9
Slide 9 text
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction() f()
Slide 10
Slide 10 text
サンプルコード gRPCのAbortedを返している。 gRPC error 概要 (Http error) OK 成功 200 UNKNOWN 不明なエラー 500 NOT_FOUND 該当なし 404 ABORTED コンフリクト 409 Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction() f() Aborted
Slide 11
Slide 11 text
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction() Aborted =Aborted = true
Slide 12
Slide 12 text
f() Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() Aborted =Aborted = true continue!!
Slide 13
Slide 13 text
f() Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() Aborted ループの完成 \ (^o^) /
Slide 14
Slide 14 text
app data Project GKE Cloud Spanner Cloud Storage Takasho SDK gRPC gRPC SpannerライブラリはgRPCで通信
Slide 15
Slide 15 text
まとめ GCPのサービスを使って、gRPCでweb層を構築しているアプリケーションを作成す る際は注意! * あとでみたら、spannerライブラリのドキュメントには「 retryしたいときはgRPCのabortedをreturnしてね」と書いてありました。