Releases: dragonflydb/dragonfly
v1.38.0
Dragonfly v1.38.0
This release is a major one with lots of significant improvements and stability fixes.
It may behave differently due to changes in its core data structures.
We worked hard to avoid any regressions so please let us know if you observe degradation around item expiry behavior, replication or backups.
Important stability fixes and changes:
Top-K command family (TOPK.*): RedisBloom-compatible heavy-hitter sketch with
RDB persistence. (#6920, #6931, #6932, #6950)
Count-Min Sketch family (CMS.*): Full CMS with INITBYDIM, INITBYPROB,
INCRBY, QUERY, MERGE, INFO. RDB persistence. (#6867, #6888, #6896, #6897)
~26% memory reduction for TTL workloads: Expire table eliminated, expiry embedded
in CompactKey via SDS_TTL_TAG. 10M keys: 900 MB -> 665 MB. (#6923, #6925, #6933)
HTTL command: Returns remaining TTL for specific hash fields. (#6879)
VECTOR_RANGE search: Radius-based vector similarity queries in FT.SEARCH and
FT.AGGREGATE for both FLAT and HNSW indexes, with optional YIELD_DISTANCE_AS.
(#6880, #6898, #6938)
FT.AGGREGATE: FILTER, APPLY, DIALECT, KNN: Full expression-based filtering,
computed fields, dialect selection, and KNN steps in the aggregation pipeline.
(#6968, #6982, #7066)
Smarter KNN prefilter: Falls back to brute-force scan when prefilter result set
is small. (#6730)
Replica expired-key deletion: Replicas proactively delete expired keys on reads.
--replica_delete_expired (default true). (#6985)
New Prometheus metrics: Pipeline latency histogram (dragonfly_pipeline_latency_seconds),
TLS handshake counter (tls_handshakes_total), stream access patterns
(stream_accesses_total), pipeline blocking counter. (#6688, #7015, #6767, #6685)
EKS Pod Identity for S3: AWS credential chain supports EKS Pod Identity and ECS
task roles. (#6917)
Early TLS filter and TCP_DEFER_ACCEPT: Drops zombie connections at OS level before
allocating fiber/OpenSSL state. (#6857)
Memcached io_loop_v2 enabled by default*: Async I/O with deferred replies. (#6700)
Incremental SBF replication: Scalable Bloom Filter chunks flushed incrementally,
bounding peak memory. (#7034)
What's Changed
- chore(server): Extend script slowlog stats by @dranikpg in #6656
- test(ci): exclude flaky BullMQ tests by @vyavdoshenko in #6673
- feat(fuzz): Add LLM-guided PR fuzzing with targeted seed generation by @vyavdoshenko in #6666
- refactor(journal): replace Journal class with free functions by @romange in #6672
- fix(search): Fix HNSW index creation failure, logs, drop by @dranikpg in #6662
- refactor: clean includes by @BorysTheDev in #6679
- chore: remove facade/acl_commands.h by @kostasrim in #6682
- fix: improve fuzz-pr crash detection and artifact packaging by @vyavdoshenko in #6686
- feat(tiering): Use Future::IsResolved to check if delayed entry is resolved by @mkaruza in #6665
- test: mark heavy skipped tests as large instead of skip by @vyavdoshenko in #6675
- feat: add pipeline latency histogram and Prometheus SUMMARY export by @romange in #6688
- refactor: move methods from OAHEntry to OAHSet by @BorysTheDev in #6692
- chore: remove duplicate info reported by "memory stats" by @romange in #6696
- server: Collect stats for why defragmentation was skipped by @abhijat in #6680
- fix: shrink memory usage for journaling items by @romange in #6695
- ci: exclude flaky BullMQ getWorkers shared connection test by @vyavdoshenko in #6697
- fix(tiering): Track all keys mutation callback for cluster migration by @mkaruza in #6691
- refactor: remove static fields from rdb_load by @BorysTheDev in #6684
- fix(tiering): Increase write depth by @dranikpg in #6705
- refactor(mc): async MGET/GAT by @glevkovich in #6674
- chore(ci): Replace direct push with PR for helm chart updates by @vyavdoshenko in #6717
- fix: validate stream command arguments to prevent crashes by @vyavdoshenko in #6718
- fix(fuzz): skip missing RECORD files in replay_crash.py by @vyavdoshenko in #6719
- chore: Skip KNN search if prefilter is empty by @mkaruza in #6720
- perf(seeder): batch STRING hashing with MGET to reduce tiering latency by @romange in #6721
- test: add test for replication HNSW index by @BorysTheDev in #6722
- skip tiering tests by @dranikpg in #6723
- ci: migrate ioloop-v2-regtests to OIDC for AWS auth by @AdiCloudbit-DevOps in #6725
- test: skip test_hnsw_search_replication_with_network_disruptions by @BorysTheDev in #6729
- feat: add RM command skeleton (phase 1) by @romange in #6731
- chore: add pipeline_blocking_commands_total counter by @kostasrim in #6685
- feat(set_family): Reserve vector on OpInter in advance by @abhijat in #6736
- ci: add memcache fuzzing to regular campaign by @vyavdoshenko in #6735
- test: consolidate slow marker into large by @vyavdoshenko in #6734
- feat(dash): segment merging by @kostasrim in #6676
- server: move blob loading logic into respective family classes by @romange in #6713
- feat(facade): enable experimental_io_loop_v2 by default and clean CI by @glevkovich in #6700
- core: Fix page usage accounting by @abhijat in #6737
- chore: do not reconcile slots after dfly takeover if cluster config updated by @kostasrim in #6728
- fix: orphan streams on error in OpCreate and OpAdd by @kostasrim in #6744
- fix: crash in SetFullJson when overwriting string key with JSON by @vyavdoshenko in #6750
- fix(server): flush replies on encountering blocking command in pipeline by @abhijat in #6743
- server: Add summary view to memory arena by @abhijat in #6677
- chore: stream family boilerplate to a function by @kostasrim in #6748
- fix: prevent SIGFPE in DEBUG POPULATE when val_size is 0 by @vyavdoshenko in #6754
- feat: implement RM scan-and-delete logic (phase 2) by @romange in #6732
- refactor: move stream functions from t_stream.c to their call sites by @romange in #6703
- ci: add optional memcache smoke fuzzing to PR workflow by @vyavdoshenko in #6758
- feat(server): Get and set byte at index position in string object by @mkaruza in #6752
- refactor: move stream alloc/free into compact_object and fix rdb_load cleanup by @romange in #6759
- fix: return WOULD_BLOCK for STATS/VERSION in MC pipeline by @vyavdoshenko in #6762
- ci: extract BullMQ skipped tests into a documented file by @vyavdoshenko in #6756
- chore: Retrieve single byte for GETBIT command by @mkaruza in #6757
- fix(bitops): Fetch only single byte for SETBIT operation by @mkaruza in #6745
- fix: prevent empty hash on HINCRBYFLOAT with NaN/Inf by @vyavdoshenko in #6772
- chore: revert our custom check-fails in mimalloc by @romange in #6774
- json: Add stats for interned string pool by @abhijat in #6701
- feat(server): add stream access pattern metrics by @romange in #6767
- feat: add deffered queue for hnsw write ops by @BorysTheDev in #6746
- feat(search): Use filtered search when prefilter result size is small by @mkaruza in #6730
- chore: upload coverage by @kostasrim in #6747
- tests: Protect connections with mutex by @abhijat in #6777
- fix(search): use 2D vectors in HnswSubsetKnnTest/CompareWithFilteredKnn f or COS...
v1.37.2
This is a patch release
What's Changed
- fix(json): JSON.NUMINCRBY negative result overflow (#6981)
- fix(streams): crash for XREAD BLOCK with replication (#6980)
- fix(bitops): Improve performance of SETBIT operation (#6745)
Full Changelog: v1.37.0...v1.37.2
v1.37.0
Dragonfly v1.37.0
Important stability fixes and changes:
- Significant memory reduction around json documents #6511
- Vector search memory usage is 40% less with hash map documents: #6436 #6437
- Support of
SORTcommand - includingBYandGEToptions. - Several bug fixes around streams: #6506 #6492 #6532
- Added support for DIGEST and DELEX commands: #6328
What's Changed
- feat(search): Use stateless allocator for strings by @abhijat in #6285
- chore: Refactor squashed command execution to avoid stub ConnectionContext by @romange in #6312
- refactor: add checks to investigate the race condition in slots migration by @BorysTheDev in #6331
- fix(helm): correct security context field placement and disable strict schema validation by @Copilot in #6213
- fix(tests): Use promtool for metrics sanity check by @abhijat in #6318
- fix(search): support parenthesized star in FT.SEARCH queries by @vyavdoshenko in #6343
- fix: helm push issue by @romange in #6339
- chore: move ReplyBuilder calls in generic_family.cc to new API by @romange in #6305
- Add checks for expiration inconsistency by @BorysTheDev in #6346
- feat(hscan): add NOVALUES flag to omit values by @glevkovich in #6325
- chore: refactor SortGeneric function by @romange in #6347
- feat: add pagination to cross-shard search by @BorysTheDev in #6352
- refactor: address comments by @BorysTheDev in #6350
- fix(set): SPOP random member even if it contains null bytes by @mkaruza in #6361
- fix(server): Set error type when returning -NOGROUP error by @mkaruza in #6358
- chore: improvements around sorting algorithm by @romange in #6360
- facade: adopt RespSrvParser in server connections by @romange in #6356
- feat(server): Support squashing of global eval with single shard by @dranikpg in #6321
- fix: memory calculation for OAHSet by @BorysTheDev in #6359
- fix: regtest failure by @romange in #6367
- test: use hiredis for reply_builder_test by @BorysTheDev in #6362
- ci: use OIDC for AWS authentication instead of access keys by @AdiCloudbit-DevOps in #6158
- refactor: improve OAHSet::Find() performance by @BorysTheDev in #6373
- chore(server): Simplify InvokeCmd by @dranikpg in #6363
- chore(cmake): Update jsoncons to 1.5.0 by @abhijat in #6349
- chore: encapsulate tx object within CommandContext by @romange in #6384
- fix(server): support "sort by" option by @romange in #6370
- refactor(acl): from facade to server by @kostasrim in #6340
- chore: add copilot env setup steps by @romange in #6387
- fix(ci): add AWS env fallbacks for OIDC in composite actions by @AdiCloudbit-DevOps in #6385
- chore: move CommandContext cid to private scope by @romange in #6386
- chore(server): Updates around DispatchMC/DispatchCommand by @dranikpg in #6351
- fix: compatibility with cpp20 by @BorysTheDev in #6395
- chore: Update CommandContext c'tor by @romange in #6393
- feat(server): Add GET option support to SORT command by @romange in #6388
- chore: update AGENTS.md by @romange in #6392
- Switch to C++20 by @Copilot in #6379
- chore: Clean up DispatchCommand a bit more. by @romange in #6397
- fix(core): Remove direct access to RObjWrapper by @dranikpg in #6140
- fix: copilot-setup-steps.yml by @romange in #6405
- Implement DIGEST and DELEX commands (Redis 8.4.0 compatible) by @Copilot in #6328
- chore: tx clean-ups by @romange in #6407
- chore: remove quicklist from the codebase by @romange in #6415
- chore(core): CompactObj is_key field, separate encoding by @dranikpg in #6253
- chore: wrap list operations within ListWrapper by @romange in #6417
- fix: s3 snapshot saving by @BorysTheDev in #6400
- chore(facade): Refactor IoLoop to new interface by @dranikpg in #6383
- chore: clarify IterateList interface by @romange in #6425
- chore: show slave_repl_offset on replicas when master link is down by @kostasrim in #6353
- fix: reloading vector index by @BorysTheDev in #6422
- chore(search): Simplify SFINAE usage with concepts in defragment-map by @abhijat in #6428
- fix: static assert on macos by @vyavdoshenko in #6430
- docs: add async-tiering.md by @romange in #6427
- chore(core): Move expire flag to key by @dranikpg in #6420
- chore: add ListPack class that wraps c listpack by @romange in #6432
- chore: factor out ContainerEntry and QList::Entry into a common class by @romange in #6426
- refactor: InvokeCmd by @kostasrim in #6399
- fix: partial sync from same source master with different shard sizes by @kostasrim in #6381
- feat: add hnsw metadata into index serialization by @BorysTheDev in #6429
- fix: QList::iterator semantics by @romange in #6439
- tests: Check if tx is initialized before accessing its state by @abhijat in #6446
- chore: support listpack with lists by @romange in #6424
- Use async tx for ioloopv2/set by @dranikpg in #6433
- feat(server): add protected mode to bind localhost when no password is set by @rafaelperoco in #6442
- tests: Replace pytest with gh workflow by @abhijat in #6453
- CI: remove faulty condition by @abhijat in #6458
- chore(server): Try to simplify build by @dranikpg in #6455
- chore: create smalls lists as listpacks by @romange in #6450
- chore(tiering): polish type system for better clarity and safety by @romange in #6465
- chore: unify auth errors under the same type by @romange in #6449
- fix(server): ignore SIGHUP to prevent termination on session closing by @boomballa in #6463
- chore(tiering): refactor stashing to determine serialization upfront by @romange in #6470
- Add index serialization by @BorysTheDev in #6461
- docs: add code review instructions for Copilot agents by @romange in #6471
- feat(hnswlib): Support using pointer to vector data by @mkaruza in #6436
- chore(tiering): refactor Read/Modify to free functions by @romange in #6469
- design: stateful async handlers by @dranikpg in #6462
- chore: better naming for compression functions in qlist.cc by @romange in #6474
- feat(search): Build vector index by using data pointer for HSET objects by @mkaruza in #6437
- refactor(facade): decouple pipeline traffic from administrative command queue (phase 1) by @glevkovich in #6423
- chore: bump helio to fix TLS socket crash by @glevkovich in #6480
- feat(search): Omit key defrag is vector data is used as reference by @mkaruza in https://github.com/dr...
v1.36.0
Dragonfly v1.36.0
Important stability fixes and changes:
- Support Global Vector index #6103
- Support unicode tags in #6127
- django-cacheops compatibility fixes: #6123 #6129
- better memory defragmentation for json objects: #6240 #6276
What's Changed
- actions: Add a volume mount to container by @abhijat in #6048
- chore: remove RecvProvided from dragonfly connection by @kostasrim in #6050
- fix(rdb_load): Store streamed items per rdb lodaer by @dranikpg in #6049
- fix(search): Result set cutoff by @dranikpg in #5906
- fix: remove duplicate expired/evicted metric header by @romange in #6058
- fix(test): ssl test to work with pytest 3.12 by @romange in #6059
- feat(hset): Load tiered values in read-only by @dranikpg in #5996
- chore(tiering): Add throttling metric + more tests by @dranikpg in #6040
- fix: macOS build by @vyavdoshenko in #6065
- server: Parse JSON on destination shard by @abhijat in #6061
- feat: add CSS option for FT.CREATE by @BorysTheDev in #6057
- chore(facade): Handle Socket::Recv() returning 0 explicitly by @romange in #6066
- fix: Remove index docs on eviction and cluster migration by @mkaruza in #6062
- fix(tests): Disable huge val streaming by @dranikpg in #6074
- fix(replication): Add detailed error message for REPLTAKEOVER failures by @vyavdoshenko in #6071
- fix(tiering): Fix upload strategy by @dranikpg in #6067
- fix(replication): use correct replica pointer in takeover catchup loop by @vyavdoshenko in #6068
- fix(replication): add socket timeout to REPLTAKEOVER command by @vyavdoshenko in #6070
- fix(takeover): pick correct replica to reconcile slots by @kostasrim in #6034
- test: fix flaky test_takeover_bug_wrong_replica_checked_in_logs by @vyavdoshenko in #6075
- feat(helm): adds common label support to the helm chart by @gaganhr94 in #6042
- Revert "feat(helm): adds common label support to the helm chart (#6042)" by @romange in #6077
- fix(server): Move LpGetView to core target by @dranikpg in #6076
- feat: adds common label support to the helm chart by @gaganhr94 in #6080
- docs(build-from-source): update LTO instructions to use USE_MOLD option by @glevkovich in #6081
- Update build-from-source.md by @dranikpg in #6087
- feat: add ftsearch result parsing for css by @BorysTheDev in #6090
- chore: pull the latest helio by @romange in #6096
- fix: suppress BUSYGROUP warning logs by @vyavdoshenko in #6095
- feat(tiering): Basic metrics by @dranikpg in #6086
- chore: change the resolution of reply latency to measurement to ns by @romange in #6092
- fix: test_reply_count regression by @romange in #6099
- chore(hooks): add commit-msg hook to enforce Signed-off-by line in commit messages by @glevkovich in #6082
- fix(server): handle INFO command with multiple sections correctly by @glevkovich in #6093
- chore: pull helio by @romange in #6100
- fix: smashing stack on Huffman test by @vyavdoshenko in #6102
- tools: Add scripts and supporting files to generate os packge repo by @abhijat in #5923
- chore(deps): bump the actions group across 1 directory with 4 updates by @dependabot[bot] in #6107
- chore(core): Refactoring to prepare for using stateless allocator by @abhijat in #6111
- tools: Download ARM deb package, disable fedora ARM test by @abhijat in #6110
- fix: replica of self by @kostasrim in #6097
- chore: relax pytest requirements by @romange in #6113
- feat(JSON): Use stateless allocator by @abhijat in #6060
- fix(dfly_bench): fix parsing for memcache by @romange in #6116
- chore: update vector-bench README by @romange in #6117
- chore: add mi_malloc memory test by @romange in #6118
- docs: add copilot-instructions.md for AI coding agent onboarding by @Copilot in #6112
- fix: Handle django-cache script so it could run in dragonfly by @romange in #6123
- chore: replace PMR_NS with StatelessAllocator in dense_set by @romange in #6121
- chore: implement background self-identification of huffman encoding by @romange in #6106
- chore: gcc14 for fedora 30 by @vyavdoshenko in #6124
- chore: expose more information when takeover fails on master. by @romange in #6130
- feat(search): Global HNSW vector index by @mkaruza in #6103
- fix(search): Support unicode for tags by @dranikpg in #6127
- chore: use our own vector for hnsw distance computation by @romange in #6132
- chore: more fixes for django-cacheops compatibility by @romange in #6129
- chore: refactor hnsw index into separate files by @romange in #6134
- chore: move HierarchicalNSW class to our codebase by @romange in #6136
- feat(tiering): Serialize hashes by @dranikpg in #6015
- fix(stream): Allow XINFO in script by @dranikpg in #6128
- fix(core): Remove async delete flag by @dranikpg in #6139
- feat: implement DenseSet::Shrink by @vyavdoshenko in #6094
- chore(core): Move page_usage related code to its own library by @abhijat in #6146
- chore: quietly ignore LATENCY HISTOGRAM command by @romange in #6151
- fix(tiering): missing comma in dashboard json by @goochs in #6150
- chore: add a tool that creates charts based on memtier metrics data by @romange in #6154
- chore: add latency graph to local dashboard by @romange in #6153
- fix: incorrect stalled heartbeat warning by @romange in #6155
- feat(lua): add legacy-float flag for Lua 5.1 number compatibility by @vyavdoshenko in #6149
- chore(dfly_bench): properly handle 0 from Recv by @romange in #6159
- chore: minor cleanups around the eval flow by @romange in #6152
- tests: Use AWS public docker registry by @abhijat in #6161
- fix(search): Fix numeric tree splits by @dranikpg in #6143
- fix(tiering): Small test fixes by @dranikpg in #6133
- chore: introduce common directory by @romange in #6170
- chore: introduce ParsedArguments class by @romange in #6169
- chore: rename WRITE to JOURNALED by @romange in #6172
- chore: fix data corruption bug by @romange in #6174
- chore: add ability for ParsedArgs to reference BackedArguments by @romange in #6171
- chore: use BackedArguments for implementing a pipeline message by @romange in #6167
- feat(search): Defragment search indices by @abhijat in #6144
- chore(core): Refactor SmallString by @dranikpg in #6138
- chore: clean up sanitizers checks by @romange in #6173...
v1.35.1
v1.34.2
This is a patch release
It is strongly advised to update to this version if you use 1.34.0 / 1.34.1 due to regression when Dragonfly runs in cache mode
What's Changed
- fix(evicition): Don't accumulate deleted bytes if there is no RSS evi… by @BorysTheDev in #5908
Full Changelog: v1.34.1...v1.34.2
v1.34.1 (Use with caution - see known issues in description)
This is a patch release
Known issues
What's Changed
- fix: prometheus is unable to scrape the
/metricsendpoint #5829
Full Changelog: v1.34.0...v1.34.1
v1.34.0 (Use with caution - see known issues in description)
Dragonfly v1.34.0
Known issues
Important stability fixes and changes:
- Replication fixes: #5727 #5700
- Geo search fixes: #5714 #5678 #5726 #5734
- SSD tiering improvements: #5802 #5803 #5810
What's Changed
- fix: prevent writeBucket if migration is canceled by @BorysTheDev in #5676
- chore: group memory prometheous metrics by @kostasrim in #5674
- fix: check snapshot_version in correct place by @BorysTheDev in #5687
- fix: stack corruption in MultiCommandSquasher by @romange in #5697
- fix: RdbSaver: destroy SliceSnapshot on its shard thread to fix flaky crash on ARM64 with --force_epoll by @vyavdoshenko in #5685
- server: fix max emission limit in throttle command by @abhijat in #5686
- fix: list ops transformation during replication by @BorysTheDev in #5700
- fix: command parsing in geo family by @kostasrim in #5714
- chore: add queue task index to the log by @romange in #5716
- chore(server): Semi-automatic flag updates by @dranikpg in #5666
- feat(search): Add indexes joining by @BagritsevichStepan in #5604
- feat(search_family): Add LOAD_FROM to the FT.AGGREGATE command by @BagritsevichStepan in #5703
- feat(search_family): Improve sorting and limiting in index joins by @BagritsevichStepan in #5717
- fix: macos and linux build by @vyavdoshenko in #5718
- feat: Implement GEORADIUS_RO command by @EricHayter in #5678
- test: skip failing tests by @vyavdoshenko in #5721
- docs: improve description of --maxmemory parameter (units/tiering/minPerThread) by @frivoire in #5696
- chore: update task queue fiber priority to high by @romange in #5722
- chore: check fail for empty listpacks in streams by @kostasrim in #5704
- feat: improve target node latency during migration by @BorysTheDev in #5715
- chore: Strict bounds when adding uknown command for INFO ALL stats by @mkaruza in #5735
- server: Drop contents of
exec_infobody on clear by @abhijat in #5740 - feat: Implement GEORADIUSBYMEMBER_RO command by @EricHayter in #5726
- fix: reject geosearch count 0 by @kostasrim in #5734
- fix: jsonPath parser for int values by @BorysTheDev in #5737
- feat(dfly_bench): Generate value with random length by @mkaruza in #5743
- fix: JSON RESP3 compatibility - remove extra nested arrays for most commands by @vyavdoshenko in #5747
- chore: rewrite mimalloc2 external lib dependency by @romange in #5751
- fix: replication for Z...STORE commands by @BorysTheDev in #5728
- server: Enable lua legacy float response for RESP3 by @abhijat in #5754
- fix: bitfield no operations command by @BorysTheDev in #5756
- test: unskip epoll cluster and replication tests by @BorysTheDev in #5757
- Pull helio by @dranikpg in #5760
- fix: search index restore when index names start with ‘:’ (e.g. :Order:index) by @vyavdoshenko in #5755
- Revert "test: unskip epoll cluster and replication tests (#5757)" by @BorysTheDev in #5761
- chore: add more logs for takeover by @BorysTheDev in #5765
- chore: implement the iterative fragmentation check by @romange in #5766
- server: Adds metrics for background defrag task by @abhijat in #5767
- server: metrics to track stored command sizes by @abhijat in #5764
- chore: unlink deletes hashes asynchronously by @romange in #5773
- fix: acl pubsub should only glob match the channel by @kostasrim in #5769
- chore: add self-testing code for heap->full_page_size computation by @romange in #5772
- chore: tune replication/migration settings by @romange in #5779
- facade/server: Use inline instead of extern to reduce loc by @abhijat in #5768
- fix: script error reply by @BorysTheDev in #5776
- chore: Resize vector in StringMap::RandomPairs by @mkaruza in #5781
- dfly_bench: Show error on failing to make address by @abhijat in #5787
- feat: SHUTDOWN: fast path for NOW/FORCE; unify SAVE/SAFE; support NOSAVE by @vyavdoshenko in #5783
- core: Replace sbf with hyperloglog by @abhijat in #5784
- server: Reject caching command if tracking is not enabled by @abhijat in #5786
- fix: data loss in partial sync from same source master by @kostasrim in #5727
- fix: Scan on non-existing key should return zero cursor by @mkaruza in #5780
- fix(snapshot): Replace sleeps with yield by @dranikpg in #5619
- fix(block_list): Speed up Split method by @BagritsevichStepan in #5748
- chore: pass to a string compact_object a key/value flag by @romange in #5795
- feat(range_tree): Add FinalizeInitialization method to the RangeTree by @BagritsevichStepan in #5793
- fix: stale pointer reference during slot migration and flush by @romange in #5798
- chore: Command category cleanup (part 2?) by @dranikpg in #5800
- fix: remove limitation for SSCAN by @BorysTheDev in #5806
- chore: Update helio submodule by @mkaruza in #5807
- chore(tiering): Fix asserts around reads for serialization by @dranikpg in #5802
- feat: prometheus metrics per database by @qlimenoque in #5770
- chore(rdb): Insert big values only after full construction by @dranikpg in #5796
- fix(tiering): Cooldown for DiskStorage::Grow() retries by @dranikpg in #5803
- ci: enable repeat tests to use release and force epoll by @abhijat in #5805
- chore: Clean up string_family by @dranikpg in #5801
- chore(tiering): Make lower bound configurable by @dranikpg in #5810
- fix: increase fiber stack by @BorysTheDev in #5817
- chore: support huffman encoding for string values by @romange in #5815
- chore: increase timeout to 80mins for reg tests by @kostasrim in #5819
- chore(server): Hide internal CO flags from output by @dranikpg in #5814
- feat: Add eviction based on rss memory usage by @BagritsevichStepan in #5791
Huge thanks to all the contributors! ❤️
New Contributors
- @frivoire made their first contribution in #5696
- @qlimenoque made their first contribution in #5770
Full Changelog: v1.33.0...v1.34.0
v1.33.1
v1.33.0
Dragonfly v1.33.0
Important stability fixes and changes:
What's Changed
- server: Log warning if server stops accepting connections by @abhijat in #5596
- feat(server): support command help command by @guozhihao-224 in #5601
- chore: refactor JournalItem by @kostasrim in #5585
- feat(linear_search_map): Add keys method by @BagritsevichStepan in #5603
- core: Minor cleanups in bloom filters by @abhijat in #5595
- fix(tiering): Block on concurrent backing file grow by @dranikpg in #5609
- feat: use SET instead of RESTORE for strings during slot migrations by @BorysTheDev in #5614
- chore: introduce shard_thread_busy_polling_usec to control busy polling by @romange in #5624
- fix: UB in georadius by @BorysTheDev in #5629
- fix: test_throttle_on_commands_squashing_replies_bytes by @kostasrim in #5628
- chore: more pipeline latency coverage by @romange in #5632
- fix: ub in GEORADIUSBYMEMBER by @kostasrim in #5634
- chore: more pipeline latency coverage (#5632) by @romange in #5635
- feat: use PXAT flag instead of separate command for strings during migration by @BorysTheDev in #5631
- refactor: CmdArgParser::Error() by @BorysTheDev in #5636
- test(acl): Fix flaky ACL tests with long-running Lua scripts by @vyavdoshenko in #5627
- chore: string_view overload for BaseFamilyTest::Run by @kostasrim in #5637
- fix: FlushSlots test by @BorysTheDev in #5639
- fix: macos build geo_family.cc by @vyavdoshenko in #5640
- fix: preserve null characters in hash values after HEXPIRE by @vyavdoshenko in #5642
- test(acl): make ACL tests with concurrent scripts deterministic by @vyavdoshenko in #5641
- test: skip test_acl_del_user_while_running_lua_script becuase it constantly fails on CI by @vyavdoshenko in #5646
- chore: do not shutdown after takeover only in full cluster mode by @kostasrim in #5621
- chore: add more I/O run-time settings by @romange in #5644
- fix: Prevent race condition during concurrent SAVE operations by @vyavdoshenko in #5633
- core: Track objects skipped during defragmentation by @abhijat in #5647
- chore(tiered_storage): Rename flags, make them updatable by @dranikpg in #5608
- chore: allow replicaof in cluster mode when state is TAKEN_OVER by @kostasrim in #5618
- fix: timeout overflow during migration finalization by @BorysTheDev in #5652
- fix(json): support json keys containing dots in bracket notation by @vyavdoshenko in #5650
- fix: accounting of metrics under squash_stats_latency_lower_limit filter by @romange in #5659
- chore: sort per shard sorted sets for SINTER by @kostasrim in #5617
- fix: macos build tiered_storage.h by @vyavdoshenko in #5663
- fix: RoundRobinSharder for all proactors by @kostasrim in #5654
- workflows: Add a dispatch action which will run pytests on repeat by @abhijat in #5668
- fix(pytest): Don't delete and modify huge value keys in test_replication_all by @mkaruza in #5657
- chore: move tiering flags by @kostasrim in #5665
- fix(json_family): Remove expiry of existing keys in JSON.SET by @mkaruza in #5670
- fix: test_migration_timeout_on_sync by @BorysTheDev in #5667
- fix: refactor save synchronization to prevent deadlocks and crashes by @vyavdoshenko in #5655
- fix(pytest): Increase timeout in test_seeder_key_target by @mkaruza in #5677
- chore: calibrate regression tests running time by @kostasrim in #5658
- chore(lua): Add lua redis.log function by @mkaruza in #5672
- chore: add more detailed timings for slow squash hops by @romange in #5679
Full Changelog: v1.32.0...v1.33.0