CodiMD fails to start with existing unix socket file
- 主要言語
- JavaScript
- スター
- 10.1k
- フォーク
- 1.1k
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
When starting CodiMD the first time, it creates the Unix socket (file), but leaves it on shutdown. The second time I start CodiMD, it fails with `message=listen EADDRINUSE /run/codimd/socket, stack=Error: listen EADDRINUSE /run/codimd/socket`. It would be helpful when CodiMD could use an existing socket, because I could set the permissions of the socket and change ownership, before starting CodiMD.
```
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1350:19)
at listenInCluster (net.js:1408:12)
at Server.listen (net.js:1503:5)
at startListen (/srv/www/n.jo-so.de/app.js:221:12)
at /srv/www/n.jo-so.de/app.js:234:47
at /srv/www/n.jo-so.de/lib/models/revision.js:167:20
at Model. (/srv/www/n.jo-so.de/lib/models/revision.js:200:41)
at Model.tryCatcher (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/promise.js:694:18)
at _drainQueueStep (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/async.js:138:12)
at _drainQueue (/srv/www/n.jo-so.de/node_modules/bluebird/js/release/async.js:131:9), code=EADDRINUSE, errno=EADDRINUSE, syscall=listen, address=/run/codimd/socket, port=-1
```
@ahihi, please have a look.
コントリビューションガイド
調査の方向性
app.js の startListen 周辺、221 行目付近から始め、/run/codimd/socket が残っている状態で CodiMD を再度起動して失敗を再現します。シャットダウンと listen の処理を追跡します。完了条件は、2 回目の起動で既存のソケットが要求どおりに処理され、EADDRINUSE エラーが発生しないことです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, node.js
- 領域
- backend, networking
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 42/100