Thanks Martin.

Is there a performance hit of throwing every request to the end of this / 
the next tick?

-Lee

On Friday, July 19, 2013 5:42:42 PM UTC+1, Martin Cooper wrote:
>
> > Now why would it go and do something like that?
>
> Your call to the non-existent function is synchronous w.r.t. Express's 
> request handling chain. This same issue came up here a couple of weeks ago. 
> See:
>
> https://groups.google.com/forum/#!msg/nodejs/ZfaJPYyHKoA/BgHxErk9bEUJ
>
> If you wrapped your two statements in process.nextTick() / setImmediate(), 
> you'd be fine.
>
> --
> Martin Cooper
>
>
> On Fri, Jul 19, 2013 at 6:52 AM, Lee <[email protected] <javascript:>>wrote:
>
>> *Copied from 
>> http://stackoverflow.com/questions/17729900/node-js-domain-per-express-request-inside-another-domain
>> *
>>
>> I'm trying to layout a basic Node app like this...
>>
>> Cluster -> Worker -> Server Domain -> Express Request Domain
>>
>> So, if an error is thrown 18 layers deep into a call stack because 
>> someone misspelled their name on a login form, the entire server doesn't 
>> crash.
>>
>> Here's some basic code to simulate the worker part:
>>
>> var domain, server;
>>> domain = require('domain');
>>> server = domain.create();
>>> server.on('error', function(e) {
>>>     console.log('total meltdown...', e.stack);
>>> });
>>> server.run(function() {
>>>     var express = require('express')();
>>>     express.configure(function() {
>>>         // Domain on EVERY request
>>>         express.use(function(req, res, next) {
>>>             var d = domain.create();
>>>             d.on('error', function(e) {
>>>                 console.log('fired REQUEST error', e.stack);
>>>                 next(e);
>>>             });
>>>             d.run(next);
>>>         });
>>>         // Generic error handler
>>>         express.use(function(e, req, res, next) {
>>>             res.status(500);
>>>             res.end('oops');
>>>         });
>>>         // Serve the request with a blatent error
>>>         express.get('/', function(req, res) {
>>>             this_function_does_not_exist();
>>>             res.end('we will never get here');
>>>         });
>>>     });
>>>     // Fire 'er up
>>>     express.listen(3000);
>>> });
>>
>>
>> What I'm expecting...
>>
>> I curl http://localhost:3000/, get a nice little 'oops' error, and see 
>> 'fired REQUEST error' and the error stack in the console.
>>
>> What actually happens...
>>
>> I get this both as the browser response, and in the console...
>>
>> ReferenceError: this_function_does_not_exist is not defined at 
>>> /Stuff/test.js:38:13 at callbacks 
>>> (/Stuff/node_modules/express/lib/router/index.js:161:37) at param 
>>> (/Stuff/node_modules/express/lib/router/index.js:135:11) at pass 
>>> (/Stuff/node_modules/express/lib/router/index.js:142:5) at Router._dispatch 
>>> (/Stuff/node_modules/express/lib/router/index.js:170:5) at Object.router 
>>> (/Stuff/node_modules/express/lib/router/index.js:33:10) at next 
>>> (/Stuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at 
>>> next (/Stuff/node_modules/express/node_modules/connect/lib/proto.js:192:9) 
>>> at b (domain.js:183:18) at Domain.run (domain.js:123:23)
>>
>>
>> Now why would it go and do something like that?
>>
>>  -- 
>> -- 
>> 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]<javascript:>
>> To unsubscribe from this group, send email to
>> [email protected] <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>  
>> --- 
>> 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] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

-- 
-- 
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

--- 
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].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to