Skip to content

Can not expect smf_rs::get_pg() to succeed #14

@Nieuwejaar

Description

@Nieuwejaar

We found an lldpd corefile on dogfood. The corresponding log shows:

thread 'main' panicked at lldpd/src/smf.rs:134:10:
existence guaranteed by presence in this list: Internal
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
06:33:21.804Z ERRO lldpd: failed to fetch tfports info: Other("/usr/sbin/ipadm show-if fa
iled: ")
    unit = dpd-link-monitor

This expect suggests that the only error we expected this library call to return was if the requested property group was missing - which we know it can't be. The log message shows that we actually got an internal error from the SMF library.

Looking into the SMF library itself, we can see that the expected return value for a missing property group would be Ok(None), so this expect won't catch the failure it is intended to.

It's not clear why this call failed at all, but we are definitely mishandling the error return. We should log and return the error. Without knowing why the call failed in the first place, it's hard to say exactly what we should do beyond that. The simplest thing would be to simply retry the refresh after the next timeout expires in link_monitor().

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions