- Fix regression on non-keyword options (such as
:inet6
) introduced in 1.3.4 (#113, thanks @danschultzer!)
- Fix the ability to override default options (and not override hardcoded options) for both TCP and SSL transports (#111, thanks @moogle19!)
- Do not set
:linger
as a default option on either TCP or SSL transports. This was causing oddball node hangs on larger instances (#110, thanks @jonjon & @pojiro!)
- Allow
sni_hosts
orsni_fun
in place ofcert
/certfile
andkey
/keyfile
- Move
handle_info
fallback clause to module compilation hook (#105)
- Fix downstream dialyzer error introduced by #86
- Fix issue with eventual acceptor starvation when handling certain network conditions (#103)
- Add check (and logging) for cases where a Handler implementation does not return the expected state from GenServer handle_* calls (#96, thanks @elfenlaid!)
- Allow protocol upgrades within an active connection (#86, thanks @icehaunter!)
- Improve file list for hex packaging (#98, thanks @patrickjaberg and @wojtekmach!)
- 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