Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SpannerとgRPCを使ったらバグった話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
lp-peg
December 18, 2019
2k
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
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Paper Plane
katiecoart
PRO
4
53k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
750
Technical Leadership for Architectural Decision Making
baasie
3
590
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Agile that works and the tools we love
rasmusluckow
331
22k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
960
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
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してね」と書いてありました。