Dendrite's link reconciler attempts to match the configured and "plumbed" settings for each link. One of the first things it does is try to fetch transceiver's MPN here:
|
if let Some(qsfp) = &qsfp { |
|
match qsfp_xcvr_mpn(qsfp) { |
|
Ok(mpn) => Some(mpn), |
|
Err(e) => { |
|
warn!(log, "failed to get MPN for qsfp"; |
|
"port" => %port_id, |
|
"error" => %e, |
|
); |
|
return; |
|
} |
|
} |
|
} else { |
|
None |
|
} |
|
}; |
That fails with Err(DpdError::Missing) if the transceiver isn't present. That's reasonable when trying to create a link, but it blocks deleting a link if the transceiver has been unplugged. We should continue attempting to delete the link in this case.
Dendrite's link reconciler attempts to match the configured and "plumbed" settings for each link. One of the first things it does is try to fetch transceiver's MPN here:
dendrite/dpd/src/link.rs
Lines 1785 to 1799 in 2475028
That fails with
Err(DpdError::Missing)if the transceiver isn't present. That's reasonable when trying to create a link, but it blocks deleting a link if the transceiver has been unplugged. We should continue attempting to delete the link in this case.