-
Notifications
You must be signed in to change notification settings - Fork 949
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
refactor client tracking, fix atomicity, squashing and multi/exec #2970
Conversation
src/server/transaction.cc
Outdated
@@ -838,13 +838,23 @@ OpStatus Transaction::ScheduleSingleHop(RunnableType cb) { | |||
|
|||
// Runs in coordinator thread. | |||
void Transaction::Execute(RunnableType cb, bool conclude) { | |||
auto tracking_wrap = [cb, this](Transaction* t, EngineShard* shard) -> RunnableResult { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dranikpg this with the changes in InvokeCmd
seemed to be the most non intrusive way (to comply with the requirements of the state machine)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- I would like to understand why tracking requires transaction semantics (an example will be fine)
- why cid_ is not enough and we need
invoke_cid_
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would suggest to do it like we handle blocking commands - once it finished and manually from RunSquashedCb
dragonfly/src/server/transaction.cc
Lines 638 to 640 in a95419b
if (auto* bcontroller = shard->blocking_controller(); bcontroller) { | |
if (awaked_prerun || was_suspended) { | |
bcontroller->FinalizeWatched(GetShardArgs(idx), this); |
So it becomes if (concluding || (multi && multi_->concluding)) Track(this)
Now you don't need invoke_cid, etc there as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would like to understand why tracking requires transaction semantics (an example will be fine)
Because invalidation messages must be sent before the transaction concludes. Otherwise, we might accidentally skip them. An example would be:
>> CLIENT TRACKING ON
>> GET FOO
>> SET FOO BAR
>> GET FOO
>> SET FOO BAR
>> GET FOO ---------> might miss Invalidation message
A valid execution would be once we call the first SET
we will send an invalidation message as a separate transaction. Now before that even starts/concludes, the GET
that follows will get executed first and it will itself issue a separate transaction to send an invalidation message. Now the problem here is, that once we send an invalidation message we remove the key from the tracking map (since we only send invalidation messages once until the key is reread). Then the second invalidation transaction won't work because the key no longer exists in the map and we will never get that second invalidation message.
src/server/conn_context.cc
Outdated
@@ -119,6 +119,13 @@ void ConnectionContext::ChangeMonitor(bool start) { | |||
EnableMonitoring(start); | |||
} | |||
|
|||
ConnectionState::ClientTracking& ConnectionContext::ClientTrackingInfo() { | |||
if (parent_cntx_) { | |||
return parent_cntx_->conn_state.tracking_info_; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That;s for squashing :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you access conn_state, don't make it a function on conn_cntx
then you can just use conn_state, you can make it mutable or add a new member like conn
dragonfly/src/server/main_service.cc
Lines 214 to 215 in a95419b
if (cntx->conn_state.squashing_info) | |
cntx = cntx->conn_state.squashing_info->owner; |
src/server/main_service.cc
Outdated
@@ -1206,6 +1186,7 @@ void Service::DispatchCommand(CmdArgList args, facade::ConnectionContext* cntx) | |||
if (stored_cmd.Cid()->IsWriteOnly()) { | |||
dfly_cntx->conn_state.exec_info.is_write = true; | |||
} | |||
dfly_cntx->conn_state.tracking_info_.UpdatePrevAndLastCommand(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do you need to call it here?
src/server/conn_context.cc
Outdated
} | ||
|
||
void ConnectionState::ClientTracking::UpdatePrevAndLastCommand() { | ||
if (prev_command_ && multi_) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems that what you really want is to know if you are in the middle of EXEC execution and not multi.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We store so much fragile info that needs to be updated everywhere... seqnums would solve all this
src/server/conn_context.h
Outdated
// Enable tracking on the client | ||
void TrackClientCaching(); | ||
|
||
void UpdatePrevAndLastCommand(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: UdatePrevAndLastCommand name describes the implementation of this function. What it does is advancing the state. So I think it's better call it Tick or Advance or Update
src/server/conn_context.h
Outdated
// true if the previous command invoked is CLIENT CACHING TRUE | ||
bool prev_command_ = false; | ||
// true if the currently executing command is CLIENT CACHING TRUE | ||
bool executing_command_ = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rename: executing_command_
to track_next_cmd_
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
but the track_next_cmd_
seems misleading since it implies it's the next command. executing_command_
is the command we currently execute in InvokeCmd flow
and prev_command_
is the command before it. So:
>> GET FOO ----> prev_command
>> GET BAR ----> current_command
src/server/conn_context.h
Outdated
bool optin_ = false; | ||
// remember if CLIENT CACHING TRUE was the last command | ||
// true if the previous command invoked is CLIENT CACHING TRUE | ||
bool prev_command_ = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rename prev_command_
to track_current_cmd_
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks somewhat over engineered to me 😅 We have similar semantics in blocking commands - only that we subscribe with specific commands and not with any.
- Let's use squashing_info instead of adding a parent field to ConnectionContext or let's use that field for everything - there should be one way of doing things with proper comments, so nobody adds yet a third
- I'd still suggest to add numbers to commands, because
UpdatePrevAndLastCommand()
appears in many places and we update three whole fileds: prev, executing, multi. The track command can just store its number and we don't have to update much more - Track() should be called when we conclude or finish the current multi command, currently we call it for every hop. Not that there are multi-hop read commands, but I think it belongs to all other management code. Invoke-cid should also not be needed with that
src/server/transaction.cc
Outdated
@@ -838,13 +838,23 @@ OpStatus Transaction::ScheduleSingleHop(RunnableType cb) { | |||
|
|||
// Runs in coordinator thread. | |||
void Transaction::Execute(RunnableType cb, bool conclude) { | |||
auto tracking_wrap = [cb, this](Transaction* t, EngineShard* shard) -> RunnableResult { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would suggest to do it like we handle blocking commands - once it finished and manually from RunSquashedCb
dragonfly/src/server/transaction.cc
Lines 638 to 640 in a95419b
if (auto* bcontroller = shard->blocking_controller(); bcontroller) { | |
if (awaked_prerun || was_suspended) { | |
bcontroller->FinalizeWatched(GetShardArgs(idx), this); |
So it becomes if (concluding || (multi && multi_->concluding)) Track(this)
Now you don't need invoke_cid, etc there as well
src/server/conn_context.cc
Outdated
@@ -119,6 +119,13 @@ void ConnectionContext::ChangeMonitor(bool start) { | |||
EnableMonitoring(start); | |||
} | |||
|
|||
ConnectionState::ClientTracking& ConnectionContext::ClientTrackingInfo() { | |||
if (parent_cntx_) { | |||
return parent_cntx_->conn_state.tracking_info_; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you access conn_state, don't make it a function on conn_cntx
then you can just use conn_state, you can make it mutable or add a new member like conn
dragonfly/src/server/main_service.cc
Lines 214 to 215 in a95419b
if (cntx->conn_state.squashing_info) | |
cntx = cntx->conn_state.squashing_info->owner; |
src/server/conn_context.cc
Outdated
} | ||
|
||
void ConnectionState::ClientTracking::UpdatePrevAndLastCommand() { | ||
if (prev_command_ && multi_) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We store so much fragile info that needs to be updated everywhere... seqnums would solve all this
src/server/conn_context.h
Outdated
ConnectionContext* parent_cntx_ = nullptr; | ||
|
||
ConnectionState::ClientTracking& ClientTrackingInfo(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See previous comment on whether we can keep this in conn_state
src/facade/dragonfly_connection.cc
Outdated
@@ -1119,7 +1118,8 @@ void Connection::HandleMigrateRequest() { | |||
this->Migrate(dest); | |||
} | |||
|
|||
DCHECK(dispatch_q_.empty()); | |||
// This triggers on rueidis SingleIntegrationTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this comment can be improved. Explain how it happens that DCHECK(dispatch_q_.empty());
fails after the migration, "rueidis SingleIntegrationTest" is irrelevant here
src/server/conn_context.cc
Outdated
return OpStatus::OK; | ||
} | ||
|
||
void ConnectionState::ClientTracking::Track(ConnectionContext* cntx, const CommandId* cid) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this function now is called within the Shard. We have a convention to name it as xxxOnShard
to stress it.
src/server/conn_context.cc
Outdated
auto& info = cntx->conn_state.tracking_info_; | ||
if ((cid->opt_mask() & CO::READONLY) && cid->IsTransactional() && info.ShouldTrackKeys()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe the code can be moved to the coordinator thread, i.e. when we prepare the transaction. the result can be kept as a boolean within transaction. Nothing here is relevant to the shard or the transaction state. we have Transaction::coordinator_state_
mask that can be used for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
actually, see my other comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, info.ShouldTrackeys()
should be called after a command is invoked because that very command might be the client tracking command.
The callback
approach is neat for removing the ConnectionContext
alltogether from transaction
and in fact this is the only change needed (no fancy boolean or coordinator mask) because we just pass a callback which just captures the context :)
src/server/CMakeLists.txt
Outdated
@@ -33,14 +33,14 @@ add_library(dfly_transaction db_slice.cc malloc_stats.cc blocking_controller.cc | |||
common.cc journal/journal.cc journal/types.cc journal/journal_slice.cc | |||
server_state.cc table.cc top_keys.cc transaction.cc tx_base.cc | |||
serializer_commons.cc journal/serializer.cc journal/executor.cc journal/streamer.cc | |||
${TX_LINUX_SRCS} acl/acl_log.cc slowlog.cc | |||
${TX_LINUX_SRCS} acl/acl_log.cc slowlog.cc conn_context.cc channel_store.cc |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we do not need this move now
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good, left final minor comments.
auto* trans = cntx->transaction; | ||
const bool is_read_only = cid->opt_mask() & CO::READONLY; | ||
if (trans) { | ||
trans->SetTrackingCallback({}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why trans->SetTrackingCallback({});
? can you add a comment please?
src/server/main_service.cc
Outdated
trans->SetTrackingCallback({}); | ||
if (is_read_only && info.ShouldTrackKeys()) { | ||
auto conn = cntx->conn()->Borrow(); | ||
trans->SetTrackingCallback([trans, conn]() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a better interface for tracking callback would be to accept Transaction*
and EngineShard*
as its arguments, so the transaction can just call it with these variables instead of capturing them here.
@@ -1332,6 +1341,11 @@ bool Service::InvokeCmd(const CommandId* cid, CmdArgList tail_args, ConnectionCo | |||
return false; | |||
} | |||
|
|||
auto cid_name = cid->name(); | |||
if ((!trans && cid_name != "MULTI") || (trans && !trans->IsMulti())) { | |||
cntx->conn_state.tracking_info_.IncrementSequenceNumber(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you please add a short comment what/why we do here?
src/server/conn_context.cc
Outdated
@@ -88,7 +88,7 @@ ConnectionContext::ConnectionContext(::io::Sink* stream, facade::Connection* own | |||
acl_commands = std::vector<uint64_t>(acl::NumberOfFamilies(), acl::ALL_COMMANDS); | |||
} | |||
|
|||
ConnectionContext::ConnectionContext(const ConnectionContext* owner, Transaction* tx, | |||
ConnectionContext::ConnectionContext(ConnectionContext* owner, Transaction* tx, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we still need to remove const
here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!!!
…nfly ( v1.18.1 → v1.19.0 ) (#3784) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [docker.dragonflydb.io/dragonflydb/dragonfly](https://togithub.com/dragonflydb/dragonfly) | minor | `v1.18.1` -> `v1.19.0` | --- ### Release Notes <details> <summary>dragonflydb/dragonfly (docker.dragonflydb.io/dragonflydb/dragonfly)</summary> ### [`v1.19.0`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.19.0) [Compare Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.18.1...v1.19.0) ##### Dragonfly v1.19.0 Some prominent changes include: - SPOP and SRANDMEMBER return truly randomized results ([#​3022](https://togithub.com/dragonflydb/dragonfly/issues/3022)) - Fix memory blowup in some cases during replication ([#​3084](https://togithub.com/dragonflydb/dragonfly/issues/3084) [#​3103](https://togithub.com/dragonflydb/dragonfly/issues/3103)) - Snapshotting works with data tiering ([#​3073](https://togithub.com/dragonflydb/dragonfly/issues/3073)) - Fix incompatibility issue of RDB snapshot with Redis 6.x ([#​3121](https://togithub.com/dragonflydb/dragonfly/issues/3121)) - Memory utilization improvements + better introspection of memory usage via /metrics ##### What's Changed - chore: update versions and remove caching code by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3030](https://togithub.com/dragonflydb/dragonfly/pull/3030) - chore: fix macos tiering by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3032](https://togithub.com/dragonflydb/dragonfly/pull/3032) - feat: support subrange expressions in jsonpathv2 by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3036](https://togithub.com/dragonflydb/dragonfly/pull/3036) - fix: reduce delay when stop replica [#​3020](https://togithub.com/dragonflydb/dragonfly/issues/3020) by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3028](https://togithub.com/dragonflydb/dragonfly/pull/3028) - fix(set): fix random in SRANDMEMBER and SPOP commands by [@​BagritsevichStepan](https://togithub.com/BagritsevichStepan) in [https://github.com/dragonflydb/dragonfly/pull/3022](https://togithub.com/dragonflydb/dragonfly/pull/3022) - chore: prevent updating gcc on macos by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3037](https://togithub.com/dragonflydb/dragonfly/pull/3037) - chore: add half-range indices by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3041](https://togithub.com/dragonflydb/dragonfly/pull/3041) - chore: update helio together with new mimalloc version by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3040](https://togithub.com/dragonflydb/dragonfly/pull/3040) - fix: header for oom_errors_total by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3043](https://togithub.com/dragonflydb/dragonfly/pull/3043) - chore: reset enable_direct_fd to avoid socket leakage in kernel by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3051](https://togithub.com/dragonflydb/dragonfly/pull/3051) - chore: update deprecated actions by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3052](https://togithub.com/dragonflydb/dragonfly/pull/3052) - chore: remove unneeded check-fails by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3054](https://togithub.com/dragonflydb/dragonfly/pull/3054) - chore: Export replication memory stats by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3062](https://togithub.com/dragonflydb/dragonfly/pull/3062) - <chore>!: Update grafana panel by [@​MaoMaoCake](https://togithub.com/MaoMaoCake) in [https://github.com/dragonflydb/dragonfly/pull/3064](https://togithub.com/dragonflydb/dragonfly/pull/3064) - chore: add replication memory stats to the dashboard by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3065](https://togithub.com/dragonflydb/dragonfly/pull/3065) - chore: bpop prints by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3076](https://togithub.com/dragonflydb/dragonfly/pull/3076) - fix(tiering): wait for IO before test teardown by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3079](https://togithub.com/dragonflydb/dragonfly/pull/3079) - chore: small replayer fixes by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3081](https://togithub.com/dragonflydb/dragonfly/pull/3081) - fix: increase lua stack limit to 8KB by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3080](https://togithub.com/dragonflydb/dragonfly/pull/3080) - chore: minor fixes by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3082](https://togithub.com/dragonflydb/dragonfly/pull/3082) - fix: fix cluster incorrect keys status by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3083](https://togithub.com/dragonflydb/dragonfly/pull/3083) - fix(acl): return -NOPERM instead of response error by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3049](https://togithub.com/dragonflydb/dragonfly/pull/3049) - feat(server): Expose serialization bytes via `INFO` and `/metrics` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3087](https://togithub.com/dragonflydb/dragonfly/pull/3087) - chore(streams): Some refactoring by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3088](https://togithub.com/dragonflydb/dragonfly/pull/3088) - feat(server): remove multi shard sync from replication by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3085](https://togithub.com/dragonflydb/dragonfly/pull/3085) - fix(replication): fullsync phase write to sync on noop by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3084](https://togithub.com/dragonflydb/dragonfly/pull/3084) - fix(tiering): Async delete for small bins by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3068](https://togithub.com/dragonflydb/dragonfly/pull/3068) - fix: prevent crashing if error happened during snapshot moving by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3092](https://togithub.com/dragonflydb/dragonfly/pull/3092) - fix: add timeout for DFLYMIGRATE ACK to prevent deadlock by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3093](https://togithub.com/dragonflydb/dragonfly/pull/3093) - chore: improve Migration() by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3033](https://togithub.com/dragonflydb/dragonfly/pull/3033) - feat(streams): Stream optimizations by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3091](https://togithub.com/dragonflydb/dragonfly/pull/3091) - feat(tiering): Defragmentation by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3021](https://togithub.com/dragonflydb/dragonfly/pull/3021) - fix: bit shift of kTagMask by [@​haodongnj](https://togithub.com/haodongnj) in [https://github.com/dragonflydb/dragonfly/pull/3099](https://togithub.com/dragonflydb/dragonfly/pull/3099) - feat(cluster_mgr): Allow attaching replicas by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3105](https://togithub.com/dragonflydb/dragonfly/pull/3105) - bug(server): fix replication stuck in full sync by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3103](https://togithub.com/dragonflydb/dragonfly/pull/3103) - fix(server): Sync FLUSH with tiering by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3098](https://togithub.com/dragonflydb/dragonfly/pull/3098) - chore: export pipeline related metrics by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3104](https://togithub.com/dragonflydb/dragonfly/pull/3104) - chore: zset error log (from 1.18 branch) by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3109](https://togithub.com/dragonflydb/dragonfly/pull/3109) - New test for cluster migration: connection issue by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3102](https://togithub.com/dragonflydb/dragonfly/pull/3102) - chore: minor fixes + remove redundant DCHECK by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3115](https://togithub.com/dragonflydb/dragonfly/pull/3115) - fix: fix cluster_fuzzy_migration test by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3116](https://togithub.com/dragonflydb/dragonfly/pull/3116) - feat(server): Pipeline and dispatch on `/metrics` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3117](https://togithub.com/dragonflydb/dragonfly/pull/3117) - chore: pull helio add test for tls deadlock by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3111](https://togithub.com/dragonflydb/dragonfly/pull/3111) - feat(cluster_mgr): Improvements to `cluster_mgr.py` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3118](https://togithub.com/dragonflydb/dragonfly/pull/3118) - refactor client tracking, fix atomicity, squashing and multi/exec by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/2970](https://togithub.com/dragonflydb/dragonfly/pull/2970) - fix(server): fix compatibility with rdb snapshot by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3121](https://togithub.com/dragonflydb/dragonfly/pull/3121) - Revert "refactor client tracking, fix atomicity, squashing and multi/… by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3122](https://togithub.com/dragonflydb/dragonfly/pull/3122) - feat(cluster_mgr): Take over command by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3120](https://togithub.com/dragonflydb/dragonfly/pull/3120) - fix: fix RestoreStreamer to prevent buckets skipping [#​2830](https://togithub.com/dragonflydb/dragonfly/issues/2830) by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3119](https://togithub.com/dragonflydb/dragonfly/pull/3119) - feat(cluster_mgr): Fix migration action by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3124](https://togithub.com/dragonflydb/dragonfly/pull/3124) - chore: prevent Dispatch fiber to be launched during migration by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3123](https://togithub.com/dragonflydb/dragonfly/pull/3123) - feat(tiering): Simple snapshotting by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3073](https://togithub.com/dragonflydb/dragonfly/pull/3073) - fix: upload action in version release by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3127](https://togithub.com/dragonflydb/dragonfly/pull/3127) ##### New Contributors - [@​MaoMaoCake](https://togithub.com/MaoMaoCake) made their first contribution in [https://github.com/dragonflydb/dragonfly/pull/3064](https://togithub.com/dragonflydb/dragonfly/pull/3064) - [@​haodongnj](https://togithub.com/haodongnj) made their first contribution in [https://github.com/dragonflydb/dragonfly/pull/3099](https://togithub.com/dragonflydb/dragonfly/pull/3099) ##### Huge thanks to all the contributors! ❤️ **Full Changelog**: dragonflydb/dragonfly@v1.18.0...v1.19.0 </details> <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5MS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19--> Co-authored-by: repo-jeeves[bot] <106431701+repo-jeeves[bot]@users.noreply.github.com>
…nfly ( v1.18.1 → v1.19.0 ) (#629) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [docker.dragonflydb.io/dragonflydb/dragonfly](https://togithub.com/dragonflydb/dragonfly) | minor | `v1.18.1` -> `v1.19.0` | --- ### Release Notes <details> <summary>dragonflydb/dragonfly (docker.dragonflydb.io/dragonflydb/dragonfly)</summary> ### [`v1.19.0`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.19.0) [Compare Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.18.1...v1.19.0) ##### Dragonfly v1.19.0 Some prominent changes include: - SPOP and SRANDMEMBER return truly randomized results ([#​3022](https://togithub.com/dragonflydb/dragonfly/issues/3022)) - Fix memory blowup in some cases during replication ([#​3084](https://togithub.com/dragonflydb/dragonfly/issues/3084) [#​3103](https://togithub.com/dragonflydb/dragonfly/issues/3103)) - Snapshotting works with data tiering ([#​3073](https://togithub.com/dragonflydb/dragonfly/issues/3073)) - Fix incompatibility issue of RDB snapshot with Redis 6.x ([#​3121](https://togithub.com/dragonflydb/dragonfly/issues/3121)) - Memory utilization improvements + better introspection of memory usage via /metrics ##### What's Changed - chore: update versions and remove caching code by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3030](https://togithub.com/dragonflydb/dragonfly/pull/3030) - chore: fix macos tiering by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3032](https://togithub.com/dragonflydb/dragonfly/pull/3032) - feat: support subrange expressions in jsonpathv2 by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3036](https://togithub.com/dragonflydb/dragonfly/pull/3036) - fix: reduce delay when stop replica [#​3020](https://togithub.com/dragonflydb/dragonfly/issues/3020) by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3028](https://togithub.com/dragonflydb/dragonfly/pull/3028) - fix(set): fix random in SRANDMEMBER and SPOP commands by [@​BagritsevichStepan](https://togithub.com/BagritsevichStepan) in [https://github.com/dragonflydb/dragonfly/pull/3022](https://togithub.com/dragonflydb/dragonfly/pull/3022) - chore: prevent updating gcc on macos by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3037](https://togithub.com/dragonflydb/dragonfly/pull/3037) - chore: add half-range indices by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3041](https://togithub.com/dragonflydb/dragonfly/pull/3041) - chore: update helio together with new mimalloc version by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3040](https://togithub.com/dragonflydb/dragonfly/pull/3040) - fix: header for oom_errors_total by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3043](https://togithub.com/dragonflydb/dragonfly/pull/3043) - chore: reset enable_direct_fd to avoid socket leakage in kernel by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3051](https://togithub.com/dragonflydb/dragonfly/pull/3051) - chore: update deprecated actions by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3052](https://togithub.com/dragonflydb/dragonfly/pull/3052) - chore: remove unneeded check-fails by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3054](https://togithub.com/dragonflydb/dragonfly/pull/3054) - chore: Export replication memory stats by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3062](https://togithub.com/dragonflydb/dragonfly/pull/3062) - <chore>!: Update grafana panel by [@​MaoMaoCake](https://togithub.com/MaoMaoCake) in [https://github.com/dragonflydb/dragonfly/pull/3064](https://togithub.com/dragonflydb/dragonfly/pull/3064) - chore: add replication memory stats to the dashboard by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3065](https://togithub.com/dragonflydb/dragonfly/pull/3065) - chore: bpop prints by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3076](https://togithub.com/dragonflydb/dragonfly/pull/3076) - fix(tiering): wait for IO before test teardown by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3079](https://togithub.com/dragonflydb/dragonfly/pull/3079) - chore: small replayer fixes by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3081](https://togithub.com/dragonflydb/dragonfly/pull/3081) - fix: increase lua stack limit to 8KB by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3080](https://togithub.com/dragonflydb/dragonfly/pull/3080) - chore: minor fixes by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3082](https://togithub.com/dragonflydb/dragonfly/pull/3082) - fix: fix cluster incorrect keys status by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3083](https://togithub.com/dragonflydb/dragonfly/pull/3083) - fix(acl): return -NOPERM instead of response error by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3049](https://togithub.com/dragonflydb/dragonfly/pull/3049) - feat(server): Expose serialization bytes via `INFO` and `/metrics` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3087](https://togithub.com/dragonflydb/dragonfly/pull/3087) - chore(streams): Some refactoring by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3088](https://togithub.com/dragonflydb/dragonfly/pull/3088) - feat(server): remove multi shard sync from replication by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3085](https://togithub.com/dragonflydb/dragonfly/pull/3085) - fix(replication): fullsync phase write to sync on noop by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3084](https://togithub.com/dragonflydb/dragonfly/pull/3084) - fix(tiering): Async delete for small bins by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3068](https://togithub.com/dragonflydb/dragonfly/pull/3068) - fix: prevent crashing if error happened during snapshot moving by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3092](https://togithub.com/dragonflydb/dragonfly/pull/3092) - fix: add timeout for DFLYMIGRATE ACK to prevent deadlock by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3093](https://togithub.com/dragonflydb/dragonfly/pull/3093) - chore: improve Migration() by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3033](https://togithub.com/dragonflydb/dragonfly/pull/3033) - feat(streams): Stream optimizations by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3091](https://togithub.com/dragonflydb/dragonfly/pull/3091) - feat(tiering): Defragmentation by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3021](https://togithub.com/dragonflydb/dragonfly/pull/3021) - fix: bit shift of kTagMask by [@​haodongnj](https://togithub.com/haodongnj) in [https://github.com/dragonflydb/dragonfly/pull/3099](https://togithub.com/dragonflydb/dragonfly/pull/3099) - feat(cluster_mgr): Allow attaching replicas by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3105](https://togithub.com/dragonflydb/dragonfly/pull/3105) - bug(server): fix replication stuck in full sync by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3103](https://togithub.com/dragonflydb/dragonfly/pull/3103) - fix(server): Sync FLUSH with tiering by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3098](https://togithub.com/dragonflydb/dragonfly/pull/3098) - chore: export pipeline related metrics by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3104](https://togithub.com/dragonflydb/dragonfly/pull/3104) - chore: zset error log (from 1.18 branch) by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3109](https://togithub.com/dragonflydb/dragonfly/pull/3109) - New test for cluster migration: connection issue by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3102](https://togithub.com/dragonflydb/dragonfly/pull/3102) - chore: minor fixes + remove redundant DCHECK by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3115](https://togithub.com/dragonflydb/dragonfly/pull/3115) - fix: fix cluster_fuzzy_migration test by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3116](https://togithub.com/dragonflydb/dragonfly/pull/3116) - feat(server): Pipeline and dispatch on `/metrics` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3117](https://togithub.com/dragonflydb/dragonfly/pull/3117) - chore: pull helio add test for tls deadlock by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3111](https://togithub.com/dragonflydb/dragonfly/pull/3111) - feat(cluster_mgr): Improvements to `cluster_mgr.py` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3118](https://togithub.com/dragonflydb/dragonfly/pull/3118) - refactor client tracking, fix atomicity, squashing and multi/exec by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/2970](https://togithub.com/dragonflydb/dragonfly/pull/2970) - fix(server): fix compatibility with rdb snapshot by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3121](https://togithub.com/dragonflydb/dragonfly/pull/3121) - Revert "refactor client tracking, fix atomicity, squashing and multi/… by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3122](https://togithub.com/dragonflydb/dragonfly/pull/3122) - feat(cluster_mgr): Take over command by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3120](https://togithub.com/dragonflydb/dragonfly/pull/3120) - fix: fix RestoreStreamer to prevent buckets skipping [#​2830](https://togithub.com/dragonflydb/dragonfly/issues/2830) by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3119](https://togithub.com/dragonflydb/dragonfly/pull/3119) - feat(cluster_mgr): Fix migration action by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3124](https://togithub.com/dragonflydb/dragonfly/pull/3124) - chore: prevent Dispatch fiber to be launched during migration by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3123](https://togithub.com/dragonflydb/dragonfly/pull/3123) - feat(tiering): Simple snapshotting by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3073](https://togithub.com/dragonflydb/dragonfly/pull/3073) - fix: upload action in version release by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3127](https://togithub.com/dragonflydb/dragonfly/pull/3127) ##### New Contributors - [@​MaoMaoCake](https://togithub.com/MaoMaoCake) made their first contribution in [https://github.com/dragonflydb/dragonfly/pull/3064](https://togithub.com/dragonflydb/dragonfly/pull/3064) - [@​haodongnj](https://togithub.com/haodongnj) made their first contribution in [https://github.com/dragonflydb/dragonfly/pull/3099](https://togithub.com/dragonflydb/dragonfly/pull/3099) ##### Huge thanks to all the contributors! ❤️ **Full Changelog**: dragonflydb/dragonfly@v1.18.0...v1.19.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:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTAuMSIsInVwZGF0ZWRJblZlciI6IjM3LjM5MC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19--> Co-authored-by: kireque-bot[bot] <143391978+kireque-bot[bot]@users.noreply.github.com>
…19.0 ) (#4821) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/dragonflydb/dragonfly](https://togithub.com/dragonflydb/dragonfly) | minor | `v1.18.1` -> `v1.19.0` | --- > [!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.19.0`](https://togithub.com/dragonflydb/dragonfly/releases/tag/v1.19.0) [Compare Source](https://togithub.com/dragonflydb/dragonfly/compare/v1.18.1...v1.19.0) ##### Dragonfly v1.19.0 Some prominent changes include: - SPOP and SRANDMEMBER return truly randomized results ([#​3022](https://togithub.com/dragonflydb/dragonfly/issues/3022)) - Fix memory blowup in some cases during replication ([#​3084](https://togithub.com/dragonflydb/dragonfly/issues/3084) [#​3103](https://togithub.com/dragonflydb/dragonfly/issues/3103)) - Snapshotting works with data tiering ([#​3073](https://togithub.com/dragonflydb/dragonfly/issues/3073)) - Fix incompatibility issue of RDB snapshot with Redis 6.x ([#​3121](https://togithub.com/dragonflydb/dragonfly/issues/3121)) - Memory utilization improvements + better introspection of memory usage via /metrics ##### What's Changed - chore: update versions and remove caching code by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3030](https://togithub.com/dragonflydb/dragonfly/pull/3030) - chore: fix macos tiering by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3032](https://togithub.com/dragonflydb/dragonfly/pull/3032) - feat: support subrange expressions in jsonpathv2 by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3036](https://togithub.com/dragonflydb/dragonfly/pull/3036) - fix: reduce delay when stop replica [#​3020](https://togithub.com/dragonflydb/dragonfly/issues/3020) by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3028](https://togithub.com/dragonflydb/dragonfly/pull/3028) - fix(set): fix random in SRANDMEMBER and SPOP commands by [@​BagritsevichStepan](https://togithub.com/BagritsevichStepan) in [https://github.com/dragonflydb/dragonfly/pull/3022](https://togithub.com/dragonflydb/dragonfly/pull/3022) - chore: prevent updating gcc on macos by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3037](https://togithub.com/dragonflydb/dragonfly/pull/3037) - chore: add half-range indices by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3041](https://togithub.com/dragonflydb/dragonfly/pull/3041) - chore: update helio together with new mimalloc version by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3040](https://togithub.com/dragonflydb/dragonfly/pull/3040) - fix: header for oom_errors_total by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3043](https://togithub.com/dragonflydb/dragonfly/pull/3043) - chore: reset enable_direct_fd to avoid socket leakage in kernel by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3051](https://togithub.com/dragonflydb/dragonfly/pull/3051) - chore: update deprecated actions by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3052](https://togithub.com/dragonflydb/dragonfly/pull/3052) - chore: remove unneeded check-fails by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3054](https://togithub.com/dragonflydb/dragonfly/pull/3054) - chore: Export replication memory stats by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3062](https://togithub.com/dragonflydb/dragonfly/pull/3062) - <chore>!: Update grafana panel by [@​MaoMaoCake](https://togithub.com/MaoMaoCake) in [https://github.com/dragonflydb/dragonfly/pull/3064](https://togithub.com/dragonflydb/dragonfly/pull/3064) - chore: add replication memory stats to the dashboard by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3065](https://togithub.com/dragonflydb/dragonfly/pull/3065) - chore: bpop prints by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3076](https://togithub.com/dragonflydb/dragonfly/pull/3076) - fix(tiering): wait for IO before test teardown by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3079](https://togithub.com/dragonflydb/dragonfly/pull/3079) - chore: small replayer fixes by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3081](https://togithub.com/dragonflydb/dragonfly/pull/3081) - fix: increase lua stack limit to 8KB by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3080](https://togithub.com/dragonflydb/dragonfly/pull/3080) - chore: minor fixes by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3082](https://togithub.com/dragonflydb/dragonfly/pull/3082) - fix: fix cluster incorrect keys status by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3083](https://togithub.com/dragonflydb/dragonfly/pull/3083) - fix(acl): return -NOPERM instead of response error by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3049](https://togithub.com/dragonflydb/dragonfly/pull/3049) - feat(server): Expose serialization bytes via `INFO` and `/metrics` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3087](https://togithub.com/dragonflydb/dragonfly/pull/3087) - chore(streams): Some refactoring by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3088](https://togithub.com/dragonflydb/dragonfly/pull/3088) - feat(server): remove multi shard sync from replication by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3085](https://togithub.com/dragonflydb/dragonfly/pull/3085) - fix(replication): fullsync phase write to sync on noop by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3084](https://togithub.com/dragonflydb/dragonfly/pull/3084) - fix(tiering): Async delete for small bins by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3068](https://togithub.com/dragonflydb/dragonfly/pull/3068) - fix: prevent crashing if error happened during snapshot moving by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3092](https://togithub.com/dragonflydb/dragonfly/pull/3092) - fix: add timeout for DFLYMIGRATE ACK to prevent deadlock by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3093](https://togithub.com/dragonflydb/dragonfly/pull/3093) - chore: improve Migration() by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3033](https://togithub.com/dragonflydb/dragonfly/pull/3033) - feat(streams): Stream optimizations by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3091](https://togithub.com/dragonflydb/dragonfly/pull/3091) - feat(tiering): Defragmentation by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3021](https://togithub.com/dragonflydb/dragonfly/pull/3021) - fix: bit shift of kTagMask by [@​haodongnj](https://togithub.com/haodongnj) in [https://github.com/dragonflydb/dragonfly/pull/3099](https://togithub.com/dragonflydb/dragonfly/pull/3099) - feat(cluster_mgr): Allow attaching replicas by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3105](https://togithub.com/dragonflydb/dragonfly/pull/3105) - bug(server): fix replication stuck in full sync by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3103](https://togithub.com/dragonflydb/dragonfly/pull/3103) - fix(server): Sync FLUSH with tiering by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3098](https://togithub.com/dragonflydb/dragonfly/pull/3098) - chore: export pipeline related metrics by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3104](https://togithub.com/dragonflydb/dragonfly/pull/3104) - chore: zset error log (from 1.18 branch) by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3109](https://togithub.com/dragonflydb/dragonfly/pull/3109) - New test for cluster migration: connection issue by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3102](https://togithub.com/dragonflydb/dragonfly/pull/3102) - chore: minor fixes + remove redundant DCHECK by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3115](https://togithub.com/dragonflydb/dragonfly/pull/3115) - fix: fix cluster_fuzzy_migration test by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3116](https://togithub.com/dragonflydb/dragonfly/pull/3116) - feat(server): Pipeline and dispatch on `/metrics` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3117](https://togithub.com/dragonflydb/dragonfly/pull/3117) - chore: pull helio add test for tls deadlock by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/3111](https://togithub.com/dragonflydb/dragonfly/pull/3111) - feat(cluster_mgr): Improvements to `cluster_mgr.py` by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3118](https://togithub.com/dragonflydb/dragonfly/pull/3118) - refactor client tracking, fix atomicity, squashing and multi/exec by [@​kostasrim](https://togithub.com/kostasrim) in [https://github.com/dragonflydb/dragonfly/pull/2970](https://togithub.com/dragonflydb/dragonfly/pull/2970) - fix(server): fix compatibility with rdb snapshot by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3121](https://togithub.com/dragonflydb/dragonfly/pull/3121) - Revert "refactor client tracking, fix atomicity, squashing and multi/… by [@​adiholden](https://togithub.com/adiholden) in [https://github.com/dragonflydb/dragonfly/pull/3122](https://togithub.com/dragonflydb/dragonfly/pull/3122) - feat(cluster_mgr): Take over command by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3120](https://togithub.com/dragonflydb/dragonfly/pull/3120) - fix: fix RestoreStreamer to prevent buckets skipping [#​2830](https://togithub.com/dragonflydb/dragonfly/issues/2830) by [@​BorysTheDev](https://togithub.com/BorysTheDev) in [https://github.com/dragonflydb/dragonfly/pull/3119](https://togithub.com/dragonflydb/dragonfly/pull/3119) - feat(cluster_mgr): Fix migration action by [@​chakaz](https://togithub.com/chakaz) in [https://github.com/dragonflydb/dragonfly/pull/3124](https://togithub.com/dragonflydb/dragonfly/pull/3124) - chore: prevent Dispatch fiber to be launched during migration by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3123](https://togithub.com/dragonflydb/dragonfly/pull/3123) - feat(tiering): Simple snapshotting by [@​dranikpg](https://togithub.com/dranikpg) in [https://github.com/dragonflydb/dragonfly/pull/3073](https://togithub.com/dragonflydb/dragonfly/pull/3073) - fix: upload action in version release by [@​romange](https://togithub.com/romange) in [https://github.com/dragonflydb/dragonfly/pull/3127](https://togithub.com/dragonflydb/dragonfly/pull/3127) ##### New Contributors - [@​MaoMaoCake](https://togithub.com/MaoMaoCake) made their first contribution in [https://github.com/dragonflydb/dragonfly/pull/3064](https://togithub.com/dragonflydb/dragonfly/pull/3064) - [@​haodongnj](https://togithub.com/haodongnj) made their first contribution in [https://github.com/dragonflydb/dragonfly/pull/3099](https://togithub.com/dragonflydb/dragonfly/pull/3099) ##### Huge thanks to all the contributors! ❤️ **Full Changelog**: dragonflydb/dragonfly@v1.18.0...v1.19.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:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTAuMSIsInVwZGF0ZWRJblZlciI6IjM3LjM5MC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19--> Co-authored-by: lumiere-bot[bot] <98047013+lumiere-bot[bot]@users.noreply.github.com>
CLIENT CACHING TRUE
(only to be used with TRACKING OPTIN)Resolves #2969, #2971, #2997, #2998
P.s. All tests in rueidis TestSingleClientIntegration pass except pub/sub because we don't yet support it see #3001