{"record":{"id":"583194624af089a5","repo":"ipfs/kubo","slug":"unknown-pubsub-router-s","errorCode":null,"errorMessage":"unknown pubsub router %s","messagePattern":"unknown pubsub router (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/node/groups.go","lineNumber":91,"sourceCode":"\t\tswitch configSeenMessagesStrategy {\n\t\tcase config.LastSeenMessagesStrategy:\n\t\t\tseenMessagesStrategy = timecache.Strategy_LastSeen\n\t\tcase config.FirstSeenMessagesStrategy:\n\t\t\tseenMessagesStrategy = timecache.Strategy_FirstSeen\n\t\tdefault:\n\t\t\treturn fx.Error(fmt.Errorf(\"unsupported Pubsub.SeenMessagesStrategy %q\", configSeenMessagesStrategy))\n\t\t}\n\t\tpubsubOptions = append(pubsubOptions, pubsub.WithSeenMessagesStrategy(seenMessagesStrategy))\n\n\t\tswitch cfg.Pubsub.Router {\n\t\tcase \"\":\n\t\t\tfallthrough\n\t\tcase \"gossipsub\":\n\t\t\tps = fx.Provide(libp2p.GossipSub(pubsubOptions...))\n\t\tcase \"floodsub\":\n\t\t\tps = fx.Provide(libp2p.FloodSub(pubsubOptions...))\n\t\tdefault:\n\t\t\treturn fx.Error(fmt.Errorf(\"unknown pubsub router %s\", cfg.Pubsub.Router))\n\t\t}\n\t}\n\n\tautonat := fx.Options()\n\n\tswitch cfg.AutoNAT.ServiceMode {\n\tdefault:\n\t\tpanic(\"BUG: unhandled autonat service mode\")\n\tcase config.AutoNATServiceDisabled:\n\tcase config.AutoNATServiceUnset:\n\t\t// TODO\n\t\t//\n\t\t// We're enabling the AutoNAT service by default on _all_ nodes\n\t\t// for the moment.\n\t\t//\n\t\t// We should consider disabling it by default if the dht is set\n\t\t// to dhtclient.\n\t\tfallthrough","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/core/node/groups.go#L73-L109","documentation":"`Pubsub.Router` chooses the gossipsub/floodsub router implementation. The switch accepts \"\" (default), \"gossipsub\", and \"floodsub\"; any other value fails node construction. Thrown so an unsupported router name cannot silently degrade pubsub behavior.","triggerScenarios":"`Pubsub.Router` set to an unknown string (e.g. \"randomsub\", \"flood\", \"gossip\") while pubsub is enabled in the LibP2P fx group.","commonSituations":"Typo; copying configuration for a different IPFS implementation; expecting experimental routers to exist when they are not compiled in.","solutions":["Set `ipfs config Pubsub.Router gossipsub` (recommended) or \"floodsub\"","Clear the value (`ipfs config Pubsub.Router \"\"`) to use the default gossipsub","Check docs/config.md for supported router values in this Kubo version"],"exampleFix":"// before (config.json)\n\"Pubsub\": { \"Router\": \"randomsub\" }\n// after\n\"Pubsub\": { \"Router\": \"gossipsub\" }","handlingStrategy":"validation","validationCode":"switch r := cfg.Pubsub.Router; r {\ncase \"\", \"gossipsub\", \"floodsub\":\n\t// ok\ndefault:\n\treturn fmt.Errorf(\"Pubsub.Router %q unsupported\", r)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use gossipsub (default) or floodsub only","Clear Pubsub.Router to get the default instead of guessing names","Check docs/config.md after Kubo upgrades"],"tags":["config","pubsub","libp2p"],"backgroundTag":"invalid-config-value","analyzedSha":"329838acdfafae224582930457efe80aa217afc0","analyzedAt":"2026-09-03T18:30:52.135Z","contentChangedAt":"2026-09-03T18:30:52.135Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}