FWIW, I can't see anything wrong with your logic.
Modifying naught to pass fd 11 to your app's cluster master looks like it
should allow the cluster workers to listen with {fd: 11} and have that
bubble up to the master.
~Ryan
On Tue, Nov 4, 2014 at 7:18 PM, Ryan Schmidt <[email protected]>
wrote:
> Does anyone have any thoughts on the below?
>
> Or is there a better zero-downtime deployment module I should use instead
> of naught that has already solved this problem of how to pass along a
> socket on a file descriptor?
>
>
> On Nov 2, 2014, at 6:32 PM, Ryan Schmidt wrote:
>
> > My server is started by another process that hands it a socket on file
> descriptor 11. I start my server this way:
> >
> > http.createServer(app).listen({fd: 11});
> >
> > Now I want to modify this to enable zero-downtime deployments, so I
> would like to have naught start my server. The question is: how can I get
> naught to pass fd 11 to my script so that I can listen on it? Or, how do I
> "connect" naught's fd 11 with my script's fd 11?
> >
> > I have tried modifying naught's spawn invocation so that it reads:
> >
> > var stdio = [process.stdin, stdoutValue, stderrValue, 'ipc'];
> > stdio[11] = 11;
> > master = spawn(process.execPath,
> nodeArgs.concat([path.join(__dirname, "master.js"), workerCount,
> script]).concat(argv), {
> > env: process.env,
> > stdio: stdio,
> > cwd: process.cwd(),
> > });
> >
> > Basically I have added "stdio[11] = 11;" However this doesn't seem to be
> working. My server is failing to listen, getting the error "Error: listen
> ENOTSOCK". The node documentation says a positive integer in the stdio
> array "is interpreted as a file descriptor that is is currently open in the
> parent process. It is shared with the child process". I'm wondering if the
> problem is that the file descriptor, though available to my parent process,
> is not open yet. If so, how should I open it? Just fs.open?
> >
> > Is there some way for naught (or any process) to know which fds are
> being made available to it, and pass them on to the child without needing
> to be told what they are? Is it possible for a process to automatically
> pass all fds to a child without having to enumerate them?
> >
> >
> > I have also filed this issue as a naught ticket but haven't heard back
> yet:
> >
> > https://github.com/andrewrk/naught/issues/65
>
>
>
> --
> Job board: http://jobs.nodejs.org/
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/1ABA4CB3-BD6B-4B05-8C1C-D22CFA66CBCF%40ryandesign.com
> .
> For more options, visit https://groups.google.com/d/optout.
>
--
http://twitter.com/rmgraham
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/CAGjmZGzs-vLnzxbFPKK%3DAuqS2W69GEd3pV5FC_n0E7rrCFar7Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.