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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SpannerとgRPCを使ったらバグった話
lp-peg
December 18, 2019
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
420
Accessibility Awareness
sabderemane
1
180
Everyday Curiosity
cassininazir
0
290
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
480
Building the Perfect Custom Keyboard
takai
2
850
Are puppies a ranking factor?
jonoalderson
2
3.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
Navigating Weather and Climate Data
rabernat
0
490
What's in a price? How to price your products and services
michaelherold
247
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
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してね」と書いてありました。