Command line interface
- A number of NPM commands have been renamed. Please run
./node_modules/.bin/mage --help to see the changes and update your package.json file accordingly.
- The deprecated "ident" module has been removed.
- You can now configure a maximum data size for your values. You can configure warning and error thresholds.
Process manager and management
- The old shutdown behavior that shut down only the current process that was
mage.quit() is now
mage.exit(). A new
mage.quit() function shuts down the entire local cluster.
- On startup of the cluster, all workers are now spawned at once (used to be capped at 4-at-a-time).
- Workers now all have and keep (even after they restart) a fixed ID. You can read it from the
- The WorkerManager object has now been exposed via
processManager.getWorkerManager() (API documentation pending).
- You can now configure whether the system should shutdown on uncaught errors via the
server.shutdownOnError boolean in your configuration file(s). This defaults to
MMRP (server to server communication):
MMRP relies on service discovery to keep its list of known relays
up to date. However, under certain conditions, and depending on the
behavior of the service discovery backend in use, you may end up
with two relays sharing the same URI. This, in and of itself, appeared
to be the cause of multiple issues.
You may also end up with case where lingering nodes are cleaned up
after the replacing node has been added; in such cases, a disconnect was
still triggered, thus leaving the MMRP cluster in an inconsistent state
where messages where silently black-holed.
To solve this problem, these changes have been made:
- On relay down, disconnect based on the cluster ID instead of disconnecting based on the uri (we still verify that the URI is consistent)
- On relay up, disconnect any relay with the same URI but a different clusterId
Other changes that have been applied;:
- Add a timestamp to MMRP's service discovery metadata, so that in case of conflicts/overlaps, we pick the most recent addition.
- Discard any nodes during relayUp that serviceDiscovery tells us is a localNode.
- The cluster ID is now generated from a hash of the local IPs on the machine.
- Creation of new projects now uses
npx which ships with
- mage.getClientConfig(appName) has received a 2nd argument: baseUrl (default value is what it used to be).
- Various documentation improvements.
- TypeScript template dependency updates.