oxidecomputer / rfd-site

Web frontend for browsing, searching, and reading RFDs
https://rfd.shared.oxide.computer
Mozilla Public License 2.0
87 stars 4 forks source link

local mode server stops listening after background rebuild, then crashes after another one #17

Open davepacheco opened 1 year ago

davepacheco commented 1 year ago

After working around oxidecomputer/rfd-site#18, things seemed to mostly work. But after a background rebuild, it stopped its TCP server and did not come back up:

$ HOST=zathras.local LOCAL_RFD_REPO=/Users/dap/oxide/rfd-433-update-mechanisms/ npm run dev

> dev
> remix dev

 💿  remix dev

 info  building...
 warn  esm-only package: @asciidoctor/core
┃ @asciidoctor/core is possibly an ESM-only package.
┃ To bundle it with your server, include it in `serverDependenciesToBundle`
┃ -> https://remix.run/docs/en/main/file-conventions/remix-config#serverdependenciestobundle
â”—
 info  built (10.3s)
Remix App Server started at http://localhost:3000 (http://zathras.local:3000)

GET /rfd/0433 200 - - 285.516 ms
 info  rebuilding... (~ ../../rfd-433-update-mechanisms/rfd/0433/README.adoc)
 info  rebuilt (1.4s)
Remix App Server started at http://localhost:3000 (http://zathras.local:3000)
 info  app server ready (1.2s)
 info  hmr

 info  rebuilding... (~ ../../rfd-433-update-mechanisms/rfd/0433/README.adoc)
 info  rebuilt (1.5s)
Remix App Server started at http://localhost:3000 (http://zathras.local:3000)
 info  app server ready (1.4s)
 info  hmr

GET /rfd/0433 200 - - 290.790 ms
POST /user/toggle-theme?_data=routes%2Fuser.toggle-theme 200 - - 5.399 ms
GET /rfd/0433?_data=routes%2Frfd.%24slug 200 - - 32.235 ms
GET /rfd/0433?_data=root 200 - - 53.100 ms
 info  rebuilding... (~ ../../rfd-433-update-mechanisms/rfd/0433/README.adoc)
 info  rebuilt (1.6s)
Error: listen EADDRNOTAVAIL: address not available fe80::4d9:a2ed:ca73:24e9:3000
    at Server.setupListenHandle [as _listen2] (node:net:1855:21)
    at listenInCluster (node:net:1920:12)
    at GetAddrInfoReqWrap.doListen (node:net:2069:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:8)

It did not exit at this point. I ^C'd it. I think here's a transcript where I did the same thing again but did _not ^C it, and when it rebuilt again, it crashed:

$ HOST=zathras.local LOCAL_RFD_REPO=/Users/dap/oxide/rfd-433-update-mechanisms/ npm run dev

> dev
> remix dev

 💿  remix dev

 info  building...
 warn  esm-only package: @asciidoctor/core
┃ @asciidoctor/core is possibly an ESM-only package.
┃ To bundle it with your server, include it in `serverDependenciesToBundle`
┃ -> https://remix.run/docs/en/main/file-conventions/remix-config#serverdependenciestobundle
â”—
 info  built (7.6s)
Error: listen EADDRNOTAVAIL: address not available fe80::4d9:a2ed:ca73:24e9:3000
    at Server.setupListenHandle [as _listen2] (node:net:1855:21)
    at listenInCluster (node:net:1920:12)
    at GetAddrInfoReqWrap.doListen (node:net:2069:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:8)
 info  rebuilding... (~ ../../rfd-433-update-mechanisms/rfd/0433/README.adoc)
 info  building...

 info  rebuilt (1.6s)

/Users/dap/oxide/tools/rfd-site/node_modules/@remix-run/dev/node_modules/pidtree/lib/pidtree.js:61
      callback(new Error('No matching pid found'));
               ^

Error: No matching pid found
    at /Users/dap/oxide/tools/rfd-site/node_modules/@remix-run/dev/node_modules/pidtree/lib/pidtree.js:61:16
    at /Users/dap/oxide/tools/rfd-site/node_modules/@remix-run/dev/node_modules/pidtree/lib/ps.js:40:7
    at ChildProcess.<anonymous> (/Users/dap/oxide/tools/rfd-site/node_modules/@remix-run/dev/node_modules/pidtree/lib/bin.js:57:5)
    at ChildProcess.emit (node:events:514:28)
    at maybeClose (node:internal/child_process:1105:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5)

Node.js v20.6.1
david-crespo commented 1 year ago

That's a weird one, possibly distinct from oxidecomputer/rfd-site#20, where I saw hot reload not working, but the site didn't break — it continued to work on full reload.