nodeでシェルスクリプト書いてたら、標題の通りのことが起きたのでちょっと調べた。
- DBにクエリ投げてるのにプロセスが閉じちゃう!
- callbackが来るまでtimerで無理矢理プロセス延命してたら、いつまでも終わらない!
という感じだったので、
ともかくnodeのプロセスが終わるときの条件を復習。
後半のややこしいはなしはいいんですが、
ともかくhandle
あるいはreq
というものが生きてると、プロセスは終了されないらしい。
つまり終わっちゃうということは、handleがない…というところまで調べて、
いま書いてるシェルスクリプトで、 DBへのconnectionをopenしてなかった ことに気づきましたーあははは。
- connectionのhandleが作られてないので、イベントループ終了しちゃう
- connectionないので、クエリ返ってこない
- connectionないときエラー吐いてくれないんかな。。
笑っちゃうけど、ありがちなので気をつけたい。
いまイベントループを維持しているのはどのhandleなのかとか、
なるべく常に意識できてたほうがよさそう。