Releases: dragonflydb/dragonfly
v1.5.0
What's Changed
- feat: add s390x architecture support by @iko1 in #1214
- feat(CI): Update weekly build image name to be
dragonfly-weekly
by @Pothulapati in #1384 - fix(docker-release): Run Docker test only if image is built by @Pothulapati in #1430
- feat(cluster): Implement
CLUSTER KEYSLOT
command by @chakaz in #1413 - fix(cluster): Fix race when setting cluster config by @chakaz in #1428
- fix: out of bounds typo by @romange in #1434
- chore: improve connection I/O errors reporting by @romange in #1436
- test(cluster): Extend cluster_mgr.py by @chakaz in #1426
- feat(server): set allowed key size 256MB by @adiholden in #1435
- feat: Implement KNN interface by @dranikpg in #1412
- fix: add numpy to regtests (needed for knn) by @dranikpg in #1454
- fix: call NotifyPending only from tx queue invocations by @dranikpg in #1439
- feat(server): add flag to set FiberQueueThreadPool thread size by @wayslog in #1452
- feat(server): add unixsocketperm support by @adiholden in #1450
- feat(server): Add missing fields to INFO PERSISTENCE command (#1408) by @kostasrim in #1438
- feat(regression github): send failed tests names to chat by @adiholden in #1459
- fix: rename memcache to memcacheD by @dranikpg in #1461
- Expose replication lag metrics by @royjacobson in #1400
- fix: failing assertion on snapshot regression tests when dbfly instance shuts down by @kostasrim in #1463
- fix: support json v1 dot path by @dranikpg in #1462
- feat(log): On startup print info to stdout by @kostasrim in #1448
- fix(server): Fix early reply from
DEBUG POPULATE
by @chakaz in #1441 - feat(debian): retain debug symbols in deb package by @Pothulapati in #1464
- fix: avoid using main_listener when migrating connections by @romange in #1471
- fix: Don't calculate replication lags when replica is not in stable sync by @royjacobson in #1472
- fix(regression): fix json report filename by @adiholden in #1465
- fix(regression): failing info persistence on snapshot pytests by @kostasrim in #1473
- docs: update contributing.md with style guidelines by @kostasrim in #1467
- bug(cluster): fix crush on flush slots with shutdown by @adiholden in #1477
- fix: Increase the duration of the seeding in test_replication_info. by @royjacobson in #1479
- feat(github regression): add link to github job by @adiholden in #1482
- cleanups: Remove unused member, rename test, remove unused forward decl. by @chakaz in #1483
- fix(cluster): Fix
CROSSSLOTS
error with multi-key operations by @chakaz in #1488 - feat(cluster): Send flush slots cmd from masters to replicas. by @chakaz in #1484
- feat(server): support command rename by @adiholden in #1489
- Add Japanese README by @eltociear in #1494
- fix: misspelled replication on pytest redis_replication by @kostasrim in #1501
- fix(regression): remove test case for info persistence by @kostasrim in #1492
- feat: global eval in exec by @dranikpg in #1443
- feat: compressed list by @dranikpg in #1474
- fix: disable prohibited eval in multi test by @dranikpg in #1505
- fix(server): Initialize ServerFamily with all listeners. by @royjacobson in #1485
- fix: avoid crashing dragonfly on parsing error of cgroups config by @romange in #1503
- feat: Support atomic replica takeover by @royjacobson in #1314
- chore: tune snyk coverage to ignore test files by @romange in #1509
New Contributors
Full Changelog: v1.4.0...v1.5.0
v1.4.0
Dragonfly v1.4.0
New Dragonfly release! Some prominent changes include:
- Support for several STREAM commands (xinfo, xtrim, read) - Thanks @Abhra303 and @andydunstall !
- Implementation of bzpopmin and zdiff functionalities - thanks to @royjacobson and @kostasrim !
- Resolving high latency issues encountered in specific corner cases: @royjacobson
- Addressing stability issues reported by our community.
I would like specifically mention the help of one of the discord members that assisted with finding
the root cause with BLPOP bug. Thank you, glitch!
In addition, @andydunstall contributed many fixes across the board, especially with BullMQ compatibility.
What's Changed
- fix(docker): Install libxml2 as part of ubuntu Dockerfile by @Pothulapati in #1239
- refactor(cluster): Move CLUSTER commands to their own methods. by @chakaz in #1230
- feat(stream) Add support for XREAD by @andydunstall in #1235
- fix: Dragonfly ignoring NOREPLY option for Memcached commands by @talbii in #1233
- fix(replication): Don't open a replication flow in non-shard threads by @royjacobson in #1234
- fix(stream): avoid using designated initializer by @Abhra303 in #1247
- fix: fix multi test by @dranikpg in #1236
- chore: factor out commandid from the server lib by @romange in #1253
- Feat bzpopmin by @royjacobson in #1232
- feature(server): Bring back inline scheduling by @royjacobson in #1130
- refactor(cluster): Move management commands from
DFLY CLUSTER
prefix toDFLYCLUSTER
. by @chakaz in #1251 - feat(cluster): cluster config delete now owned slots data by @adiholden in #1241
- chore: Update helio by @royjacobson in #1257
- fix: actually zero initialize the struct by @royjacobson in #1256
- fix: support XREAD ... STREAMS ... keys derivation by @romange in #1250
- perf: Use InlinedVector in TransactionData for the common case of single commands by @royjacobson in #1260
- chore: Try to turn on Werror in the CI by @royjacobson in #1261
- fix: S3 writes are now working with new format as well by @romange in #1252
- feat(cluster): Implement
CLUSTER INFO
. by @chakaz in #1258 - feat(cluster): Do not allow node IDs to appear more than once. by @chakaz in #1271
- fix(cluster): Fix breaking test by @chakaz in #1273
- feat: Use journal LSNs for absolute replication offsets by @royjacobson in #1242
- fix: remove xread required arguments by @andydunstall in #1263
- Update README.md by @worldsoup in #1279
- chore: Add clang workflow to CI by @royjacobson in #1220
- feat(cluster): support dflycluster myid by @adiholden in #1272
- Refactor search AST by @dranikpg in #1222
- fix: move version check earlier in the flow by @romange in #1255
- Reply with
MOVED
error for non-owned slots. by @chakaz in #1283 - fix: fix dispatch ordering by @dranikpg in #1254
- feat(cluster): dflycluster commands only under admin port by @adiholden in #1281
- feat(cluster): Implement
CLUSTER SHARDS
. by @chakaz in #1284 - feat(streams): Add support for XREAD BLOCK by @andydunstall in #1291
- feat(cluster): select not allowed in cluster mode by @adiholden in #1288
- feat(cluster): Implement
CLUSTER SLOTS
. by @chakaz in #1289 - bug(memory): read LXC memory.limit_in_bytes too by @hermanbanken in #1293
- refactor(cluster): Unify cluster-disabled error message. by @chakaz in #1296
- feat(cluster): Implement CLUSTER NODES command. by @chakaz in #1298
- chore: Silence unwanted asyncio clutter by @royjacobson in #1299
- Search: Basic shard state by @dranikpg in #1249
- bug(cluster): Fix failing cluster test. by @chakaz in #1300
- chore: improve search tests + fixes by @dranikpg in #1303
- fix: fix search test by @dranikpg in #1306
- feat(cluster): first config set drop all entries not owned by node by @adiholden in #1301
- Add bison to build process, and libxml2 to runtime by @chakaz in #1308
- fix: Batch array length before sending its contents by @romange in #1287
- Add latest dependencies. by @chakaz in #1310
- feat(server): Add versioning to dragonfly replication by @royjacobson in #1307
- fix: werror in ci and warning that slipped by by @royjacobson in #1297
- feat: Support ACKs from replica to master by @royjacobson in #1243
- refactor(cluster): Use
GetEmulatedShardInfo()
forCLUSTER INFO
. by @chakaz in #1317 - fix: Clarify logging for snapshots loading. by @royjacobson in #1312
- fix: remove redundant list assertions by @andydunstall in #1338
- feat(streams): Add support for XTRIM by @andydunstall in #1337
- Use search indices by @dranikpg in #1294
- fix: Skip optional WEIGHT param in ft.create by @dranikpg in #1340
- Chore: Clean up interface of Replica::ReadRespReply by @royjacobson in #1330
- feat(cluster): Allow actions on non-owned keys on replication port. by @chakaz in #1334
- chore: Double regression tests timeout (10m->20m) by @chakaz in #1350
- feat: Support tags in search by @dranikpg in #1341
- fix(cluster): Fix crash when getting
DFLYCLUSTER GETSLOTINFO
with no other args. by @chakaz in #1351 - fix(server): Return null when
HRANDKEY
doesn't find a key. by @chakaz in #1354 - feat(server): debug poplulate add slots option by @adiholden in #1348
- fix: fix search_test after incorrect rebase by @dranikpg in #1356
- feat(zset family): Implement ZDiff command issue #1311 by @kostasrim in #1333
- feat(cluster): Add
total_reads
andtotal_writes
toGETSLOTSINFO
. by @chakaz in #1355 - fix(cluster): Fix failing test due to automatic merge by @chakaz in #1359
- fix(replication): Restart replication upon receiving
FLUSHALL
during full sync by @chakaz in #1347 - test(cluster): Test that cluster works with a standard cluster client. by @chakaz in #1336
- chore(server): Move tests to their respective subdir by @chakaz in #1360
- chore: Add blpop crash diagnostics by @dranikpg in #1358
- fix: fix linsert pivot by @andydunstall in #1365
- fix(alpine): Add libxml2 into the build pipeline by @Pothulapati in #1363
- fix(replication): Destroy rdb saver on the same thread it was created by @chakaz in #1366
- feat(ci): Test the built docker image by @Pothulapati in #1240
- CGroup v1 detection by @talbii in #1329
- bug(debug populate): fix debug populate keys by @adiholden in #1370
- feat(cluster): Use thread-local cluster config by @chakaz in #1361
- fix(server): Do more aggressive batching. by @royjacobson in #1375
- fix(xinfo): send integer info in correct...
v1.3.0
Dragonfly v1.3.0
New Dragonfly release! Some prominent changes include:
- Support for PFADD, PFCOUNT, PFMERGE commands - thanks to @chakaz
- Extend HELLO support to AUTH and SETNAME options - thank you @rueian
- XGROUP now supports MKSTREAM option - thanks to @Abhra303 !
- Performance improvements when running MULTI/EXEC transactions (@dranikpg)
- Dragonfly can now listen on a unix domain socket without opening a TCP port (@talbii)
What's Changed
- feat: Add unicode support and replace flex with reflex. by @romange in #1143
- don't listen for TCP connections when
--port 0
is passed by @talbii in #1113 - fix(server): Tweaks for replication info by @royjacobson in #1147
- Dispatch queue backpressure and batching by @dranikpg in #1118
- Update README.md by @worldsoup in #1145
- feat: Extend parsing to field impressions by @romange in #1154
- feat(server): allow AUTH and SETNAME options in the HELLO command by @rueian in #1156
- feat: ignore MULTI/EXEC if the transaction consists of EVAL commands by @romange in #1157
- feat(server): Add support for PFADD and PFCOUNT by @chakaz in #1152
- chore: Tweak debug symbols generation for releases by @royjacobson in #1139
- fix: 'xgroup help' should show help message by @romange in #1159
- fix(server): Fix typo in CompactObj::operator== by @royjacobson in #1165
- chore: Fix errors/warnings in GCC13 by @royjacobson in #1155
- fix(server): Wrong replication state by @royjacobson in #1150
- fix: fix replica closing socket by @dranikpg in #1167
- Detect possible async calls in scripts by @dranikpg in #1122
- fix: fix script body access by @dranikpg in #1169
- fix: fix passing scripts by @dranikpg in #1170
- chore: Update helio by @royjacobson in #1171
- fix: remove preliminary socket close in replica by @dranikpg in #1172
- chore(regression tests) : remove replication tests from arm host runner by @adiholden in #1174
- feat(redis): Add crc16 redis function by @adiholden in #1173
- feat(xgroup): support MKSTREAM for xgroup create by @Abhra303 in #1176
- chore: improve xadd performance and remove redundant allocations by @romange in #1160
XREVRANGE
should expect arguments in reverse order by @talbii in #1177- PERSIST returns 0 when key has no expiry by @talbii in #1178
- Remove blpop FindFirst hop after wakeup by @dranikpg in #1168
- feat(server): Implement PFMERGE by @chakaz in #1180
- feat: simple AST for search by @dranikpg in #1175
- chore: pull helio by @dranikpg in #1182
- Enable unlock for all tests. by @chakaz in #1185
- Support fields in search mvp by @dranikpg in #1184
- fix: fix parsing nested arrays by @andydunstall in #1189
- chore: Add a basic clang-tidy config by @royjacobson in #1192
- Basic search by @dranikpg in #1187
- feat(admin): Implement admin_nopass flag by @pawelKapl in #1193
- feat(cluster): check command keys ownership by @adiholden in #1194
- chore: update helio by @romange in #1199
- feat: Implement rdb snapshot write directly into s3. by @romange in #1205
- fix: use redis.asyncio instead of aioredis by @dranikpg in #1206
- fix: fix duplicated dependency by @dranikpg in #1209
- chore: Add vlog printings every time we switch global state by @romange in #1208
- fix: fix test connection name by @dranikpg in #1211
- feat: implement ZINTERCARD by @daniel-shimon in #1197
- fix(tests):Small fix to redis replication test by @ashotland in #1213
- fix: handle no key commands in slot check by @dranikpg in #1207
- feat(server): SetConfig() for ClusterConfig. by @chakaz in #1202
- chore: Add bison to release build dependencies by @romange in #1215
- Fix: Check buffer size in JournalReader::ReadString before writing by @royjacobson in #1218
- fix: Lock before accessing slots_ by @chakaz in #1219
- feat: search json support + client tests by @dranikpg in #1210
- feat(cluser): support GETSLOTINFO by @adiholden in #1217
- fix: use strings to keep the result of GetBucketPath() by @romange in #1225
- chore(deps): bump redis from 4.3.4 to 4.4.4 in /tools by @dependabot in #1221
- Support MINID, NOMKSTREAM and LIMIT options for XADD command by @Abhra303 in #1201
- bug(server): fix cash SET mykey 123 [PX/EX] with no px arg by @adiholden in #1228
- opt: Slightly less allocations in OpaqueObjLoader::CreateHMap by @royjacobson in #1227
- feat(cluster): impl slot data delete by @adiholden in #1224
- feat(server): Implement
DFLY CLUSTER CONFIG
command. by @chakaz in #1223
New Contributors
- @rueian made their first contribution in #1156
- @Abhra303 made their first contribution in #1176
- @andydunstall made their first contribution in #1189
- @pawelKapl made their first contribution in #1193
- @daniel-shimon made their first contribution in #1197
Huge thanks to all the contributors! ❤️
Full Changelog: v1.2.1...v1.3.0
v1.2.1
Dragonfly v1.2.1
This is a patch release that fixes a case issue with v1.2.0. The issue caused Dragonfly to persist hash keys in low case only.
This release fixes the issue, all users who pulled v1.2.0 are advised to upgrade to this version. Thanks @heikomat for reporting this!
What's Changed
- Sentinel test debug by @ashotland in #1125
- test(sentinel_test.py): increase timeout in failover test by @ashotland in #1133
- chore: Update comments and logs after debugging by @royjacobson in #1129
- chore: support more token types in the lexer by @romange in #1134
- fix: remove redundant ToLower call from the HSET function by @romange in #1141
Full Changelog: v1.2.0...v1.2.1
v1.2.0
Dragonfly v1.2.0
Another strong release for Dragonfly. Important changes include:
- Starting this release, Dragonfly will automatically save a snapshot on exit and will automatically load it back
when it starts from the same directory. This feature has been a much-asked-for - we hope you find it useful!
Thanks @royjacobson for implementing it!- As before, the snapshot's filename will contain a timestamp by default, and will not override previous snapshots. To overwrite previous snapshots, pass a custom value to the
--dbfilename
configuration option. - To disable automatic snapshots, pass an empty string to
--dbfilename
.
Thanks @royjacobson !
- As before, the snapshot's filename will contain a timestamp by default, and will not override previous snapshots. To overwrite previous snapshots, pass a custom value to the
- Replication stability improvements - thanks to @adiholden
- Lots of performance and stability improvements around PubSub - @dranikpg
- Lots of performance improvements around Lua scripting and transactions. @dranikpg
- Support for IPv6 - @royjacobson
- Automatically recognize container limits when deducing maxmemory and number of cpus: @talbii
- Json improvements by @iko1
What's Changed
- feat(facade): Capturing reply builder by @dranikpg in #1001
- fix: update helio dependency by @romange in #1030
- fix: another pass on fixing namespace imports to support fb2 by @romange in #1024
- fix(server): Return the replica's port on ROLE command by @royjacobson in #1027
- fix(server): Use connection pool only for regular messages by @dranikpg in #1038
- feat(server): Better logging for replication by @royjacobson in #1041
- Handle GET parameter for SET command. by @chakaz in #1023
- feat(tests): rand seed flag and output by @dranikpg in #1044
- (build)allow to compile with a custom OpenSSL installation by @vvhungy in #1022
- chore: update helio dependency by @romange in #1047
- feat: increase the flexibility of how to assign DF threads by @romange in #1042
- fix(interpreter): Remove converting type checks by @dranikpg in #1051
- feat(server): Squashed exec by @dranikpg in #1025
- chore: ignore vscode's launch.json by @royjacobson in #1054
- chore: change Dragonfly to use fb2 helio library. by @romange in #1049
- fix: use fibers.h alias for SimpleChannel by @royjacobson in #1059
- fix: implement fiber migrate inside helio by @romange in #1061
- fix: do not crash when running on WSL1 by @romange in #1062
- fix(server): Set lower timeouts for Replica::ConnectAndAuth() by @royjacobson in #1043
- bug(sse2neon): fix sanitizer crash in _mm_loadu_si128 by @adiholden in #1037
- Remove cmd name from args by @dranikpg in #1057
- chore: disable self-hosted runner by @romange in #1067
- fix(server): Optimize StoredCmd by @dranikpg in #1053
- chore: update helio by @royjacobson in #1069
- fix(server): Fix resp3 for pubsub commands by @ashotland in #1068
- chore: Split DispatchCommand into validation and main part by @dranikpg in #1071
- fix: fix lua monitor pytest by @dranikpg in #1073
- Only copy previous value's string when needed. by @chakaz in #1075
- fix(regression-test): Delete tests/dump.rdb by @ashotland in #1077
- feat: enable multi-tx squashing. by @romange in #1074
- fix(regression-tests): Add PortPicker by @ashotland in #1078
- Revert to use CachePrevValueIfNeeded(), but let it call GetString() if needed. by @chakaz in #1080
- fix: Update cntx->cid on multi-tx'es by @dranikpg in #1081
- Lua script async calls by @dranikpg in #1070
- fix(tests): Don't return the same port from PortPicker.get_available_port twice by @royjacobson in #1083
- fix: bugs in rdb code by @romange in #1079
- feat(server): Support CONFIG GET [databases|maxmemory] by @chakaz in #1093
- fix: Remove incremental locking by @dranikpg in #1094
- feat: add oom insertion rejections by @romange in #1096
- fix: systemd configuration by @romange in #1097
- feat(server): Support IPv6 addresses for replication by @royjacobson in #1087
- feat(server): Insert timestamp into snapshot names explicitly by @royjacobson in #1028
- Refactor connection by @dranikpg in #1098
- fix: fix default instance port blocking in pytest by @dranikpg in #1102
- fix(server): Allow interrupting REPLICAOF commands during full sync by @royjacobson in #1058
- chore: Allow passing empty strings as flag arguments in DflyInstance by @royjacobson in #1104
- fix: report errors from commands with redis.call by @dranikpg in #1108
- fix(helm): Allow prometheus rules fields to be empty by @Pothulapati in #1100
- fix(parser): Don't accept NILs as command arguments in server mode by @royjacobson in #1101
- fix(server): Don't allow directory escapes in dbfilename by @royjacobson in #1105
- fix(server): Better error reporting when opening snapshot files by @royjacobson in #1112
- feat(server): Save on shutdown by @royjacobson in #1086
- fix(server): Prevent preemption inside SerializeBucket by @royjacobson in #1111
- fix(server): json.set should add missing keys and add missing cmd... by @iko1 in #1065
- docs(readme) : doc flagfile by @adiholden in #1110
- chore: enable self hosted runner by @adiholden in #1116
- fix(tests): Disable 'dbfilename' unless explicitly given in the test by @royjacobson in #1117
- fix: container limits by @talbii in #1109
- Dispatch queue memory optimizations by @dranikpg in #1103
- Collect errors from async lua calls by @dranikpg in #1092
- docs: describe command squashing by @dranikpg in #1119
- chore: adding polishes for reading cgroup files by @romange in #1121
- fix: replace journal executor reply builder by @dranikpg in #1120
- fix(test): add wait for all replicas to finish by @adiholden in #1124
- Fix async lua bugs by @dranikpg in #1123
- bug(server): replicate scripts in stable state by @adiholden in #1114
- feat: Add skeleton code for parser/lexer generation by @romange in #1126
- chore: simplify debian package filename. by @romange in #1128
New Contributors
- @royjacobson made their first contribution in #1027
- @vvhungy made their first contribution in #1022
Huge thanks to all the contributors! ❤️
Full Changelog: v1.1.0...v1.2.0
v1.1.2
Dragonfly v1.1.2
This is another patch release on top of v1.1.1 that fixes a memory leak during PUBLISH
operation #1034
What's Changed
- fix: another pass on fixing namespace imports to support fb2 by @romange in #1024
- fix(server): Return the replica's port on ROLE command by @royjacobson in #1027
- fix(server): Use connection pool only for regular messages by @dranikpg in #1038
New Contributors
- @royjacobson made their first contribution in #1027
Full Changelog: v1.1.1...v1.1.2
v1.1.1
Dragonfly v1.1.1
This is a patch release on top of v1.1.0 that fixes failures on some of the kernels. If you use v1.0.0 it's recommended to upgrade to
v1.1.1, which addresses the following critical bugs:
v1.1.0
Dragonfly v1.1.0
This update addresses critical bugs and it is highly recommended for all users currently on v1.0.0 in production to upgrade. The following issues have been resolved:
- Fixed data race on arm64 architectures causing crashes due to incorrect memory ordering barriers (#1009)
- Resolved data corruption within the HGET command (#994)
- Corrected ZPOPMIN (#977 and #1011)
- Enhanced replication by supporting master authentication using the
masterauth
flag (#1000)
In addition to these bug fixes, we have introduced new features:
- Added support for Resp3 (will work automatically with a resp3-enabled client).
- Docker images have smaller footprint (with stripped binaries).
What's Changed
- fix: Get DragonDB to compile with clang. by @chakaz in #957
- feat: Support sse2 builds. by @romange in #955
- feat(server): Introduce and use TopKeys class. by @chakaz in #951
- feat(server): Specify script flags with shebang by @dranikpg in #944
- fix(server): Fix transaction index + shard_data multi re-use by @dranikpg in #958
- fix(server): fix Interpreter::AddFunction by @dranikpg in #959
- fix(tests): Fix interpreter test by @dranikpg in #961
- fix(tests): Revive commented out actions by @ashotland in #962
- fix(docker): Use the right shebang in
healthcheck.sh
by @Pothulapati in #963 - feat(server): Replace channel slice with store by @dranikpg in #938
- tests(replication): Test script replication by @dranikpg in #960
- fix(tests):Comment out ZPOPMIN Action Again by @ashotland in #971
- fix(pytest): Disable script test by @dranikpg in #972
- bug(replication): journal use shard mutex with change callback array by @adiholden in #973
- feat(server): Support Resp3 by @ashotland in #975
- chore: update helio dependency by @romange in #984
- chore: Improve client connection checking in pytests by @romange in #967
- docs(rdb): fix typo by @eltociear in #989
- bug(server): Fix crash in ZPOPMIN by @chakaz in #977
- fix: Adapt json_test to async_client by @romange in #990
- fix: list_family_test works with async client by @romange in #992
- fix: improve connection affinity heuristic by @romange in #987
- refactor(facade): Refactor reply builder by @dranikpg in #991
- fix(server): Fix hset buffer bug by @dranikpg in #994
- feat(server): Pubsub updates with RCU by @dranikpg in #980
- docs: add a chinese language readme by @Lambert-Rao in #1002
- bug(replica): support auth master by @adiholden in #1000
- chore(deps): bump redis from 4.3.4 to 4.5.3 in /tests/dragonfly by @dependabot in #1005
- fix(ci): Use stripped binaries for docker images by @Pothulapati in #1006
- bug(server): emulate readonly command by @ashotland in #1004
- bug(replication): fix deadlock in cancle replication flow by @adiholden in #1007
- fix: add missing barrier to fix reads in the coordinator fiber by @romange in #1009
- ZPOPMAX and ZPOPMIN now reply with scores. by @chakaz in #1011
- chore: import fiber related primitives under dfly namespace by @romange in #1012
- docs(readme): Fix up grammar and consistency by @sixhobbits in #982
- bug(helm): Fix parsing error with statefulset by @uncycler in #985
- Reset replica flags after stable state fail by @adiholden in #1013
- chore: remove fiber related names from the codebase by @romange in #1018
- fix: compatibity with older linux distributions by @romange in #1019
- LPUSHX and RPUSHX now return 0 size when key does not exist. by @chakaz in #1010
- feat(github): add self hosted runner to regression tests by @adiholden in #1016
New Contributors
- @Lambert-Rao made their first contribution in #1002
- @dependabot made their first contribution in #1005
- @sixhobbits made their first contribution in #982
- @uncycler made their first contribution in #985
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Dragonfly v1.0.0
We are thrilled to announce that Dragonfly now supports primary-to-secondary replication! 🎆 🎆
You can either configure Dragonfly as a secondary instance alongside your existing Redis master,
or establish your own replicated DF-to-DF setup. The configuration process is quite similar to that of Redis.
For more information, please check out our replication setup page.
In addition to this feature, the latest release includes final touches and bug fixes to enhance Dragonfly's stability.
What's Changed
- fix(tests): Disable logging in replication tests by @dranikpg in #906
- fix(regression-tests): fix cpu print step by @adiholden in #910
- fix: logging in sentinel_test by @talbii in #869
- fix(pytest): Add master restart delay by @dranikpg in #909
- chore(helm): update golden files to latest version by @Pothulapati in #915
- fix(server): Change WaitForCallbacks mem order by @dranikpg in #914
- fix(tests):Some test cases for redis replication by @ashotland in #918
- fix: send a single RDB_OPCODE_FULLSYNC_END from a snapshot by @romange in #920
- fix(core): Auto cast doubles to ints in lua scripts by @dranikpg in #922
- chore(helm): Make release pipeline to update golden files by @Pothulapati in #916
- feat(server): Implement BITPOS. by @chakaz in #907
- Skip version check if $DFLY_DEV_ENV is set by @ashotland in #928
- fix: Fix a corruption when connection writes interleaving messages by @romange in #926
- feat(workflow): Add Vercel Docs Hook to release workflow by @vahnag in #919
- fix(docs):Delete api_status.md by @ashotland in #921
- feat(server): Pragmas from scripts by @dranikpg in #927
- chore: change thread_local to __thread when possible. by @romange in #930
- feat: increase expiry period to 8 years. by @romange in #932
- fix(redis_replicaiton_test): fix compare set types by @adiholden in #929
- bug(redis replication): fix multi transaction replication stable state by @adiholden in #934
- fix: correctly set batching mode during pubsub by @romange in #937
- feat(server): hello and info sidekiq compatibility by @ashotland in #941
- feat(ci): Add daily builds BFS verification by @Pothulapati in #936
- fix(replication): redis replication flush all before full sync by @adiholden in #946
- fix(rdb_load): replica load expired keys by @adiholden in #948
- fix(ci): Use correct
x86-64
with builds by @Pothulapati in #950 - Integration test docker image with Go client by @pascaldekloe in #943
- chore: some pytests and logging improvements by @romange in #953
- improve consistency around brpop flow by @romange in #954
- fix: Fix deadlock in the transaction code. by @romange in #956
New Contributors
- @talbii made their first contribution in #869
- @vahnag made their first contribution in #919
- @pascaldekloe made their first contribution in #943
Full Changelog: v0.17.0...v1.0.0
v0.17.0
Dragonfly v0.17.0
This is probably the last version before the 1.0 GA release.
- Multiple performance & stability improvements around transactions and lua scripts.
- helm scripts support password-based authentication
- Improve memory introspection tooling to be able to track memory usage in production easier
- Switched to dragonfly-specific snapshotting format (Dragonfly still supports saving/loading rdb files).
- Backport to Dragonfly lua functions that were deprecated after lua version 5.1 (getn, unpack)
- A new docs site was launched: https://dragonflydb.io/docs
- Dragonfly can now emulate cluster-mode by exposing itself as a single-shard cluster. See
cluster_mode
flag for more details. - Experimental support for SADDEX/HSETEX commands that allow setting a TTL on SET/HASH members. This solves a 8-year-old feature request existing in the Redis project: redis/redis#2905
Huge thanks to all the contributors! ❤️
What's Changed
- feat(server): replication should not evict items by @adiholden in #743
- feat(list): Add BLMove command by @romange in #753
- fix(regression-tests): sentinel_test.py: Ditch docker whcih is complex on CI in favour of local redis binary by @ashotland in #755
- feat(server): add latency statistics for lua script calls by @romange in #758
- bug(server): fix deadlock in BufferedStreamerBase notify all producers by @adiholden in #760
- bug(replication): BLPOP fix write to shard journal of popped key by @adiholden in #761
- feat(server): add total_connections_received statistics by @romange in #757
- bug(transaction): local result needs to be reset on InitByArgs Fixes … by @adiholden in #762
- chore(server): track ooo transactions via metrics. by @romange in #763
- feat(server): Pool lua interpreters by @dranikpg in #765
- bug(replica): execute expire within multi command only if its belong … by @adiholden in #766
- Update transaction and enable OOO for regular transactions by @dranikpg in #769
- feat(server): Extend malloc-stats command functionality. by @romange in #775
- feat(server): Async unlock multi by @dranikpg in #774
- feat(server): track pipeline requests cache capacity by @romange in #776
- Update README.md by @ashotland in #778
- test(server): adding unit tests for reply builder by @boazsade in #764
- fix(server): monitor lua at script execution by @boazsade in #767
- feat(server): add dfly replica offset command by @adiholden in #780
- feat(replica): add debug command - replica offset by @adiholden in #786
- fix(server): Fix transaction bug by @dranikpg in #787
- Refactor initialization phase of transaction by @dranikpg in #790
- fix(server): Fix bugs by @dranikpg in #797
- feat(server): Enable overriding --requirepass form env var by @ashotland in #792
- test(regression-tests): stop regression-tests schedual run by @adiholden in #795
- fix(replica) : replica will not sync execution multi shard commands as default by @adiholden in #800
- feat(facade): Limit request cache using runtime flag by @romange in #793
- update readme by @worldsoup in #794
- feat(server): save dragonfly snapshot in a new format by default by @romange in #802
- feat(server): write journal record with optional await based on flag… by @adiholden in #791
- fix(pytest): SAVE to SAVE RDB by @dranikpg in #803
- fix(pytest): fix periodic test by @dranikpg in #804
- fix(regression-tests): increase timeout of regression-tests by @adiholden in #806
- chore(server): reduce number of allocations with multi-exec commands by @romange in #807
- chore(regressions-tests): Update regression-tests.yml by @ashotland in #805
- tests(server): Add multi_test by @dranikpg in #810
- feat(core): Add Ttl semantics to string_map by @romange in #813
- feat(server): Check locks in heartbeat, allow multiple tx in replica by @dranikpg in #815
- feat(charts): Update helm chart to support password from secret by @ashotland in #799
- Fix(regression-tests): Sentinel test - wait for sentinel termination by @ashotland in #816
- Basic multi modes for MULTI/EXEC by @dranikpg in #796
- fix(zset): Make count optional for ZPOP{MIN,MAX} by @alisaifee in #821
- feat(server): add debug information about running transactions by @romange in #820
- EVAL multi modes + non atomic modes by @dranikpg in #818
- fix(regression-test): Sentinel test stabilization by @ashotland in #826
- bug(snapshot): Fix unwriten entries in multiple snapshotting Fixes #823 by @adiholden in #825
- docs: Add how to build dragonfly on Fedora by @romange in #822
- feat(tests): Add rotating master test by @dranikpg in #828
- fix(docs):attos -> dragonflydb by @ashotland in #830
- feat(server): add lru data structure by @romange in #831
- Update transaction.md by @dranikpg in #808
- feat(server): Add HSETEX command by @romange in #817
- docs(dashtable): Fix image URL for expiration by @Pothulapati in #870
- fix(server): JSON.RESP path arg should be optional (#852) by @iko1 in #865
- fix(server): Fix lua reply builder by @dranikpg in #871
- fix(helio): get helio fix in uring_socket by @adiholden in #827
- fix(server): Reorder ExecuteAsync callback seqlock check by @dranikpg in #873
- fix(server): fix JSON.ARRTRIM implementation (#844) by @iko1 in #864
- feat(tests): Script pytests by @dranikpg in #872
- bug(snapshot) : Do not preempt inside OnDbChange issue #829 by @adiholden in #868
- feat(db slice): add fiber atomic gaurd by @adiholden in #878
- feat(Docker) : add redis tools to docker by @adiholden in #877
- fix(server): Fix replication logs by @dranikpg in #883
- feat(chart): add golden file output rendering tests by @Pothulapati in #882
- fix(charts): Use
Release.Namespace
everywhere by @Pothulapati in #884 - feat: support cluster mode emulation by @lsvmello in #492
- test(helm): Add command to update golden files by @Pothulapati in #890
- fix: ci by @romange in #893
- feat(zset_family): support zscan match and count optional params issue by @adiholden in #891
- Support script configuration by @dranikpg in #889
- fix: resize buffer correctly when checking for http header line by @romange in #894
- Add basic replicaiton from redis test by @ashotland in #895
- bug(snapshot) : enforce order when pushing to channel when needed issue #879 by @adiholden in #886
- bug(replica): call add entry outside DCHECK by @adiholden in #896
- bug(list_family): fix BPopPusher command replication by @adiholden in #899
- feat(regression test) : add regression test that run in optimiztion mode by @adiholden in https://github.com/dragonflydb/...