A new metric has been added to /proc/net/rpc/nfsd named wdeleg_getattr in the 6.6-rc1 kernel. This causes nfs.ParseServerRPCStats to fail with error unknown NFSd metric line "wdeleg_getattr".
For reference, the kernel source defines this metric as (where wdeleg stands for "write delegation"):
NFSD_STATS_WDELEG_GETATTR, /* count of getattr conflict with wdeleg */
This issue does raise a concern about forward compatability. I do not think that adding a new metric line, or new counters should break existing implementaions.
I would suggest at a minimum, if an unknown metric line is found, that line should just be ignored. This falls into a similar concept about being leanient when parsing file formats such as JSON.
Likewise should consider ignore the additional values if a metric contains more values than expected. Normally the kernel maintains backwards compatability for counters, so if a counter is removed then a placeholder (normaly zero) is left in its place to avoid breaking existing software. New counters are only added to the end of existing lines, or as new lines.
A new metric has been added to
/proc/net/rpc/nfsd
namedwdeleg_getattr
in the 6.6-rc1 kernel. This causesnfs.ParseServerRPCStats
to fail with errorunknown NFSd metric line "wdeleg_getattr"
.For reference, the kernel source defines this metric as (where wdeleg stands for "write delegation"):
For context, this is the commit that introduced the new metric; https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?h=v6.6-rc1&id=fd19ca36fd782b84f71b86525b91a905cda913a4.
There is a similar issue logged for the node exporter, https://github.com/prometheus/node_exporter/issues/2799.
Sample
/proc/net/rpc/nfsd
Forward compatability
This issue does raise a concern about forward compatability. I do not think that adding a new metric line, or new counters should break existing implementaions.
I would suggest at a minimum, if an unknown metric line is found, that line should just be ignored. This falls into a similar concept about being leanient when parsing file formats such as JSON.
Likewise should consider ignore the additional values if a metric contains more values than expected. Normally the kernel maintains backwards compatability for counters, so if a counter is removed then a placeholder (normaly zero) is left in its place to avoid breaking existing software. New counters are only added to the end of existing lines, or as new lines.