- Add
supervisor_options
option to specify top-level supervisor options (#97)
- Add support for
silent_terminate_on_error
option to run quietly in case of error (#92)
- Do not consider
ECONNABORTED
errors to be exceptional at socket start time (#72, thanks @dch!)
- Fix file handle leak when calling
c:Socket.sendfile
(#78)
- Add support for suspending the acceptance of new requests while continuing to process existing ones (#70)
- Drop Elixir 1.12 as a supported target (it should continue to work, but is no longer covered by CI)
- BREAKING CHANGE Refactor socket informational functions to mirror the
underlying
:gen_tcp
and:ssl
APIs (#76, thanks @asakura!). Details:- Add
ThousandIsland.Socket.sockname/1
- Add
ThousandIsland.Socket.peername/1
- Add
ThousandIsland.Socket.peercert/1
- Remove
ThousandIsland.Socket.local_info/1
- Remove
ThousandIsland.Socket.peer_info/1
- Add
- Refactor telemetry (#65 thanks @asakura!)
- Improve typespecs (thanks @asakura!)
- Clean up docs & various internal cleanups (thanks @asakura!)
- Total overhaul of typespecs throughout the library (thanks @asakura!)
- Internal refactor of several ancillary functions (thanks @asakura!)
- Doc improvements
- None
- Thousand Island now sets its
id
field in its spec to be{ThousandIsland, ref()}
num_connections
defaults to 16384 connections per acceptor
- Doc improvements
- Added
num_connections
parameter to specify the max number of concurrent connections allowed per acceptor - Added
max_connections_retry_count
andmax_connections_retry_wait
parameters to configure how Thousand Island behaves when max connections are reached - Added
[:thousand_island, :acceptor, :spawn_error]
telemetry event to track when max connections are reached - Added max connection logging as part of the
ThousandIsland.Logger.attach_logger(:error)
level
- Refactored connection startup logic to move some burden from acceptor to connection process
- Handshake errors no longer loudly crash the handler process
handle_error/3
documentation updated to explicitly mention handshake errors
- Modified telemetry event payloads to match the conventions espoused by
:telemetry.span/3
- Added
shutdown_timeout
configuration parameter to configure how long to wait for existing connections to shutdown before forcibly killing them at shutdown
- Default value for
num_acceptors
is now 100 - Default value for
read_timeout
is now 60000 ms
- Added missing documentation for read_timeout configuration parameter
- Fixes a race condition at application shutdown that caused spurious acceptor crashes to litter the logs (#44). Thanks @danschultzer!
- Expose ThousandIsland.Telemetry.t() as a transparent type
- Pass telemetry errors in metadata rather than metrics
- Allow explicit passing of start times into telemetry spans
- (Re)introduce telemetry support as specified in the
ThousandIsland.Telemetry
module
- Add
ThousandIsland.connection_pids/1
to enumerate connection processes
- Narrow internal pattern matches to enable Handlers to use their own socket calls (#39)
- Fix documentation typos
- Do not emit GenServer crash logs in connection timeout situations
- Doc updates