Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(namespaces): Initial support for multi-tenant #3260

Merged
merged 24 commits into from
Jul 16, 2024
Merged

feat(namespaces): Initial support for multi-tenant #3260

merged 24 commits into from
Jul 16, 2024

Conversation

chakaz
Copy link
Collaborator

@chakaz chakaz commented Jul 3, 2024

This PR introduces a way to create multiple, separate and isolated namespaces in Dragonfly. Each user can be associated with a single namespace, and will not be able to interact with other namespaces.

This is still experimental, and lacks some important features, such as:

  • Replication and RDB saving completely ignores non-default namespaces
  • Defrag and statistics either use the default namespace or all namespaces without separation

To associate a user with a namespace, use the ACL command with the NAMESPACE:<namespace> flag:

ACL SETUSER user NAMESPACE:namespace1 ON >user_pass +@all ~*

For more examples and up to date info check
tests/dragonfly/acl_family_test.py - specifically the test_namespaces function.

This PR introduces a way to create multiple, separate and isolated
namespaces in Dragonfly. Each user can be associated with a single
namespace, and will not be able to interact with other namespaces.

This is still experimental, and lacks some important features, such as:
* Replication and RDB saving completely ignores non-default namespaces
* Defrag and statistics either use the default namespace or all
  namespaces without separation

To associate a user with a namespace, use the `ACL` command with the
`TENANT:<namespace>` flag:

```
ACL SETUSER user TENANT:namespace1 ON >user_pass +@ALL ~*
```

For more examples and up to date info check
`tests/dragonfly/acl_family_test.py` - specifically the
`test_namespaces` function.
@chakaz chakaz changed the title feat(namespaces): Initial support for multi-tenant #3050 feat(namespaces): Initial support for multi-tenant Jul 3, 2024
@chakaz chakaz requested a review from adiholden July 3, 2024 20:05
@romange
Copy link
Collaborator

romange commented Jul 4, 2024

Is it the whole PR or the first one in the series?
I am asking because, we talked about having an HLD .md document in docs/, and also having non-functional changes first to ease the review.

src/server/acl/helpers.cc Outdated Show resolved Hide resolved
// TODO allow reset all
// bool reset_all{false};

std::optional<std::string> ns{};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

subjective nit (related to the previous comment) - can be just a string with empty indicating it's not set.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SG. + @kostasrim to make sure this UpdateRequest class is always expected to contain all information (i.e. that there can't be only deltas in it)


namespace dfly {

class Namespace {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add class description, including a threading/ownership model?
can also be a reference to .md file if you write it there.


class Namespace {
public:
explicit Namespace();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

explicit not needed?

@@ -310,15 +310,15 @@ class ElementAccess {
};

std::optional<bool> ElementAccess::Exists(EngineShard* shard) {
auto res = shard->db_slice().FindReadOnly(context_, key_, OBJ_STRING);
auto res = context_.ns->GetCurrentDbSlice().FindReadOnly(context_, key_, OBJ_STRING);
Copy link
Collaborator

@romange romange Jul 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our call chain is already designed to pass shard by argument, therefore it's already in a register. I suggest that you actually use here GetDbSlice(ShardId) and avoid doing it implicitly by calling GetCurrentDbSlice.
Now, it complicates the whole expression in so many places, so I also suggest to add a convenience wrapper ConnectionContext::FindReadOnly.
why? because we use context_ twice here, so instead we could shorten this
in some many places to just context_.FindReadOnly(key_, OBJ_STRING)
Of course it also applies to other frequent operations like FindMutable

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a small challenge with this proposal: transaction that's part of the connection context can sometimes be null. If it's null, we can't tell which tx time to pass to FindReadOnly() (which requires a DbContext)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wait, sorry, my bad. I thought that your proposal was to make this change in ConnectionContext. I now understand you meant in DbContext..

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the only place which uses DbContext, but not using OpArgs, is bitops family, so I didn't do that.
But I used shard->shard_id() as you proposed.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I confused both types.

@@ -355,7 +355,7 @@ OpResult<bool> BitNewValue(const OpArgs& args, std::string_view key, uint32_t of
bool bit_value) {
EngineShard* shard = args.shard;
ElementAccess element_access{key, args};
auto& db_slice = shard->db_slice();
auto& db_slice = args.db_cntx.ns->GetCurrentDbSlice();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similarly, please add a convenience accessor GetDbSlice in OpArgs that uses the shard variable inside OpArgs

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding it in OpArgs is a great idea, it saves a lot of boilerplate, thanks!

@chakaz
Copy link
Collaborator Author

chakaz commented Jul 7, 2024

Is it the whole PR or the first one in the series?

This is the whole PR.
Indeed, as you mentioned, we talked about adding a stub where there's an empty API that always returns the same pointer.
However, after getting back to work on it, I decided that it's kinda ridiculous to do that, because the "implementation" is just a map... (check out namespaces.h and .cc). The challenges are:

  1. Getting everything to compile
  2. Getting the initialization and turn down to work properly
    Both are not affected by whether the API works or not.
    So I decided to have it all in the same PR

I am asking because, we talked about having an HLD .md document in docs/, and also having non-functional changes first to ease the review.

Indeed, I forgot about the .md hld. I'll add that very soon.

namespace_ = ns;
}

std::string User::Namespace() const {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const ref

@chakaz
Copy link
Collaborator Author

chakaz commented Jul 7, 2024

I added the high level design .md doc. Please let me know what else you would like me to include in it. I captured everything I could think of, but I probably have missed some details...

@chakaz chakaz requested a review from romange July 8, 2024 06:13
Copy link
Collaborator

@romange romange left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest the following:
Restrict the first PR to changes related to passing DbContext where it's needed, the calls to op_args.GetDbSlice(), Transaction::GetCurrentDbSlice, and the design document. Basically everything without namespaces.* files. This will constitute a large portion of the diff without introducing any functional changes, making it relatively easy to review. We can even submit this part before the 1.20 release.

This PR is huge, so I think such split will help us to review it faster 🙏🏼

We call this feature _namespaces_, and it allows using a single Dragonfly server with multiple
tenants, each using their own data, without being able to mix them together.

This feature can also be achieved by having each user `SELECT` a different (numeric) database, or by
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that this feature can alternatively be ...

To access all `Namespace`s, we also added a registry with the original name `Namespaces`. It is a
global, thread safe class that allows accessing all registered namespaces, and registering new ones
on the fly. Note that, while it is thread safe, it shouldn't be a bottle neck because it is supposed
to only be used during the authentication of a connection (or when adding new namespaces).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please note that even with connection initialization we have workloads reaching 10K connects per second. I suggest using SharedMutex for this access to reduce connection between different connects.


class BlockingController {
public:
explicit BlockingController(EngineShard* owner);
explicit BlockingController(EngineShard* owner, Namespace* ns);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume that BlockingController is a global creature, so this binding is i guess a workaround to make it work with default Namespace? If I am correct, please add a TODO.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BlockingController is actually per namespace, not global

const auto key_checker = [req_obj_type](EngineShard* owner, const DbContext& context,
Transaction*, std::string_view key) -> bool {
return owner->db_slice().FindReadOnly(context, key, req_obj_type).ok();
auto ns = &trans->GetNamespace();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: auto* to help a boomer to read the code.

auto obj_type = it->second.ObjType();

if (doc_del_cb_ && (obj_type == OBJ_JSON || obj_type == OBJ_HASH)) {
string tmp;
string_view key = it->first.GetSlice(&tmp);
doc_del_cb_(key, DbContext{db_ind, GetCurrentTimeMs()}, it->second);
doc_del_cb_(key, DbContext{cntx.ns, cntx.db_index, GetCurrentTimeMs()}, it->second);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cntx is not of type DbContext?
why not just pass it?

@@ -324,7 +326,7 @@ bool EngineShard::DoDefrag() {
}
});
traverses_count++;
} while (traverses_count < kMaxTraverses && cur);
} while (traverses_count < kMaxTraverses && cur && namespaces.IsInitialized());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not understand this change

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defrag is a background task that can trigger (mostly in tests) before the namespaces is initialized or after it is destroyed

@@ -355,11 +357,14 @@ bool EngineShard::DoDefrag() {
// priority.
// otherwise lower the task priority so that it would not use the CPU when not required
uint32_t EngineShard::DefragTask() {
if (!namespaces.IsInitialized()) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

void EngineShard::DestroyThreadLocal() {
if (!shard_)
return;

uint32_t index = shard_->db_slice_.shard_id();
uint32_t index = shard_->shard_id();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shard_id

@@ -213,10 +213,11 @@ OpResult<DbSlice::ItAndUpdater> FindZEntry(const ZParams& zparams, const OpArgs&
return OpStatus::WRONG_TYPE;
}

if (add_res.is_new && op_args.shard->blocking_controller()) {
auto blocking_controller = op_args.db_cntx.ns->GetBlockingController(op_args.shard->shard_id());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

auto* ?

@@ -47,7 +47,7 @@ add_library(dragonfly_lib bloom_family.cc engine_shard_set.cc
config_registry.cc conn_context.cc debugcmd.cc dflycmd.cc
generic_family.cc hset_family.cc http_api.cc json_family.cc
list_family.cc main_service.cc memory_cmd.cc rdb_load.cc rdb_save.cc replica.cc
protocol_client.cc
protocol_client.cc namespaces.cc
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please note that you can not access namespaces from the transaction code due to backward dependency.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so shall I move namespaces.cc to dfly_transaction lib?

@chakaz
Copy link
Collaborator Author

chakaz commented Jul 11, 2024

I suggest the following: Restrict the first PR to changes related to passing DbContext where it's needed, the calls to op_args.GetDbSlice(), Transaction::GetCurrentDbSlice, and the design document. Basically everything without namespaces.* files. This will constitute a large portion of the diff without introducing any functional changes, making it relatively easy to review. We can even submit this part before the 1.20 release.

This PR is huge, so I think such split will help us to review it faster 🙏🏼

Done: #3311

@chakaz chakaz requested a review from romange July 12, 2024 08:45
Copy link
Collaborator

@romange romange left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM and god help us all

@chakaz chakaz merged commit 18ca61d into main Jul 16, 2024
10 checks passed
@chakaz chakaz deleted the tenants branch July 16, 2024 16:34
kireque referenced this pull request in kireque/home-ops Aug 8, 2024
…nfly ( v1.20.1 → v1.21.0 ) (#864)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[docker.dragonflydb.io/dragonflydb/dragonfly](https://togithub.com/dragonflydb/dragonfly)
| minor | `v1.20.1` -> `v1.21.0` |

---

### Release Notes

<details>
<summary>dragonflydb/dragonfly
(docker.dragonflydb.io/dragonflydb/dragonfly)</summary>

###
[`v1.21.0`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.0)

[Compare
Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.20.1...v1.21.0)

##### Dragonfly v1.21.0

Some prominent changes include:

- Alpha release of SSD Data tiering - enabled with flag `--prefix
some/path/basename`
- Very basic support of multi-tenancy
[@&#8203;3260](https://togithub.com/3260)
- HSETEX now supports NX option, see [our
docs](https://www.dragonflydb.io/docs/command-reference/hashes/hsetex).
-   Added support for JSON.MERGE and for JSON.MSET.
- valkey's replica-announce-ip and --cluster--announc--ip are
consolidated via `--announce-ip` flag.

##### What's Changed

- feat(server): master stop sending exec opcode to replica by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3289](https://togithub.com/dragonflydb/dragonfly/pull/3289)
- chore: optimize zpopminmax operations by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3291](https://togithub.com/dragonflydb/dragonfly/pull/3291)
- fix(json_family): Fix error in JsonFamilyTest.MGet by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3285](https://togithub.com/dragonflydb/dragonfly/pull/3285)
- fix: define macro WITH_AWS in cmake when flag is ON by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3296](https://togithub.com/dragonflydb/dragonfly/pull/3296)
- chore: Add 'memory arena show' command by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3298](https://togithub.com/dragonflydb/dragonfly/pull/3298)
- fix: missing logs on pytest failures
[#&#8203;3255](https://togithub.com/dragonflydb/dragonfly/issues/3255)
by [@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3272](https://togithub.com/dragonflydb/dragonfly/pull/3272)
- chore: refactor compact_object and introduce materialize method by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3300](https://togithub.com/dragonflydb/dragonfly/pull/3300)
- fix(acl): loading interleaved plain and hashed passwords by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3297](https://togithub.com/dragonflydb/dragonfly/pull/3297)
- chore: Add CompactObj Raw methods by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3303](https://togithub.com/dragonflydb/dragonfly/pull/3303)
- chore: On invalid TTL, print the TTL first by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3306](https://togithub.com/dragonflydb/dragonfly/pull/3306)
- chore: moving functions + renaming in tiered storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3304](https://togithub.com/dragonflydb/dragonfly/pull/3304)
- fix(tests): Add missing awaits by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3273](https://togithub.com/dragonflydb/dragonfly/pull/3273)
- chore: refactoring around tiered storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3299](https://togithub.com/dragonflydb/dragonfly/pull/3299)
- feat: yield when serialization is in progress by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3220](https://togithub.com/dragonflydb/dragonfly/pull/3220)
- refactor: Use `DbContext`, `OpArgs` and `Transaction` to access
`DbSlice` by [@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3311](https://togithub.com/dragonflydb/dragonfly/pull/3311)
- chore: Separate tiered serialization format from object values by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3310](https://togithub.com/dragonflydb/dragonfly/pull/3310)
- chore: add more community links to README by
[@&#8203;Niennienzz](https://togithub.com/Niennienzz) in
[https://github.com/dragonflydb/dragonfly/pull/3308](https://togithub.com/dragonflydb/dragonfly/pull/3308)
- fix(cluster): Join on specified attempt id by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3305](https://togithub.com/dragonflydb/dragonfly/pull/3305)
- chore(acl): add test with requirepass and aclfile by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3312](https://togithub.com/dragonflydb/dragonfly/pull/3312)
- chore: skip test_cluster_flushall_during_migration by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3316](https://togithub.com/dragonflydb/dragonfly/pull/3316)
- fix (pytest): generate unique random dbfilename for tests by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3317](https://togithub.com/dragonflydb/dragonfly/pull/3317)
- chore: bypass decoding/encoding of the data when performing offloading
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3315](https://togithub.com/dragonflydb/dragonfly/pull/3315)
- refactor: acl helpers and global tables by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3309](https://togithub.com/dragonflydb/dragonfly/pull/3309)
- chore(tiering): Fixes by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3225](https://togithub.com/dragonflydb/dragonfly/pull/3225)
- fix(migration): Use transactions! by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3266](https://togithub.com/dragonflydb/dragonfly/pull/3266)
- fix: forbid DFLYCLUSTER commads set for emulated cluster mode by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3307](https://togithub.com/dragonflydb/dragonfly/pull/3307)
- feat(namespaces): Initial support for multi-tenant by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3260](https://togithub.com/dragonflydb/dragonfly/pull/3260)
- chore: improve dfly_bench stats by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3320](https://togithub.com/dragonflydb/dragonfly/pull/3320)
- chore: remove replace_deleted flag from hnswlib by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3323](https://togithub.com/dragonflydb/dragonfly/pull/3323)
- feat(test): Improve benchmark workflow by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3330](https://togithub.com/dragonflydb/dragonfly/pull/3330)
- fix: Proper shutdown sequence with Namespaces by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3333](https://togithub.com/dragonflydb/dragonfly/pull/3333)
- fix(test): copy logs for failed test during TEARDOWN phase by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3331](https://togithub.com/dragonflydb/dragonfly/pull/3331)
- fix(json_family): fix JSON.STRAPPEND command for JSON legacy mode by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3264](https://togithub.com/dragonflydb/dragonfly/pull/3264)
- chore(tiering): add protection against overruning memory budget by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3327](https://togithub.com/dragonflydb/dragonfly/pull/3327)
- chore: Add coordinated omission mode by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3332](https://togithub.com/dragonflydb/dragonfly/pull/3332)
- chore: implement sequential pass without the overlapping traffic by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3335](https://togithub.com/dragonflydb/dragonfly/pull/3335)
- feat: add an option to flush serialized entries on threshold limit by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3241](https://togithub.com/dragonflydb/dragonfly/pull/3241)
- feat(hset_family): Add NX option to HSETEX by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3295](https://togithub.com/dragonflydb/dragonfly/pull/3295)
- Fix blocking commands moved error by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3334](https://togithub.com/dragonflydb/dragonfly/pull/3334)
- fix: ub in RegisterOnChange and regression tests for big values by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3336](https://togithub.com/dragonflydb/dragonfly/pull/3336)
- fix: Cancel outgoing migration when retrying / closing by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3339](https://togithub.com/dragonflydb/dragonfly/pull/3339)
- chore: Make KeyIndex iterable by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3326](https://togithub.com/dragonflydb/dragonfly/pull/3326)
- fix: AllocationTracker::Remove return value was reversed by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3341](https://togithub.com/dragonflydb/dragonfly/pull/3341)
- chore: remove redundant metrics from memory stats by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3345](https://togithub.com/dragonflydb/dragonfly/pull/3345)
- fix: corruption in replication stream by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3344](https://togithub.com/dragonflydb/dragonfly/pull/3344)
- chore: clean up TaskQueue since we do not need multiple fibers for it
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3348](https://togithub.com/dragonflydb/dragonfly/pull/3348)
- chore: pull helio by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3350](https://togithub.com/dragonflydb/dragonfly/pull/3350)
- chore: Log connection context when issuing dangerous cmds by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3352](https://togithub.com/dragonflydb/dragonfly/pull/3352)
- chore: small rename and add dcheck on LocalBlockingCounter by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3356](https://togithub.com/dragonflydb/dragonfly/pull/3356)
- refactor: reduce number of logs for cluster by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3357](https://togithub.com/dragonflydb/dragonfly/pull/3357)
- chore: fixes to dfly_bench by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3353](https://togithub.com/dragonflydb/dragonfly/pull/3353)
- chore: fix test_parser_memory_stats flakiness by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3354](https://togithub.com/dragonflydb/dragonfly/pull/3354)
- chore(server): Introduce StringSetWrapper by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3347](https://togithub.com/dragonflydb/dragonfly/pull/3347)
- fix: do not upload offload values on a first hit by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3360](https://togithub.com/dragonflydb/dragonfly/pull/3360)
- chore(tiering): Range functions + small refactoring by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3207](https://togithub.com/dragonflydb/dragonfly/pull/3207)
- fix: failure in test_cluster_fuzzymigration by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3363](https://togithub.com/dragonflydb/dragonfly/pull/3363)
- fix(server): Require >=1 args to `GETEX` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3366](https://togithub.com/dragonflydb/dragonfly/pull/3366)
- fix(transaction): Fix namespace access by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3364](https://togithub.com/dragonflydb/dragonfly/pull/3364)
- chore: disable compression on big values by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3358](https://togithub.com/dragonflydb/dragonfly/pull/3358)
- fix: protect OnJournalEntry with ConditionGuard by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3367](https://togithub.com/dragonflydb/dragonfly/pull/3367)
- chore: Introduce CoolQueue by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3365](https://togithub.com/dragonflydb/dragonfly/pull/3365)
- chore: small fixes around tiering by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3368](https://togithub.com/dragonflydb/dragonfly/pull/3368)
- chore: add a test for HeapSize() function by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3349](https://togithub.com/dragonflydb/dragonfly/pull/3349)
- chore: simplify computation of used_mem_current by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3372](https://togithub.com/dragonflydb/dragonfly/pull/3372)
- chore: disable cluster_fuzzymigration by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3373](https://togithub.com/dragonflydb/dragonfly/pull/3373)
- chore(replica): remove unused methods in the Replica class by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3374](https://togithub.com/dragonflydb/dragonfly/pull/3374)
- fix(transaction): Properly store block cancel status by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3371](https://togithub.com/dragonflydb/dragonfly/pull/3371)
- chore: Track db_slice table memory instantly by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3375](https://togithub.com/dragonflydb/dragonfly/pull/3375)
- chore: add mem test for big values and default the flag by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3369](https://togithub.com/dragonflydb/dragonfly/pull/3369)
- update: replication_acks_interval flag to 1000 by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3378](https://togithub.com/dragonflydb/dragonfly/pull/3378)
- chore: dfly_bench - print ongoing error counts by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3382](https://togithub.com/dragonflydb/dragonfly/pull/3382)
- chore: introduce a cool queue that gradually retires cool items by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3377](https://togithub.com/dragonflydb/dragonfly/pull/3377)
- chore: update cached stats inside PollExecution by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3376](https://togithub.com/dragonflydb/dragonfly/pull/3376)
- fix: Fix `test_take_over_seeder` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3385](https://togithub.com/dragonflydb/dragonfly/pull/3385)
- chore: reenable evictions upon insertion to avoid OOM rejections by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3387](https://togithub.com/dragonflydb/dragonfly/pull/3387)
- fix: remove fiber guard from non atomic section by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3381](https://togithub.com/dragonflydb/dragonfly/pull/3381)
- chore: do not preempt on db_slice::RegisterOnChange by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3388](https://togithub.com/dragonflydb/dragonfly/pull/3388)
- fix: disable inline transactions when db_slice has registered
callbacks by [@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3391](https://togithub.com/dragonflydb/dragonfly/pull/3391)
- fix: test_big_value_serialization_memory_limit shutdown timeout by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3390](https://togithub.com/dragonflydb/dragonfly/pull/3390)
- chore: set serialization_max_chunk_size to 1 byte by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3379](https://togithub.com/dragonflydb/dragonfly/pull/3379)
- chore: tiered fixes by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3393](https://togithub.com/dragonflydb/dragonfly/pull/3393)
- fix(acl): remove none from acl categories by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3392](https://togithub.com/dragonflydb/dragonfly/pull/3392)
- chore: tiering - make Modify work with cool storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3395](https://togithub.com/dragonflydb/dragonfly/pull/3395)
- fix: Fix unsupported object type rejson-rl in RedisInsight by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3384](https://togithub.com/dragonflydb/dragonfly/pull/3384)
- Revert "chore: set serialization_max_chunk_size to 1 byte
([#&#8203;3379](https://togithub.com/dragonflydb/dragonfly/issues/3379))"
by [@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3398](https://togithub.com/dragonflydb/dragonfly/pull/3398)
- chore(tiering): Move cool entry warmup to DbSlice by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3397](https://togithub.com/dragonflydb/dragonfly/pull/3397)
- fix: reenable macos builds by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3399](https://togithub.com/dragonflydb/dragonfly/pull/3399)
- chore: Don't print password to log on replica `AUTH` failure by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3403](https://togithub.com/dragonflydb/dragonfly/pull/3403)
- chore: Support setting the value of `replica-priority` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3400](https://togithub.com/dragonflydb/dragonfly/pull/3400)
- feat: stabilize non-coordinated omission mode by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3407](https://togithub.com/dragonflydb/dragonfly/pull/3407)
- chore: cancel slot migrations on shutdown by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3405](https://togithub.com/dragonflydb/dragonfly/pull/3405)
- chore: add db_slice lock to protect segments from preemptions by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3406](https://togithub.com/dragonflydb/dragonfly/pull/3406)
- chore: increase timeout of regression tests by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3412](https://togithub.com/dragonflydb/dragonfly/pull/3412)
- fix: crash with NS in multi/exec
[#&#8203;3410](https://togithub.com/dragonflydb/dragonfly/issues/3410)
by [@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3415](https://togithub.com/dragonflydb/dragonfly/pull/3415)
- fix: json.merge exception crash by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3409](https://togithub.com/dragonflydb/dragonfly/pull/3409)
- fix(connection): Count memchached pipelined commands by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3413](https://togithub.com/dragonflydb/dragonfly/pull/3413)
- chore: remove verbose printing of tests by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3420](https://togithub.com/dragonflydb/dragonfly/pull/3420)
- chore: Tiered fixes by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3401](https://togithub.com/dragonflydb/dragonfly/pull/3401)
- feat: Support non-root paths for json.merge by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3419](https://togithub.com/dragonflydb/dragonfly/pull/3419)
- chore: skip cluster tests if redis-server wasn't found by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3416](https://togithub.com/dragonflydb/dragonfly/pull/3416)
- chore: expose metric that shows how many task submitters are blocked
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3427](https://togithub.com/dragonflydb/dragonfly/pull/3427)
- chore: optimize SendStringArrInternal even more by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3425](https://togithub.com/dragonflydb/dragonfly/pull/3425)
- fix(server): Implement SCRIPT GC command by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3431](https://togithub.com/dragonflydb/dragonfly/pull/3431)
- chore: retire TEST_EnableHeartBeat by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3435](https://togithub.com/dragonflydb/dragonfly/pull/3435)
- feat(server): Support `replica-announce-ip`/`port` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3421](https://togithub.com/dragonflydb/dragonfly/pull/3421)
- test(cluster): Migration replication test by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3417](https://togithub.com/dragonflydb/dragonfly/pull/3417)
- chore: improve replication locks by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3436](https://togithub.com/dragonflydb/dragonfly/pull/3436)
- chore: reorganize EngineShard::Heartbeat by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3437](https://togithub.com/dragonflydb/dragonfly/pull/3437)
- chore: fix memcached pipeline test by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3438](https://togithub.com/dragonflydb/dragonfly/pull/3438)
- chore: simplify master replication cancelation interface by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3439](https://togithub.com/dragonflydb/dragonfly/pull/3439)
- chore: reset serialization_max_chunk_size to 0 by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3432](https://togithub.com/dragonflydb/dragonfly/pull/3432)
- feat: DEBUG REPLICA PAUSE now pauses fullsync by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3441](https://togithub.com/dragonflydb/dragonfly/pull/3441)
- test: fix test_disconnect_replica by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3442](https://togithub.com/dragonflydb/dragonfly/pull/3442)
- fix: cluster_mgr.py to use `CLUSTER MYID` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3444](https://togithub.com/dragonflydb/dragonfly/pull/3444)
- chore: disable serialization_max_chunk_size in regtests by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3445](https://togithub.com/dragonflydb/dragonfly/pull/3445)
- fix: properly seriailize meta buffer in SendStringArrInternal by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3455](https://togithub.com/dragonflydb/dragonfly/pull/3455)

**Full Changelog**:
dragonflydb/dragonfly@v1.20.0...v1.21.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yMS4wIiwidXBkYXRlZEluVmVyIjoiMzguMjEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->

Co-authored-by: kireque-bot[bot] <143391978+kireque-bot[bot]@users.noreply.github.com>
lumiere-bot bot referenced this pull request in coolguy1771/home-ops Aug 8, 2024
…21.0 ) (#5180)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/dragonflydb/dragonfly](https://togithub.com/dragonflydb/dragonfly)
| minor | `v1.20.1` -> `v1.21.0` |

---

### Release Notes

<details>
<summary>dragonflydb/dragonfly (ghcr.io/dragonflydb/dragonfly)</summary>

###
[`v1.21.0`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.0)

[Compare
Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.20.1...v1.21.0)

##### Dragonfly v1.21.0

Some prominent changes include:

- Alpha release of SSD Data tiering - enabled with flag `--prefix
some/path/basename`
- Very basic support of multi-tenancy
[@&#8203;3260](https://togithub.com/3260)
- HSETEX now supports NX option, see [our
docs](https://www.dragonflydb.io/docs/command-reference/hashes/hsetex).
-   Added support for JSON.MERGE and for JSON.MSET.
- valkey's replica-announce-ip and --cluster--announc--ip are
consolidated via `--announce-ip` flag.

##### What's Changed

- feat(server): master stop sending exec opcode to replica by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3289](https://togithub.com/dragonflydb/dragonfly/pull/3289)
- chore: optimize zpopminmax operations by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3291](https://togithub.com/dragonflydb/dragonfly/pull/3291)
- fix(json_family): Fix error in JsonFamilyTest.MGet by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3285](https://togithub.com/dragonflydb/dragonfly/pull/3285)
- fix: define macro WITH_AWS in cmake when flag is ON by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3296](https://togithub.com/dragonflydb/dragonfly/pull/3296)
- chore: Add 'memory arena show' command by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3298](https://togithub.com/dragonflydb/dragonfly/pull/3298)
- fix: missing logs on pytest failures
[#&#8203;3255](https://togithub.com/dragonflydb/dragonfly/issues/3255)
by [@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3272](https://togithub.com/dragonflydb/dragonfly/pull/3272)
- chore: refactor compact_object and introduce materialize method by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3300](https://togithub.com/dragonflydb/dragonfly/pull/3300)
- fix(acl): loading interleaved plain and hashed passwords by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3297](https://togithub.com/dragonflydb/dragonfly/pull/3297)
- chore: Add CompactObj Raw methods by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3303](https://togithub.com/dragonflydb/dragonfly/pull/3303)
- chore: On invalid TTL, print the TTL first by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3306](https://togithub.com/dragonflydb/dragonfly/pull/3306)
- chore: moving functions + renaming in tiered storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3304](https://togithub.com/dragonflydb/dragonfly/pull/3304)
- fix(tests): Add missing awaits by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3273](https://togithub.com/dragonflydb/dragonfly/pull/3273)
- chore: refactoring around tiered storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3299](https://togithub.com/dragonflydb/dragonfly/pull/3299)
- feat: yield when serialization is in progress by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3220](https://togithub.com/dragonflydb/dragonfly/pull/3220)
- refactor: Use `DbContext`, `OpArgs` and `Transaction` to access
`DbSlice` by [@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3311](https://togithub.com/dragonflydb/dragonfly/pull/3311)
- chore: Separate tiered serialization format from object values by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3310](https://togithub.com/dragonflydb/dragonfly/pull/3310)
- chore: add more community links to README by
[@&#8203;Niennienzz](https://togithub.com/Niennienzz) in
[https://github.com/dragonflydb/dragonfly/pull/3308](https://togithub.com/dragonflydb/dragonfly/pull/3308)
- fix(cluster): Join on specified attempt id by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3305](https://togithub.com/dragonflydb/dragonfly/pull/3305)
- chore(acl): add test with requirepass and aclfile by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3312](https://togithub.com/dragonflydb/dragonfly/pull/3312)
- chore: skip test_cluster_flushall_during_migration by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3316](https://togithub.com/dragonflydb/dragonfly/pull/3316)
- fix (pytest): generate unique random dbfilename for tests by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3317](https://togithub.com/dragonflydb/dragonfly/pull/3317)
- chore: bypass decoding/encoding of the data when performing offloading
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3315](https://togithub.com/dragonflydb/dragonfly/pull/3315)
- refactor: acl helpers and global tables by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3309](https://togithub.com/dragonflydb/dragonfly/pull/3309)
- chore(tiering): Fixes by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3225](https://togithub.com/dragonflydb/dragonfly/pull/3225)
- fix(migration): Use transactions! by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3266](https://togithub.com/dragonflydb/dragonfly/pull/3266)
- fix: forbid DFLYCLUSTER commads set for emulated cluster mode by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3307](https://togithub.com/dragonflydb/dragonfly/pull/3307)
- feat(namespaces): Initial support for multi-tenant by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3260](https://togithub.com/dragonflydb/dragonfly/pull/3260)
- chore: improve dfly_bench stats by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3320](https://togithub.com/dragonflydb/dragonfly/pull/3320)
- chore: remove replace_deleted flag from hnswlib by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3323](https://togithub.com/dragonflydb/dragonfly/pull/3323)
- feat(test): Improve benchmark workflow by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3330](https://togithub.com/dragonflydb/dragonfly/pull/3330)
- fix: Proper shutdown sequence with Namespaces by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3333](https://togithub.com/dragonflydb/dragonfly/pull/3333)
- fix(test): copy logs for failed test during TEARDOWN phase by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3331](https://togithub.com/dragonflydb/dragonfly/pull/3331)
- fix(json_family): fix JSON.STRAPPEND command for JSON legacy mode by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3264](https://togithub.com/dragonflydb/dragonfly/pull/3264)
- chore(tiering): add protection against overruning memory budget by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3327](https://togithub.com/dragonflydb/dragonfly/pull/3327)
- chore: Add coordinated omission mode by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3332](https://togithub.com/dragonflydb/dragonfly/pull/3332)
- chore: implement sequential pass without the overlapping traffic by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3335](https://togithub.com/dragonflydb/dragonfly/pull/3335)
- feat: add an option to flush serialized entries on threshold limit by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3241](https://togithub.com/dragonflydb/dragonfly/pull/3241)
- feat(hset_family): Add NX option to HSETEX by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3295](https://togithub.com/dragonflydb/dragonfly/pull/3295)
- Fix blocking commands moved error by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3334](https://togithub.com/dragonflydb/dragonfly/pull/3334)
- fix: ub in RegisterOnChange and regression tests for big values by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3336](https://togithub.com/dragonflydb/dragonfly/pull/3336)
- fix: Cancel outgoing migration when retrying / closing by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3339](https://togithub.com/dragonflydb/dragonfly/pull/3339)
- chore: Make KeyIndex iterable by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3326](https://togithub.com/dragonflydb/dragonfly/pull/3326)
- fix: AllocationTracker::Remove return value was reversed by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3341](https://togithub.com/dragonflydb/dragonfly/pull/3341)
- chore: remove redundant metrics from memory stats by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3345](https://togithub.com/dragonflydb/dragonfly/pull/3345)
- fix: corruption in replication stream by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3344](https://togithub.com/dragonflydb/dragonfly/pull/3344)
- chore: clean up TaskQueue since we do not need multiple fibers for it
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3348](https://togithub.com/dragonflydb/dragonfly/pull/3348)
- chore: pull helio by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3350](https://togithub.com/dragonflydb/dragonfly/pull/3350)
- chore: Log connection context when issuing dangerous cmds by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3352](https://togithub.com/dragonflydb/dragonfly/pull/3352)
- chore: small rename and add dcheck on LocalBlockingCounter by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3356](https://togithub.com/dragonflydb/dragonfly/pull/3356)
- refactor: reduce number of logs for cluster by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3357](https://togithub.com/dragonflydb/dragonfly/pull/3357)
- chore: fixes to dfly_bench by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3353](https://togithub.com/dragonflydb/dragonfly/pull/3353)
- chore: fix test_parser_memory_stats flakiness by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3354](https://togithub.com/dragonflydb/dragonfly/pull/3354)
- chore(server): Introduce StringSetWrapper by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3347](https://togithub.com/dragonflydb/dragonfly/pull/3347)
- fix: do not upload offload values on a first hit by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3360](https://togithub.com/dragonflydb/dragonfly/pull/3360)
- chore(tiering): Range functions + small refactoring by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3207](https://togithub.com/dragonflydb/dragonfly/pull/3207)
- fix: failure in test_cluster_fuzzymigration by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3363](https://togithub.com/dragonflydb/dragonfly/pull/3363)
- fix(server): Require >=1 args to `GETEX` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3366](https://togithub.com/dragonflydb/dragonfly/pull/3366)
- fix(transaction): Fix namespace access by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3364](https://togithub.com/dragonflydb/dragonfly/pull/3364)
- chore: disable compression on big values by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3358](https://togithub.com/dragonflydb/dragonfly/pull/3358)
- fix: protect OnJournalEntry with ConditionGuard by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3367](https://togithub.com/dragonflydb/dragonfly/pull/3367)
- chore: Introduce CoolQueue by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3365](https://togithub.com/dragonflydb/dragonfly/pull/3365)
- chore: small fixes around tiering by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3368](https://togithub.com/dragonflydb/dragonfly/pull/3368)
- chore: add a test for HeapSize() function by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3349](https://togithub.com/dragonflydb/dragonfly/pull/3349)
- chore: simplify computation of used_mem_current by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3372](https://togithub.com/dragonflydb/dragonfly/pull/3372)
- chore: disable cluster_fuzzymigration by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3373](https://togithub.com/dragonflydb/dragonfly/pull/3373)
- chore(replica): remove unused methods in the Replica class by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3374](https://togithub.com/dragonflydb/dragonfly/pull/3374)
- fix(transaction): Properly store block cancel status by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3371](https://togithub.com/dragonflydb/dragonfly/pull/3371)
- chore: Track db_slice table memory instantly by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3375](https://togithub.com/dragonflydb/dragonfly/pull/3375)
- chore: add mem test for big values and default the flag by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3369](https://togithub.com/dragonflydb/dragonfly/pull/3369)
- update: replication_acks_interval flag to 1000 by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3378](https://togithub.com/dragonflydb/dragonfly/pull/3378)
- chore: dfly_bench - print ongoing error counts by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3382](https://togithub.com/dragonflydb/dragonfly/pull/3382)
- chore: introduce a cool queue that gradually retires cool items by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3377](https://togithub.com/dragonflydb/dragonfly/pull/3377)
- chore: update cached stats inside PollExecution by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3376](https://togithub.com/dragonflydb/dragonfly/pull/3376)
- fix: Fix `test_take_over_seeder` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3385](https://togithub.com/dragonflydb/dragonfly/pull/3385)
- chore: reenable evictions upon insertion to avoid OOM rejections by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3387](https://togithub.com/dragonflydb/dragonfly/pull/3387)
- fix: remove fiber guard from non atomic section by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3381](https://togithub.com/dragonflydb/dragonfly/pull/3381)
- chore: do not preempt on db_slice::RegisterOnChange by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3388](https://togithub.com/dragonflydb/dragonfly/pull/3388)
- fix: disable inline transactions when db_slice has registered
callbacks by [@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3391](https://togithub.com/dragonflydb/dragonfly/pull/3391)
- fix: test_big_value_serialization_memory_limit shutdown timeout by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3390](https://togithub.com/dragonflydb/dragonfly/pull/3390)
- chore: set serialization_max_chunk_size to 1 byte by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3379](https://togithub.com/dragonflydb/dragonfly/pull/3379)
- chore: tiered fixes by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3393](https://togithub.com/dragonflydb/dragonfly/pull/3393)
- fix(acl): remove none from acl categories by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3392](https://togithub.com/dragonflydb/dragonfly/pull/3392)
- chore: tiering - make Modify work with cool storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3395](https://togithub.com/dragonflydb/dragonfly/pull/3395)
- fix: Fix unsupported object type rejson-rl in RedisInsight by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3384](https://togithub.com/dragonflydb/dragonfly/pull/3384)
- Revert "chore: set serialization_max_chunk_size to 1 byte
([#&#8203;3379](https://togithub.com/dragonflydb/dragonfly/issues/3379))"
by [@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3398](https://togithub.com/dragonflydb/dragonfly/pull/3398)
- chore(tiering): Move cool entry warmup to DbSlice by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3397](https://togithub.com/dragonflydb/dragonfly/pull/3397)
- fix: reenable macos builds by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3399](https://togithub.com/dragonflydb/dragonfly/pull/3399)
- chore: Don't print password to log on replica `AUTH` failure by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3403](https://togithub.com/dragonflydb/dragonfly/pull/3403)
- chore: Support setting the value of `replica-priority` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3400](https://togithub.com/dragonflydb/dragonfly/pull/3400)
- feat: stabilize non-coordinated omission mode by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3407](https://togithub.com/dragonflydb/dragonfly/pull/3407)
- chore: cancel slot migrations on shutdown by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3405](https://togithub.com/dragonflydb/dragonfly/pull/3405)
- chore: add db_slice lock to protect segments from preemptions by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3406](https://togithub.com/dragonflydb/dragonfly/pull/3406)
- chore: increase timeout of regression tests by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3412](https://togithub.com/dragonflydb/dragonfly/pull/3412)
- fix: crash with NS in multi/exec
[#&#8203;3410](https://togithub.com/dragonflydb/dragonfly/issues/3410)
by [@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3415](https://togithub.com/dragonflydb/dragonfly/pull/3415)
- fix: json.merge exception crash by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3409](https://togithub.com/dragonflydb/dragonfly/pull/3409)
- fix(connection): Count memchached pipelined commands by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3413](https://togithub.com/dragonflydb/dragonfly/pull/3413)
- chore: remove verbose printing of tests by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3420](https://togithub.com/dragonflydb/dragonfly/pull/3420)
- chore: Tiered fixes by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3401](https://togithub.com/dragonflydb/dragonfly/pull/3401)
- feat: Support non-root paths for json.merge by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3419](https://togithub.com/dragonflydb/dragonfly/pull/3419)
- chore: skip cluster tests if redis-server wasn't found by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3416](https://togithub.com/dragonflydb/dragonfly/pull/3416)
- chore: expose metric that shows how many task submitters are blocked
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3427](https://togithub.com/dragonflydb/dragonfly/pull/3427)
- chore: optimize SendStringArrInternal even more by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3425](https://togithub.com/dragonflydb/dragonfly/pull/3425)
- fix(server): Implement SCRIPT GC command by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3431](https://togithub.com/dragonflydb/dragonfly/pull/3431)
- chore: retire TEST_EnableHeartBeat by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3435](https://togithub.com/dragonflydb/dragonfly/pull/3435)
- feat(server): Support `replica-announce-ip`/`port` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3421](https://togithub.com/dragonflydb/dragonfly/pull/3421)
- test(cluster): Migration replication test by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3417](https://togithub.com/dragonflydb/dragonfly/pull/3417)
- chore: improve replication locks by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3436](https://togithub.com/dragonflydb/dragonfly/pull/3436)
- chore: reorganize EngineShard::Heartbeat by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3437](https://togithub.com/dragonflydb/dragonfly/pull/3437)
- chore: fix memcached pipeline test by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3438](https://togithub.com/dragonflydb/dragonfly/pull/3438)
- chore: simplify master replication cancelation interface by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3439](https://togithub.com/dragonflydb/dragonfly/pull/3439)
- chore: reset serialization_max_chunk_size to 0 by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3432](https://togithub.com/dragonflydb/dragonfly/pull/3432)
- feat: DEBUG REPLICA PAUSE now pauses fullsync by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3441](https://togithub.com/dragonflydb/dragonfly/pull/3441)
- test: fix test_disconnect_replica by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3442](https://togithub.com/dragonflydb/dragonfly/pull/3442)
- fix: cluster_mgr.py to use `CLUSTER MYID` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3444](https://togithub.com/dragonflydb/dragonfly/pull/3444)
- chore: disable serialization_max_chunk_size in regtests by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3445](https://togithub.com/dragonflydb/dragonfly/pull/3445)
- fix: properly seriailize meta buffer in SendStringArrInternal by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3455](https://togithub.com/dragonflydb/dragonfly/pull/3455)

**Full Changelog**:
dragonflydb/dragonfly@v1.20.0...v1.21.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yMS4wIiwidXBkYXRlZEluVmVyIjoiMzguMjEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->

Co-authored-by: lumiere-bot[bot] <98047013+lumiere-bot[bot]@users.noreply.github.com>
spiceratops referenced this pull request in spiceratops/k8s-gitops Aug 20, 2024
#894)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/dragonflydb/dragonfly](https://togithub.com/dragonflydb/dragonfly)
| minor | `v1.20.1` -> `v1.21.2` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>dragonflydb/dragonfly (ghcr.io/dragonflydb/dragonfly)</summary>

###
[`v1.21.2`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.2)

[Compare
Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.21.1...v1.21.2)

##### Dragonfly v1.21.2

This is a patch release.

fix: disable code that can cause potential deadlocks during the
replication
([#&#8203;3521](https://togithub.com/dragonflydb/dragonfly/issues/3521))

This follows up on **[Dragonfly
v1.21.0](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.0)**
release, that includes the following prominent features:

- Alpha release of SSD Data tiering - enabled with flag `--tiered_prefix
some/path/basename`
- Very basic support of multi-tenancy
[#&#8203;3260](https://togithub.com/dragonflydb/dragonfly/issues/3260)
- HSETEX now supports NX option, see [our
docs](https://www.dragonflydb.io/docs/command-reference/hashes/hsetex).
-   Added support for JSON.MERGE and for JSON.MSET.
- valkey's replica-announce-ip and --cluster--announc--ip are
consolidated via `--announce-ip` flag.

**Full Changelog**:
dragonflydb/dragonfly@v1.21.1...v1.21.2

###
[`v1.21.1`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.1)

[Compare
Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.21.0...v1.21.1)

##### Dragonfly v1.21.1

This is a patch release.

fix: the replication from older masters to newer versions
([#&#8203;3473](https://togithub.com/dragonflydb/dragonfly/issues/3473))

This follows up on **[Dragonfly
v1.21.0](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.0)**
release, that includes the following prominent features:

- Alpha release of SSD Data tiering - enabled with flag `--tiered_prefix
some/path/basename`
- Very basic support of multi-tenancy
[@&#8203;3260](https://togithub.com/3260)
- HSETEX now supports NX option, see [our
docs](https://www.dragonflydb.io/docs/command-reference/hashes/hsetex).
-   Added support for JSON.MERGE and for JSON.MSET.
- valkey's replica-announce-ip and --cluster--announc--ip are
consolidated via `--announce-ip` flag.

###
[`v1.21.0`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.21.0)

[Compare
Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.20.1...v1.21.0)

##### Dragonfly v1.21.0

Some prominent changes include:

- Alpha release of SSD Data tiering - enabled with flag `--prefix
some/path/basename`
- Very basic support of multi-tenancy
[@&#8203;3260](https://togithub.com/3260)
- HSETEX now supports NX option, see [our
docs](https://www.dragonflydb.io/docs/command-reference/hashes/hsetex).
-   Added support for JSON.MERGE and for JSON.MSET.
- valkey's replica-announce-ip and --cluster--announc--ip are
consolidated via `--announce-ip` flag.

##### What's Changed

- feat(server): master stop sending exec opcode to replica by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3289](https://togithub.com/dragonflydb/dragonfly/pull/3289)
- chore: optimize zpopminmax operations by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3291](https://togithub.com/dragonflydb/dragonfly/pull/3291)
- fix(json_family): Fix error in JsonFamilyTest.MGet by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3285](https://togithub.com/dragonflydb/dragonfly/pull/3285)
- fix: define macro WITH_AWS in cmake when flag is ON by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3296](https://togithub.com/dragonflydb/dragonfly/pull/3296)
- chore: Add 'memory arena show' command by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3298](https://togithub.com/dragonflydb/dragonfly/pull/3298)
- fix: missing logs on pytest failures
[#&#8203;3255](https://togithub.com/dragonflydb/dragonfly/issues/3255)
by [@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3272](https://togithub.com/dragonflydb/dragonfly/pull/3272)
- chore: refactor compact_object and introduce materialize method by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3300](https://togithub.com/dragonflydb/dragonfly/pull/3300)
- fix(acl): loading interleaved plain and hashed passwords by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3297](https://togithub.com/dragonflydb/dragonfly/pull/3297)
- chore: Add CompactObj Raw methods by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3303](https://togithub.com/dragonflydb/dragonfly/pull/3303)
- chore: On invalid TTL, print the TTL first by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3306](https://togithub.com/dragonflydb/dragonfly/pull/3306)
- chore: moving functions + renaming in tiered storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3304](https://togithub.com/dragonflydb/dragonfly/pull/3304)
- fix(tests): Add missing awaits by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3273](https://togithub.com/dragonflydb/dragonfly/pull/3273)
- chore: refactoring around tiered storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3299](https://togithub.com/dragonflydb/dragonfly/pull/3299)
- feat: yield when serialization is in progress by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3220](https://togithub.com/dragonflydb/dragonfly/pull/3220)
- refactor: Use `DbContext`, `OpArgs` and `Transaction` to access
`DbSlice` by [@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3311](https://togithub.com/dragonflydb/dragonfly/pull/3311)
- chore: Separate tiered serialization format from object values by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3310](https://togithub.com/dragonflydb/dragonfly/pull/3310)
- chore: add more community links to README by
[@&#8203;Niennienzz](https://togithub.com/Niennienzz) in
[https://github.com/dragonflydb/dragonfly/pull/3308](https://togithub.com/dragonflydb/dragonfly/pull/3308)
- fix(cluster): Join on specified attempt id by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3305](https://togithub.com/dragonflydb/dragonfly/pull/3305)
- chore(acl): add test with requirepass and aclfile by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3312](https://togithub.com/dragonflydb/dragonfly/pull/3312)
- chore: skip test_cluster_flushall_during_migration by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3316](https://togithub.com/dragonflydb/dragonfly/pull/3316)
- fix (pytest): generate unique random dbfilename for tests by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3317](https://togithub.com/dragonflydb/dragonfly/pull/3317)
- chore: bypass decoding/encoding of the data when performing offloading
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3315](https://togithub.com/dragonflydb/dragonfly/pull/3315)
- refactor: acl helpers and global tables by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3309](https://togithub.com/dragonflydb/dragonfly/pull/3309)
- chore(tiering): Fixes by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3225](https://togithub.com/dragonflydb/dragonfly/pull/3225)
- fix(migration): Use transactions! by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3266](https://togithub.com/dragonflydb/dragonfly/pull/3266)
- fix: forbid DFLYCLUSTER commads set for emulated cluster mode by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3307](https://togithub.com/dragonflydb/dragonfly/pull/3307)
- feat(namespaces): Initial support for multi-tenant by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3260](https://togithub.com/dragonflydb/dragonfly/pull/3260)
- chore: improve dfly_bench stats by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3320](https://togithub.com/dragonflydb/dragonfly/pull/3320)
- chore: remove replace_deleted flag from hnswlib by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3323](https://togithub.com/dragonflydb/dragonfly/pull/3323)
- feat(test): Improve benchmark workflow by
[@&#8203;adiholden](https://togithub.com/adiholden) in
[https://github.com/dragonflydb/dragonfly/pull/3330](https://togithub.com/dragonflydb/dragonfly/pull/3330)
- fix: Proper shutdown sequence with Namespaces by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3333](https://togithub.com/dragonflydb/dragonfly/pull/3333)
- fix(test): copy logs for failed test during TEARDOWN phase by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3331](https://togithub.com/dragonflydb/dragonfly/pull/3331)
- fix(json_family): fix JSON.STRAPPEND command for JSON legacy mode by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3264](https://togithub.com/dragonflydb/dragonfly/pull/3264)
- chore(tiering): add protection against overruning memory budget by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3327](https://togithub.com/dragonflydb/dragonfly/pull/3327)
- chore: Add coordinated omission mode by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3332](https://togithub.com/dragonflydb/dragonfly/pull/3332)
- chore: implement sequential pass without the overlapping traffic by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3335](https://togithub.com/dragonflydb/dragonfly/pull/3335)
- feat: add an option to flush serialized entries on threshold limit by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3241](https://togithub.com/dragonflydb/dragonfly/pull/3241)
- feat(hset_family): Add NX option to HSETEX by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3295](https://togithub.com/dragonflydb/dragonfly/pull/3295)
- Fix blocking commands moved error by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3334](https://togithub.com/dragonflydb/dragonfly/pull/3334)
- fix: ub in RegisterOnChange and regression tests for big values by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3336](https://togithub.com/dragonflydb/dragonfly/pull/3336)
- fix: Cancel outgoing migration when retrying / closing by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3339](https://togithub.com/dragonflydb/dragonfly/pull/3339)
- chore: Make KeyIndex iterable by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3326](https://togithub.com/dragonflydb/dragonfly/pull/3326)
- fix: AllocationTracker::Remove return value was reversed by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3341](https://togithub.com/dragonflydb/dragonfly/pull/3341)
- chore: remove redundant metrics from memory stats by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3345](https://togithub.com/dragonflydb/dragonfly/pull/3345)
- fix: corruption in replication stream by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3344](https://togithub.com/dragonflydb/dragonfly/pull/3344)
- chore: clean up TaskQueue since we do not need multiple fibers for it
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3348](https://togithub.com/dragonflydb/dragonfly/pull/3348)
- chore: pull helio by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3350](https://togithub.com/dragonflydb/dragonfly/pull/3350)
- chore: Log connection context when issuing dangerous cmds by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3352](https://togithub.com/dragonflydb/dragonfly/pull/3352)
- chore: small rename and add dcheck on LocalBlockingCounter by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3356](https://togithub.com/dragonflydb/dragonfly/pull/3356)
- refactor: reduce number of logs for cluster by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3357](https://togithub.com/dragonflydb/dragonfly/pull/3357)
- chore: fixes to dfly_bench by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3353](https://togithub.com/dragonflydb/dragonfly/pull/3353)
- chore: fix test_parser_memory_stats flakiness by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3354](https://togithub.com/dragonflydb/dragonfly/pull/3354)
- chore(server): Introduce StringSetWrapper by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3347](https://togithub.com/dragonflydb/dragonfly/pull/3347)
- fix: do not upload offload values on a first hit by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3360](https://togithub.com/dragonflydb/dragonfly/pull/3360)
- chore(tiering): Range functions + small refactoring by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3207](https://togithub.com/dragonflydb/dragonfly/pull/3207)
- fix: failure in test_cluster_fuzzymigration by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3363](https://togithub.com/dragonflydb/dragonfly/pull/3363)
- fix(server): Require >=1 args to `GETEX` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3366](https://togithub.com/dragonflydb/dragonfly/pull/3366)
- fix(transaction): Fix namespace access by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3364](https://togithub.com/dragonflydb/dragonfly/pull/3364)
- chore: disable compression on big values by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3358](https://togithub.com/dragonflydb/dragonfly/pull/3358)
- fix: protect OnJournalEntry with ConditionGuard by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3367](https://togithub.com/dragonflydb/dragonfly/pull/3367)
- chore: Introduce CoolQueue by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3365](https://togithub.com/dragonflydb/dragonfly/pull/3365)
- chore: small fixes around tiering by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3368](https://togithub.com/dragonflydb/dragonfly/pull/3368)
- chore: add a test for HeapSize() function by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3349](https://togithub.com/dragonflydb/dragonfly/pull/3349)
- chore: simplify computation of used_mem_current by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3372](https://togithub.com/dragonflydb/dragonfly/pull/3372)
- chore: disable cluster_fuzzymigration by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3373](https://togithub.com/dragonflydb/dragonfly/pull/3373)
- chore(replica): remove unused methods in the Replica class by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3374](https://togithub.com/dragonflydb/dragonfly/pull/3374)
- fix(transaction): Properly store block cancel status by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3371](https://togithub.com/dragonflydb/dragonfly/pull/3371)
- chore: Track db_slice table memory instantly by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3375](https://togithub.com/dragonflydb/dragonfly/pull/3375)
- chore: add mem test for big values and default the flag by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3369](https://togithub.com/dragonflydb/dragonfly/pull/3369)
- update: replication_acks_interval flag to 1000 by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3378](https://togithub.com/dragonflydb/dragonfly/pull/3378)
- chore: dfly_bench - print ongoing error counts by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3382](https://togithub.com/dragonflydb/dragonfly/pull/3382)
- chore: introduce a cool queue that gradually retires cool items by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3377](https://togithub.com/dragonflydb/dragonfly/pull/3377)
- chore: update cached stats inside PollExecution by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3376](https://togithub.com/dragonflydb/dragonfly/pull/3376)
- fix: Fix `test_take_over_seeder` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3385](https://togithub.com/dragonflydb/dragonfly/pull/3385)
- chore: reenable evictions upon insertion to avoid OOM rejections by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3387](https://togithub.com/dragonflydb/dragonfly/pull/3387)
- fix: remove fiber guard from non atomic section by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3381](https://togithub.com/dragonflydb/dragonfly/pull/3381)
- chore: do not preempt on db_slice::RegisterOnChange by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3388](https://togithub.com/dragonflydb/dragonfly/pull/3388)
- fix: disable inline transactions when db_slice has registered
callbacks by [@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3391](https://togithub.com/dragonflydb/dragonfly/pull/3391)
- fix: test_big_value_serialization_memory_limit shutdown timeout by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3390](https://togithub.com/dragonflydb/dragonfly/pull/3390)
- chore: set serialization_max_chunk_size to 1 byte by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3379](https://togithub.com/dragonflydb/dragonfly/pull/3379)
- chore: tiered fixes by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3393](https://togithub.com/dragonflydb/dragonfly/pull/3393)
- fix(acl): remove none from acl categories by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3392](https://togithub.com/dragonflydb/dragonfly/pull/3392)
- chore: tiering - make Modify work with cool storage by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3395](https://togithub.com/dragonflydb/dragonfly/pull/3395)
- fix: Fix unsupported object type rejson-rl in RedisInsight by
[@&#8203;BagritsevichStepan](https://togithub.com/BagritsevichStepan) in
[https://github.com/dragonflydb/dragonfly/pull/3384](https://togithub.com/dragonflydb/dragonfly/pull/3384)
- Revert "chore: set serialization_max_chunk_size to 1 byte
([#&#8203;3379](https://togithub.com/dragonflydb/dragonfly/issues/3379))"
by [@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3398](https://togithub.com/dragonflydb/dragonfly/pull/3398)
- chore(tiering): Move cool entry warmup to DbSlice by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3397](https://togithub.com/dragonflydb/dragonfly/pull/3397)
- fix: reenable macos builds by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3399](https://togithub.com/dragonflydb/dragonfly/pull/3399)
- chore: Don't print password to log on replica `AUTH` failure by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3403](https://togithub.com/dragonflydb/dragonfly/pull/3403)
- chore: Support setting the value of `replica-priority` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3400](https://togithub.com/dragonflydb/dragonfly/pull/3400)
- feat: stabilize non-coordinated omission mode by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3407](https://togithub.com/dragonflydb/dragonfly/pull/3407)
- chore: cancel slot migrations on shutdown by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3405](https://togithub.com/dragonflydb/dragonfly/pull/3405)
- chore: add db_slice lock to protect segments from preemptions by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3406](https://togithub.com/dragonflydb/dragonfly/pull/3406)
- chore: increase timeout of regression tests by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3412](https://togithub.com/dragonflydb/dragonfly/pull/3412)
- fix: crash with NS in multi/exec
[#&#8203;3410](https://togithub.com/dragonflydb/dragonfly/issues/3410)
by [@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3415](https://togithub.com/dragonflydb/dragonfly/pull/3415)
- fix: json.merge exception crash by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3409](https://togithub.com/dragonflydb/dragonfly/pull/3409)
- fix(connection): Count memchached pipelined commands by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3413](https://togithub.com/dragonflydb/dragonfly/pull/3413)
- chore: remove verbose printing of tests by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3420](https://togithub.com/dragonflydb/dragonfly/pull/3420)
- chore: Tiered fixes by [@&#8203;romange](https://togithub.com/romange)
in
[https://github.com/dragonflydb/dragonfly/pull/3401](https://togithub.com/dragonflydb/dragonfly/pull/3401)
- feat: Support non-root paths for json.merge by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3419](https://togithub.com/dragonflydb/dragonfly/pull/3419)
- chore: skip cluster tests if redis-server wasn't found by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3416](https://togithub.com/dragonflydb/dragonfly/pull/3416)
- chore: expose metric that shows how many task submitters are blocked
by [@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3427](https://togithub.com/dragonflydb/dragonfly/pull/3427)
- chore: optimize SendStringArrInternal even more by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3425](https://togithub.com/dragonflydb/dragonfly/pull/3425)
- fix(server): Implement SCRIPT GC command by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3431](https://togithub.com/dragonflydb/dragonfly/pull/3431)
- chore: retire TEST_EnableHeartBeat by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3435](https://togithub.com/dragonflydb/dragonfly/pull/3435)
- feat(server): Support `replica-announce-ip`/`port` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3421](https://togithub.com/dragonflydb/dragonfly/pull/3421)
- test(cluster): Migration replication test by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3417](https://togithub.com/dragonflydb/dragonfly/pull/3417)
- chore: improve replication locks by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3436](https://togithub.com/dragonflydb/dragonfly/pull/3436)
- chore: reorganize EngineShard::Heartbeat by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3437](https://togithub.com/dragonflydb/dragonfly/pull/3437)
- chore: fix memcached pipeline test by
[@&#8203;dranikpg](https://togithub.com/dranikpg) in
[https://github.com/dragonflydb/dragonfly/pull/3438](https://togithub.com/dragonflydb/dragonfly/pull/3438)
- chore: simplify master replication cancelation interface by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3439](https://togithub.com/dragonflydb/dragonfly/pull/3439)
- chore: reset serialization_max_chunk_size to 0 by
[@&#8203;kostasrim](https://togithub.com/kostasrim) in
[https://github.com/dragonflydb/dragonfly/pull/3432](https://togithub.com/dragonflydb/dragonfly/pull/3432)
- feat: DEBUG REPLICA PAUSE now pauses fullsync by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3441](https://togithub.com/dragonflydb/dragonfly/pull/3441)
- test: fix test_disconnect_replica by
[@&#8203;BorysTheDev](https://togithub.com/BorysTheDev) in
[https://github.com/dragonflydb/dragonfly/pull/3442](https://togithub.com/dragonflydb/dragonfly/pull/3442)
- fix: cluster_mgr.py to use `CLUSTER MYID` by
[@&#8203;chakaz](https://togithub.com/chakaz) in
[https://github.com/dragonflydb/dragonfly/pull/3444](https://togithub.com/dragonflydb/dragonfly/pull/3444)
- chore: disable serialization_max_chunk_size in regtests by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3445](https://togithub.com/dragonflydb/dragonfly/pull/3445)
- fix: properly seriailize meta buffer in SendStringArrInternal by
[@&#8203;romange](https://togithub.com/romange) in
[https://github.com/dragonflydb/dragonfly/pull/3455](https://togithub.com/dragonflydb/dragonfly/pull/3455)

**Full Changelog**:
dragonflydb/dragonfly@v1.20.0...v1.21.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yMS4wIiwidXBkYXRlZEluVmVyIjoiMzguMzcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants