{"record":{"id":"97cf104a1d221052","repo":"apache/druid","slug":"invalid-pod-adapter-s-only-pod-adapter-s-ca-97cf10","errorCode":null,"errorMessage":"Invalid pod adapter [%s], only pod adapter [%s] can be specified when sidecarSupport is enabled","messagePattern":"Invalid pod adapter \\[(.+?)\\], only pod adapter \\[(.+?)\\] can be specified when sidecarSupport is enabled","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions-core/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/MultipleKubernetesTaskRunnerFactory.java","lineNumber":354,"sourceCode":"        effectiveConfig.getNamespace(),\n        useOverlordNamespace ? effectiveConfig.getOverlordNamespace() : \"\",\n        effectiveConfig.isDebugJobs(),\n        emitter\n    );\n  }\n\n  private TaskAdapter buildTaskAdapter(\n      @Nullable String adapter,\n      DruidKubernetesClient client,\n      @Nullable DruidKubernetesClient overlordPodSourceClient,\n      @Nullable String overlordPodSourceNamespace,\n      KubernetesTaskRunnerEffectiveConfig effectiveConfig\n  )\n  {\n    if (adapter != null\n        && !MultiContainerTaskAdapter.TYPE.equals(adapter)\n        && effectiveConfig.isSidecarSupport()) {\n      throw new IAE(\n          \"Invalid pod adapter [%s], only pod adapter [%s] can be specified when sidecarSupport is enabled\",\n          adapter,\n          MultiContainerTaskAdapter.TYPE\n      );\n    }\n\n    if (MultiContainerTaskAdapter.TYPE.equals(adapter) || effectiveConfig.isSidecarSupport()) {\n      return new MultiContainerTaskAdapter(\n          overlordPodSourceClient,\n          overlordPodSourceNamespace,\n          client,\n          effectiveConfig,\n          taskConfig,\n          startupLoggingConfig,\n          druidNode,\n          smileMapper,\n          taskLogs\n      );","sourceCodeStart":336,"sourceCodeEnd":372,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/MultipleKubernetesTaskRunnerFactory.java#L336-L372","documentation":"Thrown by MultipleKubernetesTaskRunnerFactory.buildTaskAdapter when a specific pod adapter type is configured while sidecarSupport is enabled in the effective Kubernetes task runner config. When sidecars are in use, Druid only accepts the multi-container adapter because per-task pods must run multiple containers; any other adapter (e.g. single-container) is incompatible and the Overlord refuses to start the task runner with this IllegalArgumentException.","triggerScenarios":"Calling clusterTaskAdapter/buildTaskAdapter with druid.indexer.runner.k8s.adapter.type set to something other than multiContainer while druid.indexer.runner.k8s.sidecarSupport=true (or sidecars enabled via MultiContainerTaskAdapter config). The adapter value comes straight from configuration, so any non-multiContainer value triggers it.","commonSituations":"Operators upgrading to enable sidecar containers (e.g. to attach log collectors or proxies per task pod) but leaving the previously configured adapter type in place; copy-pasted configs where adapter.type=singleContainer predates enabling sidecarSupport.","solutions":["Change druid.indexer.runner.k8s.adapter.type to multiContainer (MultiContainerTaskAdapter.TYPE) in the Overlord runtime properties","Remove the explicit adapter type so the default adapter is chosen when sidecarSupport is enabled","If multi-container is not actually needed, set druid.indexer.runner.k8s.sidecarSupport=false instead"],"exampleFix":"// before\ndruid.indexer.runner.k8s.adapter.type=singleContainer\ndruid.indexer.runner.k8s.sidecarSupport=true\n\n// after\ndruid.indexer.runner.k8s.adapter.type=multiContainer\ndruid.indexer.runner.k8s.sidecarSupport=true","handlingStrategy":"validation","validationCode":"// Before starting the Overlord, assert adapter compatibility\nString adapter = props.getProperty(\"druid.indexer.runner.k8s.adapter.type\");\nboolean sidecar = Boolean.parseBoolean(props.getProperty(\"druid.indexer.runner.k8s.sidecarSupport\", \"false\"));\nif (sidecar && adapter != null && !\"multiContainer\".equals(adapter)) {\n    throw new IllegalArgumentException(\n        \"sidecarSupport=true requires adapter.type=multiContainer, found: \" + adapter);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep adapter.type and sidecarSupport in one reviewed config section so they are changed together","Document that sidecarSupport implies multiContainer in your deployment runbook","Add a config lint check to your deployment pipeline for k8s overlord properties"],"tags":["kubernetes","configuration","druid-overlord","incompatible-config"],"backgroundTag":"conflicting-config-options","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}