Skip to content

v0.50.0

Choose a tag to compare

@tillkruss tillkruss released this 05 Sep 20:35
· 10 commits to main since this release
Immutable release. Only release title and notes can be modified.

Added

  • Added EL10 builds
  • Added HIMPORT command
  • Added Relay\Cluster::MSETEX
  • Added Relay\Cluster::FCALL(_RO)
  • Added Relay\Cluster::OPT_NODE_READ_TIMEOUT for faster node failover
  • Added Relay\Cluster::OPT_MULTIKEY_REORDERING
  • Added Relay\Table fixed-resolution/retention metric series
  • Added info log level

Changed

  • Switched to 8.6.0beta2 API for PHP 8.6 builds
  • Use configurable exponential backoff with jitter for unhealthy cluster node health checks
  • Use a hardcoded upper bound for cluster redirects before giving up
  • Flush all existing databases when calling flushMemory(), not just active ones
  • Made SMISMEMBER, BITPOS and TYPE cacheable
  • Made ZRANK, ZREVRANK, ZCOUNT, ZSCORE and ZMSCORE cacheable
  • Made Cluster reject UNWATCH in a MULTI transaction in PhpRedis compatibility mode
  • Switched to incremental flushing of in-memory caches
  • Over 40 additional internal improvements

Fixed

  • Fixed a few ZSET caching edge cases
  • Fixed [B]LMOVEM compatibility with PhpRedis
  • Fixed a possible memory leak if a worker is terminated while in an EBR critical section
  • Fixed command arity as reported by Redis
  • Fixed a crash after manually disabling client tracking
  • Fixed cluster cross-slot command aggregation
  • Fixed an erroneous relayLinkRelease based on hiredis reader state
  • Fixed a signal sequencing issue that could cause an infinite loop
  • Fixed a small SIGIO race when arming file descriptors to receive signals
  • Fixed boolean INI parsing so it will work for PHP 7.4 - 8.6
  • Fixed @return docblock of Relay\Table::fullscan()
  • Fixed CLUSTER SHARDS parsing logic to be more robust and correct
  • Fixed possible crashes in VSETATTR
  • Fixed session max_execution_time handling to match PhpRedis
  • Fixed Relay\Cluster returning a bare false without setting the last error or throwing
  • Fixed our WRONGTYPE message so it matches the server
  • Fixed raw BITPOS and GETBIT reporting nothing when Relay rejects the arguments itself
  • Fixed Relay\Cluster::rawCommand() not validating command arity
  • Fixed SMISMEMBER return type when responding from cache
  • Fixed leaving replicas in MULTI state after a DISCARD
  • Fixed Relay\Cluster transaction bookkeeping for broadcast commands
  • Fixed lazy reconnect and node introspection after Relay\Cluster::close()
  • Fixed HGETDEL and HGETEX invalidating the wrong cache entry
  • Fixed crashes from malformed raw MSET(EX|NX) and HGET(EX|DEL) arguments
  • Fixed Relay\Cluster::rawCommand() crashing for commands without a dedicated command-table entry
  • Fixed event listener handling for queued flush events, dropped connections, and callbacks that modify listener registrations
  • Fixed Relay\Cluster::getOption(OPT_ADAPTIVE_CACHE) panicking
  • Fixed Relay\Relay::option() crashing when explicitly passed null
  • Fixed options argument validation for GEORADIUS(BYMEMBER) and GEOSEARCH(STORE)
  • Fixed assertion involving SELECT with wildly wrong dbs in a transaction
  • Fixed several edge cases and issues in Relay\Cluster::fullscan()
  • Fixed handling a failed DISCARD during a transaction in Relay\Cluster
  • Fixed crash when Relay\Cluster connects to an incomplete/initializing cluster
  • Fixed a null pointer dereference when executing a transaction against a cluster that is still spinning up
  • Ensure our signal handlers only run on the main PHP lifecycle thread
  • Fixed a memory leak in CROSSSLOT errors
  • Fixed memory leaks in Relay\Cluster subscription callbacks and repeated allow/ignore pattern updates