Skip to content

Latest commit

 

History

History
221 lines (143 loc) · 5.99 KB

CHANGELOG.md

File metadata and controls

221 lines (143 loc) · 5.99 KB

CHANGELOG

v1.7.1

July 2023.

  • Allow floats in commands.

  • Remove unused include-lib eunit.hrl which caused problems for Elixir users.

v1.7.0

July 2022.

  • Replaces error_logger with logger.

  • Turns repeated reconnection errors into log level notice.

  • Parser optimizations.

  • Enables performance tuning of the received packets handling. The socket is set to {active, N} with N = 10 by default. This is configurable by including {active, N} in the socket options or in the TLS options when TLS is used.

    Note that {active, N} with TLS requires OTP 21.3 or later. When using OTP below 21.3 the option needs to be set to {active, true}.

v1.6.0

July 2022.

  • Adds sentinel support.

  • Obfuscates username and password in the state, to prevent them from appearing verbatim in logs and stack traces. They can be provided as 0-ary functions returning the actual secret when applied.

  • Fix a crash that happens when reconnect fails twice with two different reasons. This bug was introduced in v1.5.0.

v1.5.1

May 2022.

  • Solves a bug introduced in v1.5.0 causing the reconnect process to survive if the client is stopped while attempting to reconnect.

  • Drops the spawned process used for reconnecting. Instead, the reconnect attempts are scheduled using timers.

    The option reconnect_sleep now applies to the time between a successful connect and the first reconnect attemt, if the connection is lost just after connecting. However, there is no delay before reconnecting if the connection has been up for at least reconnect_sleep milliseconds.

v1.5.0

May 2022.

  • No delay before the first reconnect attempt.

  • eredis_sub: Automatic re-subscribe on reconnect. Messages on the form {subscribed, Channel, Pid} are sent to the controlling process in this case and need to be acked.

  • eredis_sub: TLS, custom TCP options, AUTH with username, SELECT database and registered name options added.

v1.4.1

June 2021.

  • Restore support for rebar 2.
  • Optimize parser.

v1.4.0

June 2021.

  • Support for named connection processes.
  • Support AUTH with username.

v1.3.3

March 2021.

  • Include correct files in published package on hex.pm.

v1.3.2

February 2021.

  • Official release

v1.3.1-nordix

February 2021.

  • Fix build problems with Mix and other non-Rebar tools

v1.3.0-nordix

December 2020 in the Nordix fork by Björn Svensson and Viktor Söderqvist.

  • TLS support
  • Correction regarding chunked error responses
  • All socket errors, including send and setopts errors, trigger reconnect
  • Explicitly close socket before reconnect, preventing dangling ports
  • Terminate reconnect loop when client terminates (fixes wooga#124)
  • Try all addresses from inet:getaddrs/2 instead of just one when connecting
  • Stray messages don't crash the connection process
  • Improved tests and coverage
  • CI builds using Github Actions
  • Elvis code style and Dialyzer corrections

v1.2.0

2018 in the original wooga/eredis repo.

  • Unix domain socket support (PR wooga#108 by Igor Slepchin)
  • Reset parser state on disconnect (PR wooga#106 by Ivan Baidakou)
  • Non-blocking init AKA async connect (PR wooga#105 by Valery Meleshkin)
  • Some improved tests

v1.1.0

  • Merged a ton of of old and neglected pull requests. Thanks to patient contributors:

    • Emil Falk
    • Evgeny Khramtsov
    • Kevin Wilson
    • Luis Rascão
    • Аверьянов Илья (savonarola on github)
    • ololoru
    • Giacomo Olgeni
  • Removed rebar binary, made everything a bit more rebar3 & mix friendly.

v1.0.8

  • Fixed include directive to work with rebar 2.5.1. Thanks to Feng Hao for the patch.

v1.0.7

  • If an eredis_sub_client needs to reconnect to Redis, the controlling process is now notified with the message {eredis_reconnect_attempt, Pid}. If the reconnection attempt fails, the message is {eredis_reconnect_failed, Pid, Reason}. Thanks to Piotr Nosek for the patch.

  • No more deprecation warnings of the queue type on OTP 17. Thanks to Daniel Kempkens for the patch.

  • Various spec fixes. Thanks to Hernan Rivas Acosta and Anton Kalyaev.

v1.0.6

  • If the connection to Redis is lost, requests in progress will receive {error, tcp_closed} instead of the gen_server:call timing out. Thanks to Seth Falcon for the patch.

v1.0.5

  • Added support for not selecting any specific database. Thanks to Mikl Kurkov for the patch.

v1.0.4

  • Added eredis:q_noreply/2 which sends a fire-and-forget request to Redis. Thanks to Ransom Richardson for the patch.

  • Various type annotation improvements, typo fixes and robustness improvements. Thanks to Michael Gregson, Matthew Conway and Ransom Richardson.

v1.0.3

  • Fixed bug in eredis_sub where when the connection to Redis was lost, the socket would not be set into {active, once} on reconnect. Thanks to georgeye for the patch.

v1.0.2

  • Fixed bug in eredis_sub where the socket was incorrectly set to {active, once} twice. At large volumes of messages, this resulted in too many messages from the socket and we would be unable to keep up. Thanks to pmembrey for reporting.

v1.0

  • Support added for pubsub thanks to Dave Peticolas (jdavisp3). Implemented in eredis_sub and eredis_sub_client is a subscriber that will forward messages from Redis to an Erlang process with flow control. The user can configure to either drop messages or crash the driver if a certain queue size inside the driver is reached.

  • Fixed error handling when eredis starts up and Redis is still loading the dataset into memory.

v0.7.0

  • Support added for pipelining requests, which allows batching multiple requests in a single call to eredis. Thanks to Dave Peticolas (jdavisp3) for the implementation.

v0.6.0

  • Support added for transactions, by Dave Peticolas (jdavisp3) who implemented parsing of nested multibulks.

v0.5.0

  • Configurable reconnect sleep time, by Valentino Volonghi (dialtone)

  • Support for using eredis as a poolboy worker, by Valentino Volonghi (dialtone)