Skip to content

fix: prevent panic when using diskstats device-include only (#3590)#3603

Open
mumberrymountain wants to merge 1 commit intoprometheus:masterfrom
mumberrymountain:fix-issue-3590-diskstats-device-include-only-panic
Open

fix: prevent panic when using diskstats device-include only (#3590)#3603
mumberrymountain wants to merge 1 commit intoprometheus:masterfrom
mumberrymountain:fix-issue-3590-diskstats-device-include-only-panic

Conversation

@mumberrymountain
Copy link
Copy Markdown

this PR fix issue #3590.

Problem:
setting --collector.diskstats.device-include alone trigger the “device-exclude & device-include are mutually exclusive” error and ultimately cause panic during handler creation.

Cause:

diskstatsDeviceExclude    = kingpin.Flag(
		"collector.diskstats.device-exclude",
		"Regexp of diskstats devices to exclude (mutually exclusive to device-include).",
	).Default(diskstatsDefaultIgnoredDevices).PreAction(func(c *kingpin.ParseContext) error {
		diskstatsDeviceExcludeSet = true
		return nil
}).String()

collector.diskstats.device-exclude has a non-empty default on Linux,

if *diskstatsDeviceExclude != "" && *diskstatsDeviceInclude != "" {
		return deviceFilter{}, errors.New("device-exclude & device-include are mutually exclusive")
}

as a result, providing device-include only still leaves device-exclude as default, so the code treats it as include+exclude all being set and throws error.

Fix

if *diskstatsDeviceInclude != "" {
	if diskstatsDeviceExcludeSet {
		return deviceFilter{}, errors.New("device-exclude & device-include are mutually exclusive")
	}
	*diskstatsDeviceExclude = ""
}

When device-include is set:

  • Return a mutual exclusivity error only if device-exclude was explicitly provided by the user
  • Otherwise, ignore/clear the default exclude so include-only works as intended

…us#3590)

Signed-off-by: Jeon Insoo <mumberrymountain@gmail.com>
@mumberrymountain mumberrymountain force-pushed the fix-issue-3590-diskstats-device-include-only-panic branch from 15bceac to 110272f Compare April 2, 2026 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant