Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SpannerとgRPCを使ったらバグった話
Search
lp-peg
December 18, 2019
2
1.7k
SpannerとgRPCを使ったらバグった話
lp-peg
December 18, 2019
Tweet
Share
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Fireside Chat
paigeccino
34
3.1k
For a Future-Friendly Web
brad_frost
176
9.5k
Music & Morning Musume
bryan
46
6.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
It's Worth the Effort
3n
184
28k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Transcript
SpannerとgRPCでバグった話 Tomohiro Katsukura
自己紹介 ・勝倉 智央 ・株式会社DeNA ・19新卒入社(1年目) ・ゲームサーバー(フレームワーク)の開発
app data Project GKE Cloud Spanner Cloud Storage gRPC ゲームサーバーの構成
なにがダメかわかりますか?
サンプルコード Call Stack ReadWriteTransaction()
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction()
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f()
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction()
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction() f()
サンプルコード gRPCのAbortedを返している。 gRPC error 概要 (Http error) OK 成功 200
UNKNOWN 不明なエラー 500 NOT_FOUND 該当なし 404 ABORTED コンフリクト 409 Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction() f() Aborted
Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() f() runInTransaction() Aborted =Aborted =
true
f() Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() Aborted =Aborted = true
continue!!
f() Spannerパッケージのコード Call Stack runWithRetryOnAborted() ReadWriteTransaction() Aborted ループの完成 \ (^o^)
/
app data Project GKE Cloud Spanner Cloud Storage Takasho SDK
gRPC gRPC SpannerライブラリはgRPCで通信
まとめ GCPのサービスを使って、gRPCでweb層を構築しているアプリケーションを作成す る際は注意! * あとでみたら、spannerライブラリのドキュメントには「 retryしたいときはgRPCのabortedをreturnしてね」と書いてありました。