node: Combine event with sync status change

Use the same logic to check whether the sync status was updated, to emit
the `RefsSynced` event. That way they are at least consistent.
This commit is contained in:
cloudhead 2024-03-22 17:07:56 +01:00
parent 474df7fc3c
commit a4928f50b6
No known key found for this signature in database
1 changed files with 6 additions and 16 deletions

View File

@ -1285,7 +1285,7 @@ where
match self.db.addresses().get(announcer) {
Ok(node) => {
if node.is_none() {
trace!(target: "service", "Ignoring announcement from unknown node {announcer}");
debug!(target: "service", "Ignoring announcement from unknown node {announcer}");
return Ok(false);
}
}
@ -1408,6 +1408,11 @@ where
"Updating sync status of {announcer} for {} to {}",
message.rid, refs.at
);
self.emitter.emit(Event::RefsSynced {
rid: message.rid,
remote: *announcer,
at: refs.at,
});
}
}
Err(e) => {
@ -1431,21 +1436,6 @@ where
return Ok(relay);
}
};
// If the ref announcement indicates that the announcer already has
// our *owned* refs, then we emit an event, which can be used to
// show sync status to the user.
if let Some(at) = stale
.iter()
.find(|refs| &refs.remote == self.nid())
.copied()
.map(|RefsAt { at, .. }| at)
{
self.emitter.emit(Event::RefsSynced {
rid: message.rid,
remote: *announcer,
at,
});
}
// Refs can be relayed by peers who don't have the data in storage,
// therefore we only check whether we are connected to the *announcer*,