This may skip some little bug fixes.
- When using
ipc.register
, the message is now the actual message, not an object with the message as "msg" - Fetching members now returns only cached members. Use Eris'
client.getRESTGuildMember
to fetch a member which is not cached options.guildsPerShard
now includes an"auto"
option which is the default. This just uses whatever shard count Discord recommends.
- Added a central request handler. Disabled by default and may be enabled with the
useCentralRequestHandler
option being set to true. - Added ability to change resharding parameters
- Improved logging
- Renamed key for shards array to
shards
fromshardStats
in stats - Allows for the creation of services after the initial launch of the sharding manager
- Added cluster commands
- Added ability to send all clusters a command
- Added cluster eval
- Added ability to send all clusters an eval
- Added services eval
- Added timeout for all command and eval functions
- Added concurrency
- Added option to allow services to start simultaneously
- Added option to load code immediately
- Added option to disable the default function of replacing the console methods in workers
- Added some new stuff to stats (ipc latency, request handler latencyRef, members, and timestamp for when stats were collected)
- Ability to force eris-fleet to collect fresh stats
- Ability to get worker collections
- Added IPC class to Admiral
- Renamed
ipc.admiralBroadcast
toipc.sendToAdmiral
- Added more events to Admiral (e.g. clusters and shards becoming ready)
- Added broadcasting of Admiral events (and option to disable)
- Added maximum sequential restarts (default: 5)
- IPC commands (e.g. restarting clusters) now returns a promise which resolves when complete
- The bot and service classes can now be used without a path by passing the class in
options.BotWorker
andServiceWorker
in your array of services (examples in/test
) - Added a central storage map
- Added support for extended eris class
- Cluster and service control are now accessible via the "Admiral" class
- Fix error on ipc service command when a non-object is the return value
- Updated ipc.fetchMember to use Eris's guild.fetchMembers function. This should fix it only returning cached members
- Updated Eris from 0.14.0 to 0.15.0
Fixed issue 60 where Discord snowflake IDs were being treated as numbers. They are now treated as strings.
- Added resharding
- Fixed some issues with the IPC
- Added an optional starting status
- Added some documentation in README.md
- Fetch now returns null if there is no value found
- Fetch now only checks clusters which are connected and will get the data from clusters when they launch unless the timeout has passed
- Now uses eslint to make code look sharp
- Fixed issue where logging "prefix" would not show up during a soft restart
- Added fetch ipc commands to services
- Added more detailed stats
- Added object logging (with the source, timestamp, and the message in an object)
- Fixed bug where workers would never connect due to the connect command being sent before they were launched.
- Fixed stats not starting as soon as all the clusters are ready
- Fixed Stats.shardCount always being 0
- Fixed stats RAM not being in MB
- Added shutdowns and restarts. They are as follows:
Function | Description |
---|---|
ipc.shutdownCluster(Number, Boolean) |
Shuts down a cluster down based on the cluster's ID |
ipc.shutdownService(String, Boolean) |
Shuts a service down based on the service's name |
ipc.restartCluster(Number, Boolean) |
Restarts a cluster based on the cluster's ID |
ipc.restartService(String, Boolean) |
Restarts a cluster based on the service's name |
ipc.restartAllClusters(Boolean) |
Restarts all clusters |
ipc.restartAllServices(Boolean) |
Restarts all services |
ipc.totalShutdown(Boolean) |
Shuts down all clusters and services gracefully and exits the process when complete |
- Added graceful and hard shutdowns of clusters and services (Boolean above should be true for a hard shutdown)
- Added soft restarts of clusters and services which limits downtime by only killing the old worker after the new one is ready (Boolean above should be true for a hard restart with downtime)
- Added warn option to logging
- Added logging customization (see README for more details)
- Added less logging option (see README for more details)
- Added shard disconnection errors being logged
- Added error reporting for an error occurring while starting a service
this.serviceStartingError(Error)
- Moved
this.restartCluster(Number)
to the IPC, so it is nowthis.ipc.restartCluster(Number)
- Added fetch functionality to services