{"record":{"id":"dc6bdb265abf430e","repo":"testcontainers/testcontainers-java","slug":"provided-confluent-platform-s-version-s-is-not-supported-in","errorCode":null,"errorMessage":"Provided Confluent Platform's version %s is not supported in Kraft mode (must be %s or above)","messagePattern":"Provided Confluent Platform's version (.+?) is not supported in Kraft mode \\(must be (.+?) or above\\)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/kafka/src/main/java/org/testcontainers/containers/KafkaContainer.java","lineNumber":118,"sourceCode":"            throw new IllegalStateException(\"Cannot configure Zookeeper when using Kraft mode\");\n        }\n        this.externalZookeeperConnect = connectString;\n        return self();\n    }\n\n    public KafkaContainer withKraft() {\n        if (this.externalZookeeperConnect != null) {\n            throw new IllegalStateException(\"Cannot configure Kraft mode when Zookeeper configured\");\n        }\n        verifyMinKraftVersion();\n        this.kraftEnabled = true;\n        return self();\n    }\n\n    private void verifyMinKraftVersion() {\n        String actualVersion = DockerImageName.parse(getDockerImageName()).getVersionPart();\n        if (new ComparableVersion(actualVersion).isLessThan(MIN_KRAFT_TAG)) {\n            throw new IllegalArgumentException(\n                String.format(\n                    \"Provided Confluent Platform's version %s is not supported in Kraft mode (must be %s or above)\",\n                    actualVersion,\n                    MIN_KRAFT_TAG\n                )\n            );\n        }\n    }\n\n    private boolean isLessThanCP740() {\n        String actualVersion = DockerImageName.parse(getDockerImageName()).getVersionPart();\n        return new ComparableVersion(actualVersion).isLessThan(\"7.4.0\");\n    }\n\n    public KafkaContainer withClusterId(String clusterId) {\n        Objects.requireNonNull(clusterId, \"clusterId cannot be null\");\n        getContainerDef().withClusterId(clusterId);\n        return self();","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/testcontainers/testcontainers-java/blob/8e549514e3f01c57d70546fbb8599d138f3903e5/modules/kafka/src/main/java/org/testcontainers/containers/KafkaContainer.java#L100-L136","documentation":"KRaft mode in KafkaContainer requires Confluent Platform version MIN_KRAFT_TAG or newer. verifyMinKraftVersion parses the version part of the Docker image name and throws IllegalArgumentException when it is lower than the minimum supported tag, because older cp-kafka images cannot run in KRaft mode.","triggerScenarios":"Calling withKraft() on a KafkaContainer whose image is an older Confluent Platform tag (e.g. confluentinc/cp-kafka:5.x/6.x, below the required minimum), then verifyMinKraftVersion fails the ComparableVersion check.","commonSituations":"Upgrading test code to withKraft() while the Docker image tag was left at an older Confluent version; parameterized image versions from CI properties resolving to an old tag; using a Zookeeper-era image like cp-kafka:6.2.1 with KRaft enabled.","solutions":["Upgrade the image to a Confluent Platform version at or above MIN_KRAFT_TAG (e.g. confluentinc/cp-kafka:7.4.0 or newer)","Alternatively, drop withKraft() and use Zookeeper mode for the older image","Check the resolved tag string — ensure it is a real version (e.g. not 'latest' mapped to an old cached image)"],"exampleFix":"// before\nnew KafkaContainer(DockerImageName.parse(\"confluentinc/cp-kafka:6.2.1\")).withKraft();\n\n// after\nnew KafkaContainer(DockerImageName.parse(\"confluentinc/cp-kafka:7.4.0\")).withKraft();","handlingStrategy":"validation","validationCode":"String tag = DockerImageName.parse(imageName).getVersionPart();\nif (new ComparableVersion(tag).isLessThan(\"7.4.0\")) {\n  throw new IllegalArgumentException(tag + \" does not support KRaft; bump the cp-kafka image version\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  kafka = new KafkaContainer(IMAGE).withKraft();\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().contains(\"not supported in Kraft mode\")) {\n    kafka = new KafkaContainer(DockerImageName.parse(\"confluentinc/cp-kafka:7.4.0\")).withKraft();\n  } else throw e;\n}","preventionTips":["Keep cp-kafka image tags in one constant/property and bump it when adopting withKraft","Check the Confluent Platform KRaft minimum version before enabling KRaft","Avoid floating tags like 'latest' that may resolve to an old cached image","Assert the image version in test setup when parameterizing tags"],"tags":["kafka","kraft","version","image"],"backgroundTag":"unsupported-version","analyzedSha":"8e549514e3f01c57d70546fbb8599d138f3903e5","analyzedAt":"2026-09-12T14:56:41.227Z","contentChangedAt":"2026-09-12T14:56:41.227Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}