SpannerとgRPCを使ったらバグった話
by
lp-peg
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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してね」と書いてありました。