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.
