moleculerjs / moleculer

:rocket: Progressive microservices framework for Node.js
https://moleculer.services/
MIT License
6.17k stars 587 forks source link

Hot reload doesn't work correctly when middleware is changed #1302

Open ivan-varga-rs opened 2 months ago

ivan-varga-rs commented 2 months ago

In version 0.15-beta1 when adding a custom middleware hot reload has issues - when middleware is changed all services get re-registered.

Current Behavior

Editing a middleware file re-registers services

Expected Behavior

Services don't multiply :)

Steps to Reproduce

  1. Initialize a project with greeter etc
  2. Add a custom middleware
  3. Call greeter from repl -> get one response from service
  4. Edit middleware file, wait for hot reload
  5. Call greeter from repl -> get two responses from service
  6. Edit again middleware again
  7. Call greeter from repl -> get three responses from service image

Reproduce code snippet

Middleware code:

`module.exports = function ExampleMiddleware(broker) { const enabled = broker.options.hotReload; // or whatever

return {
    name: "HotRebuild",

    localAction(next, action) {
        return function (ctx) {
            console.log("Example example");

            return next(ctx);
        };
    },
};

}; `

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.