Giter Site home page Giter Site logo

domain-middleware's People

Contributors

fengmk2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

domain-middleware's Issues

closing the server when not in cluster

For what I can see in the code, the current code won't attempt to close the server when not in a cluster.

This is questionable (though I can think of some debatable reasons)

Being in an undefined state should call for an immediate stop to serving potentially wrong requests.

interference between server.close and worker.disconnect

According to node documentation, calling worker.disconnect() will close existing servers. And that's true (tested it) Calling worker.disconnect()will even throw an uncaught if the servers are already closed (tested it also).

So the shutdown routine must be rewritten so that if in a worker, the midleware should only call worker.disconnect() and not close the server directly.

PR pending.

Domain does not handle async function calls

var http = require('http');
var connect = require('connect');
var domainMiddleware = require('domain-middleware');

var server = http.createServer();

var app = connect()
  .use(
    domainMiddleware({
      server: server,
      killTimeout: 30000,
    }),
  )
  .use(function (req, res) {
  // most handling logic is async in the real world
    async function f(res){
      if (Math.random() > 0.5) {
        throw new Error('Asynchronous error from timeout');
      } else {
        res.end('Hello from Connect!');
      }
    }
    f(); // this is not caught 
  })
  .use(function (err, req, res, next) {
    res.end(err.message);
  });

server.on('request', app);
server.listen(1984);


cleanly monitor worker.disconnect and server.close

instead of try/catching server.close and worker.disconnect, we could listen to their close and disconnect signal and abstain from repeating if already closed / shut.

More elegant I think.

PR pending.

archive this repo?

@fengmk2 - you have been identified as the last / most active committer in this repo which is inactive for a while. This ping is to check with you to determine:

  • whether do you have any specific maintenance plans with this repo
  • are you fine for this repo to be archived
  • do you believe if there is another stake holder / affected party who should know

thanks!

allowing a custom shutdown callback

This would allow :

  • customizing the shutdown procedure (sending an email, etc.)
  • reusing the callback in other shutdown cases (kill signal received, software shutdown)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.