Got system to clean up when document file fails.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
parent
0079aa42c5
commit
21404af52f
@ -1238,6 +1238,10 @@ impl Router {
|
|||||||
id
|
id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn remove_sender(&mut self, id: &Uuid) {
|
||||||
|
self.senders.remove(id);
|
||||||
|
}
|
||||||
|
|
||||||
fn forward(&self, id: &Uuid, msg: Message) {
|
fn forward(&self, id: &Uuid, msg: Message) {
|
||||||
self.senders.get(id).unwrap().send(msg).unwrap();
|
self.senders.get(id).unwrap().send(msg).unwrap();
|
||||||
}
|
}
|
||||||
@ -1285,6 +1289,25 @@ mod routers {
|
|||||||
}
|
}
|
||||||
assert_eq!(holder.len(), count, "had duplicate keys");
|
assert_eq!(holder.len(), count, "had duplicate keys");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_remove_sender() {
|
||||||
|
let (tx, _) = channel();
|
||||||
|
let mut router = Router::new(tx);
|
||||||
|
let (data, _) = channel();
|
||||||
|
let id = router.add_sender(data);
|
||||||
|
assert_eq!(router.senders.len(), 1, "should have only one sender");
|
||||||
|
router.remove_sender(&id);
|
||||||
|
assert_eq!(router.senders.len(), 0, "should have no senders.");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ignores_bad_id_removals() {
|
||||||
|
let (tx, _) = channel();
|
||||||
|
let mut router = Router::new(tx);
|
||||||
|
router.remove_sender(&Uuid::new_v4());
|
||||||
|
assert_eq!(router.senders.len(), 0, "should have no senders.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
@ -1307,6 +1330,11 @@ impl Queue {
|
|||||||
router.add_sender(sender)
|
router.add_sender(sender)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn remove_sender(&mut self, id: &Uuid) {
|
||||||
|
let mut router = self.router.write().unwrap();
|
||||||
|
router.remove_sender(id);
|
||||||
|
}
|
||||||
|
|
||||||
fn forward(&self, id: &Uuid, msg: Message) {
|
fn forward(&self, id: &Uuid, msg: Message) {
|
||||||
let router = self.router.read().unwrap();
|
let router = self.router.read().unwrap();
|
||||||
router.forward(id, msg);
|
router.forward(id, msg);
|
||||||
@ -1398,6 +1426,22 @@ mod queues {
|
|||||||
holder.insert(queue.add_sender(tx));
|
holder.insert(queue.add_sender(tx));
|
||||||
}
|
}
|
||||||
assert_eq!(holder.len(), count, "had duplicate keys");
|
assert_eq!(holder.len(), count, "had duplicate keys");
|
||||||
|
let router = queue.router.read().unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
router.senders.len(),
|
||||||
|
count,
|
||||||
|
"should contain all of the senders"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn senders_can_be_removed() {
|
||||||
|
let mut queue = Queue::new();
|
||||||
|
let (tx, _) = channel();
|
||||||
|
let id = queue.add_sender(tx);
|
||||||
|
queue.remove_sender(&id);
|
||||||
|
let router = queue.router.read().unwrap();
|
||||||
|
assert_eq!(router.senders.len(), 0, "should contain no senders");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -3826,7 +3870,10 @@ impl DocumentFile {
|
|||||||
let name_result = rx.recv().unwrap();
|
let name_result = rx.recv().unwrap();
|
||||||
match name_result.get_action() {
|
match name_result.get_action() {
|
||||||
MsgAction::Register(data) => match data.get_msg() {
|
MsgAction::Register(data) => match data.get_msg() {
|
||||||
RegMsg::Error(err) => queue.send(msg.response(err.clone())).unwrap(),
|
RegMsg::Error(err) => {
|
||||||
|
queue.remove_sender(&id);
|
||||||
|
queue.send(msg.response(err.clone())).unwrap();
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
},
|
},
|
||||||
_ => unreachable!("should return registration"),
|
_ => unreachable!("should return registration"),
|
||||||
@ -5341,5 +5388,12 @@ mod createdocs {
|
|||||||
},
|
},
|
||||||
_ => unreachable!("got {:?}: should have been a reply.", result.get_action()),
|
_ => unreachable!("got {:?}: should have been a reply.", result.get_action()),
|
||||||
}
|
}
|
||||||
|
let mut router = queue.router.read().unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
router.senders.len(),
|
||||||
|
3,
|
||||||
|
"there should only be 3 registered senders: createdoc, testing rx, and {:?}",
|
||||||
|
name
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user