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
goroutine で panic すると親プロセスをまきこんで落ちる
Search
uji
February 21, 2021
0
1.6k
goroutine で panic すると親プロセスをまきこんで落ちる
uji
February 21, 2021
Tweet
Share
More Decks by uji
See All by uji
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
84
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
170
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
580
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
620
5分で完全理解するGoのiota
uji
10
5.8k
GoのGC (garbage collector)について理解する
uji
10
6.6k
シンプルなモック生成ツール matryer/moq 使ってみた
uji
0
470
Goにおけるポインタの使いどころ
uji
0
760
Google Chromeで始めるVim
uji
0
180
Featured
See All Featured
Music & Morning Musume
bryan
46
6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
43
2k
Art, The Web, and Tiny UX
lynnandtonic
294
20k
Fireside Chat
paigeccino
31
2.9k
Why Our Code Smells
bkeepers
PRO
334
56k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.1k
Robots, Beer and Maslow
schacon
PRO
157
8.2k
A better future with KSS
kneath
235
17k
Mobile First: as difficult as doing things right
swwweet
221
8.8k
Designing with Data
zakiwarfel
98
5k
Docker and Python
trallard
39
3k
Agile that works and the tools we love
rasmusluckow
327
20k
Transcript
goroutine で panic すると 親プロセスをまきこんで落ちる uji @uji_rb
panic とは • 回復不能だと判断された実行時のエラーを発生させる機構 • panicが生じるとプロセスが止まる • 組み込み関数のpanicを呼び出すと発生する
panic のハンドリング • panic は defer + recover でハンドリングできる https://play.golang.org/p/sXEcmsxtV_Z
しかし... goroutine で panic が起こった場合 親プロセスからはハンドリングできない
goroutine の panic • goroutine 内で panic のハンドリングがされていないと 親プロセスごと落ちる https://play.golang.org/p/HUY-sN8PK-X
ぶち当たった問題 • api サーバーで goroutine を使った処理が panic が起こすとプロ セスがまるごと落ちてしまう apiサーバー
メインプロセス リクエスト プロセス リクエスト プロセス リクエスト プロセス リクエスト 子プロセス リクエスト 子プロセス
解決策 • goroutine 内ではなるべく panic が 起こらないようにする (error によるハンドリングを徹底)
• goroutine 内で panic の恐れがある場合は recover 処理を忘れない →汎用的につかえる並列処理実行関数をつくった
参考 • プログラミング言語Go完全入門 https://docs.google.com/presentation/d/1HW3wG8J_Q2536Iu__7HGr_mhurHajC7IOGjCnn3kZmg/edit?usp=sharing