{"record":{"id":"6bf4c6e65a9bbd53","repo":"Netflix/chaosmonkey","slug":"unknown-outage-provider-s","errorCode":null,"errorMessage":"unknown outage provider: %s","messagePattern":"unknown outage provider: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"outage/outage.go","lineNumber":41,"sourceCode":")\n\n// NullOutage is a no-op outage checker\ntype NullOutage struct{}\n\n// Outage always returns false\nfunc (n NullOutage) Outage() (bool, error) {\n\treturn false, nil\n}\n\nfunc init() {\n\tdeps.GetOutage = GetOutage\n}\n\n// GetOutage returns a do-nothing outage checker\nfunc GetOutage(cfg *config.Monkey) (chaosmonkey.Outage, error) {\n\tchecker := cfg.OutageChecker()\n\tif checker != \"\" {\n\t\treturn nil, errors.Errorf(\"unknown outage provider: %s\", checker)\n\t}\n\treturn NullOutage{}, nil\n}\n","sourceCodeStart":23,"sourceCodeEnd":45,"githubUrl":"https://github.com/Netflix/chaosmonkey/blob/eaa28fb761c0ebe8644d1333e5d164e9cc3071e9/outage/outage.go#L23-L45","documentation":"GetOutage returns the built-in NullOutage checker. Like the error counter, only the null provider exists, so any non-empty cfg.OutageChecker() value produces 'unknown outage provider: %s'. This is a deliberate guard against configuring an outage provider this build cannot supply.","triggerScenarios":"Setting outage_checker (or equivalent) in the monkey config to any non-empty string and calling GetOutage.","commonSituations":"Copying config from an environment that integrates a custom outage checker; typo where the intent was to leave the checker unset; documentation mentioning third-party outage providers unsupported here.","solutions":["Remove the outage checker config value so the empty default (NullOutage) is used","Implement a chaosmonkey.Outage and inject it via the deps layer if a real checker is needed","Audit the config for stray outage_checker keys from another deployment"],"exampleFix":"// before (config)\noutage_checker: \"pagerduty\"\n// after\n// remove outage_checker key entirely","handlingStrategy":"validation","validationCode":"if checker := cfg.OutageChecker(); checker != \"\" {\n    return fmt.Errorf(\"only the null outage checker is supported; got %q\", checker)\n}","typeGuard":null,"tryCatchPattern":"if _, err := outage.GetOutage(cfg); err != nil {\n    log.Fatalf(\"outage checker config invalid: %v\", err)\n}","preventionTips":["Leave outage_checker unset unless a custom checker is wired via deps","Validate config keys against a whitelist at startup","Audit configs copied between environments for unsupported keys"],"tags":["go","configuration","unsupported-feature"],"backgroundTag":"unsupported-config-value","analyzedSha":"eaa28fb761c0ebe8644d1333e5d164e9cc3071e9","analyzedAt":"2026-09-03T17:04:39.020Z","contentChangedAt":"2026-09-03T17:04:39.020Z","schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}