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
1.9k
2
Share
SpannerとgRPCを使ったらバグった話
lp-peg
December 18, 2019
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
140
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
230
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
180
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Claude Code のすすめ
schroneko
67
220k
Building AI with AI
inesmontani
PRO
1
1k
For a Future-Friendly Web
brad_frost
183
10k
WENDY [Excerpt]
tessaabrams
11
38k
The SEO identity crisis: Don't let AI make you average
varn
0
480
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
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してね」と書いてありました。