On Mar 21, 2012, at 10:56 AM, billywhizz wrote:

> could anyone enlighten me on why writing to stdout and stderr now blocks? 
> also, do we have a list somewhere of which methods in node.js block by 
> default? to start the ball rolling:
> 
> process.stdout.write (unless stdout is a pipe)
> process.stderr.write (unless stderr is a pipe)
> process.setgid
> process.setuid
> util.debug
> console.log|warn|error|dir|timeEnd
> fs.*Sync

I asked the same question recently : 
"Now a simple control-S in the terminal can grind to a halt any node.js server."
<http://groups.google.com/group/nodejs-dev/browse_thread/thread/92333182b1fd237e#>
 

To think that a single control-S could halt my node server makes me feel 
nervous.
OTOH, it's true that a control-C would be worse.
But even so... 

On Mar 14, 2012, at 10:46 AM, Jorge wrote:

> Begin forwarded message:
> 
>> From: Jorge Chamorro Bieling <[email protected]>
>> Date: March 14, 2012 12:08:48 AM GMT+01:00
>> To: Isaac Schlueter <[email protected]>
>> Subject: Re: Now a simple control-S in the terminal can grind to a halt any 
>> node.js server.
>> On Mar 13, 2012, at 11:56 PM, Isaac Schlueter wrote:
>>> 
>>> On Tue, Mar 13, 2012 at 15:04, Jorge Chamorro Bieling <[email protected]> 
>>> wrote:
>>>> Because now, it seems, that write()ing to stdout is blocking...
>>>> 
>>>> For example:
>>>> 
>>>> 1.- paste this in a shell:
>>>> 
>>>> node << EOF
>>>> require('http').createServer(function(req, res) {
>>>> res.end("FAST");
>>>> process.stdout.write('.');
>>>> }).listen(8000);
>>>> EOF
>>>> 
>>>> 
>>>> 2.- and hit control-S
>>>> 
>>>> 3.- then do an `ab -t 2 http://127.0.0.1:8000` in another shell, and all 
>>>> you'll get is :
>>>> 
>>>> apr_poll: The timeout specified has expired (70007)
>>>> 
>>>> Why? Because the node server is totally blocked by the control-S!
>>>> 
>>>> Are you aware of that ?
>>>> Isn't that something to be concerned about ?
>>>> Why did you change write()ing to stdout to blocking ?
>>>> 
>>>> Cheers,
>>>> --
>>>> Jorge.
>> 
>> 
>>> This API change was made quite some time ago.  It prevents a lot of
>>> confusion and edge-case bugs.
>>> 
>>> If it causes problems for you, please bring it up on the
>>> [email protected] mailing list, where API changes can be
>>> discussed and explored from multiple angles.
>>> 
>>> In the meantime, I would not recommend writing to stdout on every
>>> request if it might be blocked.
>>> 
>> 
>> 
>> Isaac,
>> 
>> It would be equally frozen whether it wrote on every request or just once.
> 
> A warning, a message, anything, just a single char written to stdout could 
> now freeze a node.js server.
> -- 
> Jorge.

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
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 post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to