Dragonfly v1.14.0
This is our first release for this year. We've mainly focused on stability and performance improvements for this release.
Among other things it includes:
- Tighter memory tracking
- support for ACL keys
- json parser allows '-' in field names.
- Initial support for client tracking feature
- XREADBLOCK fix for blocking case.
What's Changed
- feat: DispatchTracker to replace everything by @dranikpg in #2179
- fix(server): Call PostUpdate from
LPUSH
even for new keys by @chakaz in #2254 - refactor: conn_context and reply_builder refactoring by @BorysTheDev in #2251
- fix(connection): Add WeakRef to replace pubsub wait token by @dranikpg in #2227
- bug(server): remove
CO::READONLY
forQUIT
command. by @theyueli in #2263 - chore: add a test demonstrating on how to pass a dash within json path by @romange in #2267
- bug(hset): make hrandfield reply match Redis by @theyueli in #2266
- feat(Server):support Verbatim strings resp type, using it for CLIENT LIST and INFO commands by @theyueli in #2264
- feat(acl): add storage for acl keys by @kostasrim in #2257
- fix(tiering): fix crash when item was deleted before offloaded by @adiholden in #2225
- feat(server): Return per-type memory breakdown from INFO and /metrics by @chakaz in #2262
- feat(acl): add acl keys to acl setuser command by @kostasrim in #2258
- feat(acl): add acl keys to acl get command by @kostasrim in #2260
- feat(acl): add acl keys to acl list command by @kostasrim in #2261
- feat(acl): add validation for acl keys by @kostasrim in #2272
- feat(acl): add acl keys to acl save/load by @kostasrim in #2273
- feat(server): Support CLIENT TRACKING subcommand (1/2) by @theyueli in #2277
- fix: accept '-' character when parsing json fields by @romange in #2271
- chore: update helio by @romange in #2286
- WIP: Auto
PostUpdate()
by @chakaz in #2268 - fix(tiering): fix tiering crash on setting expire by @adiholden in #2285
- chore: eliminate most of clang++ warnings by @romange in #2288
- feat(acl): add acl keys to acl log command by @kostasrim in #2274
- fix(server): Fix client pause and add test by @dranikpg in #2298
- fix(server): handle no-key-transactional commands in multi/exec by @dranikpg in #2279
- feat(server): Better reporting of per-type memory in
/metrics
by @chakaz in #2303 - feat(server): Implement NUMSUB subcommand by @highpon in #2282
- fix(memory): Add missing fields in connection memory by @chakaz in #2306
- refactor(server): Refactor
AddOrFind()
by @chakaz in #2299 - chore: update helio library by @romange in #2305
- feat(cluster): Cancel blocking commands on cluster update by @dranikpg in #2255
- feat(server): Convert
DbSlice
'sAddOr*
to returnAutoUpdater
by @chakaz in #2290 - feat(server): Add dispatch queue bytes to /metrics by @chakaz in #2310
- feat(replica): add master id on replica output for info replication by @adiholden in #2314
- fix(server): Track all
IoBuf
capacity changes inConnection
by @chakaz in #2309 - refactor(DbSlice): Replace
FindExt()
withFindMutable()
andFindReadOnly
by @chakaz in #2308 - refactor(server): Make
FindFirst()
read-only by @chakaz in #2317 - fix(bug): access invalid prime table iterator by @adiholden in #2300
- feat: add command flow for slot migration process by @BorysTheDev in #2292
- feat(server): Support CLIENT TRACKING subcommand (2/2) by @theyueli in #2280
- feat(server): Better accounting of DenseSet memory by @chakaz in #2325
- feat(server): Account for RObj concrete objects by @chakaz in #2324
- chore: remove support for save_schedule flag by @romange in #2327
- fix(stream): make fix for XREADBLOCK function by @BorysTheDev in #2323
- feat: introduce transaction statistics in the info output by @romange in #2328
- chore: refactor slowlog code, no functionality changes by @romange in #2331
- feat: add keyspace_mutations metric by @romange in #2329
- feat: expose tx_queue_len metric by @romange in #2330
- chore(search): Block list by @dranikpg in #2307
- chore: refactor VersionMonitor into a separate file by @romange in #2326
- refactor(server): Privatize
PreUpdate()
andPostUpdate()
by @chakaz in #2322 - feat: introduce 'debug tx' command and periodic overload logs by @romange in #2333
- feat: track differrent patterns of multi/exec transactions by @romange in #2334
- feat(search): Aggregator, step 1 by @dranikpg in #2332
- feat: expose transaction types via /metrics by @romange in #2336
- feat(server): Add reply count & latency metrics by @chakaz in #2340
- fix: Invalid key lock strings with squashing by @dranikpg in #2341
- bug(server): reject replicaof while loading from snapshot by @adiholden in #2338
- chore: expose the multi length in slowlog by @romange in #2339
- fix(server): Fix reply seconds & better metrics names by @chakaz in #2342
- feat(makefile): Build with full debug symbols and strip in
make package
by @chakaz in #2343 - fix(SimpleLruCounter): Correctly set bumped node's next by @chakaz in #2346
- fix: relax the requirement for parsing successfully container limits by @romange in #2352
- chore: transaction simplification by @romange in #2347
- feat(getslotsinfo): Add memory usage per slot by @chakaz in #2355
- refactor(generic_family): Don't allocate
StringSink
on the heap by @chakaz in #2356 - chore: add "send" state to client list by @romange in #2357
- fix "debug exec" command by @romange in #2354
- feat(tiering): add max file size limit by @adiholden in #2344
- feat: add SLOT-MIGRATION-STATUS cmd for source node by @BorysTheDev in #2349
- fix: unblock transactions only if requirements are correct by @BorysTheDev in #2345
- refactor(rdb): Expose default compression mode without direct flag by @chakaz in #2360
- refactor(serializer): Move DUMP logic into RdbSerializer by @chakaz in #2363
- fix(dash table): bucket count returns the number of buckets by @adiholden in #2359
- test: Adding integration test using Relay benchmark by @theyueli in #2348
- feat: introduce user timeout by @romange in #2361
- chore: add comment for c_rehash in ca_cert_dir flag description by @kostasrim in #2365
- chore: add memory usage test for skiplist encoding by @romange in #2367
- chore: consolidate facade stats under a single struct by @romange in #2368
- fix(test): Fix flaky test by @chakaz in #2372
- feat(server): Add
RestoreSerializer
by @chakaz in #2366 - refactor(SerializerBase): Move some logic from RdbSerializer to SerializerBase by @chakaz in #2373
- fix(server): crash on rename save command on background save by @adiholden in #2375
- refactor(cluster): remove SYNC cmd and do data transferring during FLOW by @BorysTheDev in #2369
- feat(server): allow running memory commands under script by @adiholden in #2382
- feat(lru): add generic lru class by @adiholden in #2351
- feat: add flag to enable round robin sharding in non cluster mode by @kostasrim in #2364
- chore: improvements in dash code by @romange in #2387
- fix(regTests): assertion failure during load in cancel_replication_immediately by @kostasrim in #2371
- chore(transaction): Avoid COORD_SCHED_EXEC ambiguity with multi transactions by @dranikpg in #2392
- fix: ignore unexpected contents for /sys/fs/cgroup/cpu.max by @romange in #2394
- chore: simple traffic logger by @dranikpg in #2378
- feat(cluster): Add
RestoreStreamer
. by @chakaz in #2390 - chore: reduce Makefile for release procedures only by @romange in #2397
- feat: Store and diststore for GeoRadiusByMember by @azuredream in #2350
- chore: server_family cleanups by @romange in #2398
- feat: add os string by @romange in #2401
- bug(server): log evicted keys in journal in PrimeEvictionPolicy. by @theyueli in #2302
- feat(info): add new persistence section fields by @BorysTheDev in #2396
- feat(cluster): Add params to slot migration full sync cut by @chakaz in #2403
- feat: allow checking the compressability of the data by @romange in #2370
- fix: do not return an error in memory-usage command by @romange in #2405
- fix(server): call OnCbFinish after debug populate by @adiholden in #2358
- Fix flush when migrating connection by @dranikpg in #2407
- chore: remove atomic<> from ReplicaInfo::state by @romange in #2409
- chore: fix our release pipeline by @romange in #2408
- feat: introduce segment merge operation by @romange in #2412
- feat(server): Implement
CLIENT KILL
by @chakaz in #2404 - fix: missing error reply to client after AddOrFind throw std::bad_alloc by @kostasrim in #2411
- fix(tx): guard parallel writes to local result by @dranikpg in #2417
- cleanup: Remove unused
PerformDeletion()
overloads by @chakaz in #2418 - feat: allow throttling tiered writes by @romange in #2414
- feat(transaction): Single hop blocking, callback flags by @dranikpg in #2393
- fix(rdb): Remove transaction from pre/post load search index rebuild by @dranikpg in #2419
- fix: access to wrong thread local after command migrates fiber to a different thread by @kostasrim in #2410
- fix: non reset fields in command config resetstat by @kostasrim in #2425
- fix(info): Reply with correct
redis_mode
in `INFO by @chakaz in #2429 - fix: release.sh by @romange in #2432
- server(tiering): load data on read by @adiholden in #2415
- chore(transaction): Clean up scheduling code by @dranikpg in #2422
- chore: add both df tree impelementations to memory usage test by @romange in #2430
- feat(server): Tracking memory usage for client tracking table by @theyueli in #2431
- fix: Invalid memory access by @chakaz in #2435
- fix(replication): Correctly replicate commands even when OOM by @chakaz in #2428
- fix(server): Use custom journal for multi-key
PFMERGE
cmd by @chakaz in #2437 - fix: release pipeline by @romange in #2439
- feat: measure latency of pipelined commands by @romange in #2436
- fix(server): dont allow snapshoting in tiering mode by @adiholden in #2438
- fix: allow lock_on_hashtags with any cluster mode by @romange in #2443
- fix(tiering): update iterator after await throttle by @adiholden in #2440
Huge thanks to all the contributors! ❤️
Full Changelog: v1.13.0...v1.14.0