Skip to content

Commit aa671fe

Browse files
authored
Deleting a nonexistent producer should succeed (#5366)
1 parent f2ea800 commit aa671fe

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

oximeter/collector/src/agent.rs

+27-2
Original file line numberDiff line numberDiff line change
@@ -679,8 +679,10 @@ impl OximeterAgent {
679679
>,
680680
id: Uuid,
681681
) -> Result<(), Error> {
682-
let (_info, task) =
683-
tasks.remove(&id).ok_or_else(|| Error::NoSuchProducer(id))?;
682+
let Some((_info, task)) = tasks.remove(&id) else {
683+
// We have no such producer, so good news, we've removed it!
684+
return Ok(());
685+
};
684686
debug!(
685687
self.log,
686688
"removed collection task from set";
@@ -1121,4 +1123,27 @@ mod tests {
11211123
assert_eq!(stats.failed_collections.len(), 1);
11221124
logctx.cleanup_successful();
11231125
}
1126+
1127+
#[tokio::test]
1128+
async fn test_delete_nonexistent_producer_succeeds() {
1129+
let logctx =
1130+
test_setup_log("test_delete_nonexistent_producer_succeeds");
1131+
let log = &logctx.log;
1132+
1133+
// Spawn an oximeter collector ...
1134+
let collector = OximeterAgent::new_standalone(
1135+
Uuid::new_v4(),
1136+
SocketAddrV6::new(Ipv6Addr::LOCALHOST, 0, 0, 0),
1137+
crate::default_refresh_interval(),
1138+
None,
1139+
log,
1140+
)
1141+
.await
1142+
.unwrap();
1143+
assert!(
1144+
collector.delete_producer(Uuid::new_v4()).await.is_ok(),
1145+
"Deleting a non-existent producer should be OK"
1146+
);
1147+
logctx.cleanup_successful();
1148+
}
11241149
}

oximeter/collector/src/lib.rs

+1-10
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,13 @@ pub enum Error {
6060
#[error(transparent)]
6161
ResolveError(#[from] ResolveError),
6262

63-
#[error("No producer is registered with ID")]
64-
NoSuchProducer(Uuid),
65-
6663
#[error("Error running standalone")]
6764
Standalone(#[from] anyhow::Error),
6865
}
6966

7067
impl From<Error> for HttpError {
7168
fn from(e: Error) -> Self {
72-
match e {
73-
Error::NoSuchProducer(id) => HttpError::for_not_found(
74-
None,
75-
format!("No such producer: {id}"),
76-
),
77-
_ => HttpError::for_internal_error(e.to_string()),
78-
}
69+
HttpError::for_internal_error(e.to_string())
7970
}
8071
}
8172

0 commit comments

Comments
 (0)