mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9.0 KiB
9.0 KiB
Unreleased
0.28.0
- Added
RedisClient::HashRingfor horizontal sharing (compatible withRedis::Distributedfromredis-rb).
0.27.0
- Added
idle_timeoutto revalidate connections that haven't been successfuly used in a long time. Defaults to 30 seconds. - Added
driver_infoconfiguration, to issueCLIENT SETINFOduring connection prelude.
0.26.4
- Further improve
rediss://URLs used with Redis sentinel. Now avoid override explictly setssl:parameter. - Fix compatibility with
redis-rbin sentinel mode.
0.26.3
- Fix
rediss://(ssl) URLs used with Redis sentinel. - Handle Ruby 4.0 connection timeout raising an
IO::Timeoutinstead ofErrno::ETIMEDOUT. - Entirely close the connection on authentication failures.
0.26.2
- Fix compatibility with
connection_poolversion 3+.
0.26.1
- Fix a few corner cases where
RedisClient::Error#final?was innacurate. - hiredis-client: Properly reconnect to the new leader after a sentinel failover.
0.26.0
-
Add
RedisClient::Error#final?and#retriable?to allow middleware to filter out non-final errors. -
Fix precedence of
db: nilinitialization parameter.Redis.new(url: "redis://localhost:6379/3", db: nil).dbBefore:
0After:3
0.25.3
- Fix
hiredis-clientcompilation withclang 21.
0.25.2
- Fix circuit breakers to respect the
error_threshold_timeoutconfig is provided. - Fix circuit breakers to clear errors when closing back.
0.25.1
- Fix Ruby driver TCP keep alive TTL. It was intended to be 120 seconds but was mistakenly set to 15 seconds.
0.25.0
- Fix
hiredis-clientcompilation with GCC 15. - Fix
hiredis-clientfrom a work directory with spaces. - Add
CommandError#code. - Add
RedisClient::NoScriptErrorforEVALSHA.
0.24.0
- Allow
sentinel_passwordto be provided as aProc. - Ensure
Config#inspectandConfig#to_sdo not display stored passwords.
0.23.2
- Fix retry logic not to attempt to retry on an open circuit breaker. Fix #227.
0.23.1
- Fix a potential crash in
hiredis-clientwhen using subcriptions (next_event). See #221.
0.23.0
- Allow
passwordto be a callable. Makes it easy to implement short lived password authentication strategies. - Fix a thread safety issue in
hiredis-clientwhen using thepubsubclient concurrently.
0.22.2
- Fix the sentinel client to properly extend timeout for blocking commands.
- Fix IPv6 support in
RedisClient::Config#server_url.
0.22.1
- Fix
ProtocolError: Unknown sigil typeerrors when using SSL connection. See #190.
0.22.0
- Made various performance optimizations to the Ruby driver. See #184.
- Always assume UTF-8 encoding instead of relying on
Encoding.default_external. - Add
exceptionflag inpipelinedallowing failed commands to be returned in the result array when set tofalse. See #187.
0.21.1
- Handle unresolved Sentinel master/replica error when displaying server URL in exceptions. See #182.
0.21.0
- Include redis server URL in most error messages. See #178.
- Close Redis Sentinel connection after resolving role. See #176.
0.20.0
- Accept
unix://schemes as well as simple paths in theurl:config parameter. #170. - Make basic usage Ractor compatible.
0.19.1
- Fixed a bug in
hiredis-clientthat could cause a crash if interrupted byTimeout.timeoutor otherThread#raisebased mecanism. - Fixed a GC bug that could cause crashes in
hiredis-client.
0.19.0
- Revalidate connection in
RedisClient#connected? - Eagerly fail if
db:isn't an Integer. #151.
0.18.0
- Expose more connection details such as
host,db, etc onRedisClient.
0.17.1
- Add support for
NaNin RESP3 protocol doubles. This was initially missing from the spec and added about a year ago.
0.17.0
- Adds
sentinel_usernameandsentinel_passwordoptions forRedisClient#sentinel
0.16.0
- Add
RedisClient#disable_reconnection. - Reverted the special discard of connection. A regular
close(2)should be enough.
0.15.0
- Discard sockets rather than explictly close them when a fork is detected. #126.
- Allow to configure sentinel client via url. #117.
- Fix sentinel to preverse the auth/password when refreshing the sentinel list. #107.
- Added
RedisClient#measure_round_trip_delaymethod. #113.
0.14.1
- Include the timeout value in TimeoutError messages.
- Fix connection keep-alive on FreeBSD. #102.
0.14.0
- Implement Sentinels list automatic refresh.
- hiredis binding now implement GC compaction and write barriers.
- hiredis binding now properly release the GVL around
connect(2). - hiredis the client memory is now re-used on reconnection when possible to reduce allocation churn.
0.13.0
- Enable TCP keepalive on redis sockets. It sends a keep alive probe every 15 seconds for 2 minutes. #94.
0.12.2
- Cache calls to
Process.pidon Ruby 3.1+. #91.
0.12.1
- Improve compatibility with
uri 0.12.0(default in Ruby 3.2.0).
0.12.0
- hiredis: fix a compilation issue on macOS and Ruby 3.2.0. See: #79
- Close connection on MASTERDOWN errors. Similar to READONLY.
- Add a
circuit_breakerconfiguration option for cache servers and other disposable Redis servers. See #55 / #70
0.11.2
- Close connection on READONLY errors. Fix: #64
- Handle Redis 6+ servers with a missing HELLO command. See: #67
- Validate
urlparameters a bit more strictly. Fix #61
0.11.1
- hiredis: Workaround a compilation bug with Xcode 14.0. Fix: #58
- Accept
URIinstances asuriparameter.
0.11.0
- hiredis: do not eagerly close the connection on read timeout, let the caller decide if a timeout is final.
- Add
Config#customto store configuration metadata. It can be used for per server middleware configuration.
0.10.0
- Added instance scoped middlewares. See: #53
- Allow subclasses of accepted types as command arguments. Fix: #51
- Improve hiredis driver error messages.
0.9.0
- Automatically reconnect if the process was forked.
0.8.1
- Make the client resilient to
Timeout.timeoutorThread#killuse (it still is very much discouraged to use either). Use of async interrupts could cause responses to be interleaved. - hiredis: handle commands returning a top-level
false(no command does this today, but some extensions might). - Workaround a bug in Ruby 2.6 causing a crash if the
debuggem is enabled whenredis-clientis being required. Fix: #48
0.8.0
- Add a
connectinterface to the instrumentation API.
0.7.4
- Properly parse script errors on pre 7.0 redis server.
0.7.3
- Fix a bug in
urlparsing conflicting with thepathoption.
0.7.2
- Raise a distinct
RedisClient::OutOfMemoryError, for RedisOOMerrors. - Fix the instrumentation API to be called even for authentication commands.
- Fix
url:configuration to accept a trailing slash.
0.7.1
- Fix
#pubsubbeing called when reconnection is disabled (redis-rb compatibility fix).
0.7.0
- Sentinel config now accept a list of URLs:
RedisClient.sentinel(sentinels: %w(redis://example.com:7000 redis://example.com:7001 ..))
0.6.2
- Fix sentinel to not connected to s_down or o_down replicas.
0.6.1
- Fix
REDIS_REPLY_SETparsing inhiredis.
0.6.0
- Added
protocol: 2options to talk with Redis 5 and older servers. - Added
_vversions ofcallmethods to make it easier to pass commands as arrays without splating. - Fix calling
blocking_callwith a block in a pipeline. blocking_callnow raiseReadTimeoutErrorif the command didn't complete in time.- Fix
blocking_callto not respectreconnect_attemptson timeout. - Stop parsing RESP3 sets as Ruby Set instances.
- Fix
SystemStackErrorwhen parsing very large hashes. Fix: #30 hiredisnow more properly release the GVL when doing IOs.
0.5.1
- Fix a regression in the
scanfamilly of methods, they would raise withArgumentError: can't issue an empty redis command. Fix: #24
0.5.0
- Fix handling of connection URLs with empty passwords (
redis://:pass@example.com). - Handle URLs with IPv6 hosts.
- Add
RedisClient::Config#server_urlas a quick way to identify which server the client is pointing to. - Add
CommandError#commandto expose the command that caused the error. - Raise a more explicit error when connecting to older redises without RESP3 support (5.0 and older).
- Properly reject empty commands early.
0.4.0
- The
hiredisdriver have been moved to thehiredis-clientgem.
0.3.0
hiredisis now the default driver when available.- Add
RedisClient.default_driver=. #callnow takes an optional block to cast the return value.- Treat
#callkeyword arguments as Redis flags. - Fix
RedisClient#multireturning some errors as values instead of raising them.
0.2.1
- Use a more robust way to detect the current compiler.
0.2.0
- Added
RedisClient.registeras a public instrumentation API. - Fix
read_timeout=andwrite_timeout=to apply even when the client or pool is already connected. - Properly convert DNS resolution errors into
RedisClient::ConnectionError. Previously it would raiseSocketError
0.1.0
- Initial Release