Skip to content

Commit f72b27c

Browse files
committed
fix(update): keep local subscribers and add PUT ack tracing
1 parent b9d43f2 commit f72b27c

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

crates/core/src/operations/update.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -786,10 +786,29 @@ impl OpManager {
786786
.subscribers_of(key)
787787
.map(|subs| {
788788
let self_peer = self.ring.connection_manager.get_peer_key();
789+
let allow_self = self_peer.as_ref().map(|me| me == sender).unwrap_or(false);
789790
subs.value()
790791
.iter()
791-
.filter(|pk| &pk.peer != sender)
792-
.filter(|pk| self_peer.as_ref().map(|me| &pk.peer != me).unwrap_or(true))
792+
.filter(|pk| {
793+
// Allow the sender to remain in the broadcast list when we're the sender,
794+
// so local auto-subscribe via GET/PUT still receives notifications.
795+
if &pk.peer == sender {
796+
allow_self
797+
} else {
798+
true
799+
}
800+
})
801+
.filter(|pk| {
802+
if let Some(self_peer) = &self_peer {
803+
if &pk.peer == self_peer {
804+
allow_self
805+
} else {
806+
true
807+
}
808+
} else {
809+
true
810+
}
811+
})
793812
.cloned()
794813
.collect::<Vec<_>>()
795814
})

0 commit comments

Comments
 (0)