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.9k
SpannerとgRPCを使ったらバグった話
lp-peg
December 18, 2019
Tweet
Share
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Six Lessons from altMBA
skipperchong
29
4.1k
Building the Perfect Custom Keyboard
takai
2
680
BBQ
matthewcrist
89
10k
Test your architecture with Archunit
thirion
1
2.1k
GraphQLとの向き合い方2022年版
quramy
50
14k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Testing 201, or: Great Expectations
jmmastey
46
8k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
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してね」と書いてありました。