Skip to content

Commit 893c1a9

Browse files
authored
Merge pull request #1381 from uuhan/feature/fix-sub-without-pub
Fix: insert deadlock #1380
2 parents c3355ef + a78fb96 commit 893c1a9

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/subscriber.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ impl Subscribers {
293293

294294
for (_id, (waker, sender)) in subs.iter() {
295295
let (tx, rx) = OneShot::pair();
296-
if sender.send(rx).is_err() {
296+
if let Err(err) = sender.try_send(rx) {
297+
error!("send error: {:?}", err);
297298
continue;
298299
}
299300
subscribers.push((waker.clone(), tx));

src/tree.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,19 @@ impl Tree {
205205
let last_value = last_value.map(IVec::from);
206206

207207
if value == last_value {
208+
// NB: always broadcast event
209+
if let Some(Some(res)) = subscriber_reservation.take() {
210+
let event = subscriber::Event::single_update(
211+
self.clone(),
212+
key.as_ref().into(),
213+
value,
214+
);
215+
216+
res.complete(&event);
217+
}
218+
208219
// short-circuit a no-op set or delete
209-
return Ok(Ok(value));
220+
return Ok(Ok(last_value));
210221
}
211222

212223
let frag = if let Some(value) = value.clone() {

0 commit comments

Comments
 (0)