{"record":{"id":"7d9f2946496a3ba4","repo":"testcontainers/testcontainers-java","slug":"redpanda-version-must-be-v22-2-1","errorCode":null,"errorMessage":"Redpanda version must be >= v22.2.1","messagePattern":"Redpanda version must be >= v22\\.2\\.1","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/redpanda/src/main/java/org/testcontainers/redpanda/RedpandaContainer.java","lineNumber":86,"sourceCode":"    @Deprecated\n    private final Set<Supplier<Listener>> listenersValueSupplier = new HashSet<>();\n\n    private final Map<String, Supplier<String>> listeners = new HashMap<>();\n\n    public RedpandaContainer(String image) {\n        this(DockerImageName.parse(image));\n    }\n\n    public RedpandaContainer(DockerImageName imageName) {\n        super(imageName);\n        imageName.assertCompatibleWith(REDPANDA_IMAGE, IMAGE);\n\n        boolean isLessThanBaseVersion = new ComparableVersion(imageName.getVersionPart()).isLessThan(\"v22.2.1\");\n        boolean isPublicCompatibleImage =\n            REDPANDA_FULL_IMAGE_NAME.equals(imageName.getUnversionedPart()) ||\n            IMAGE_NAME.equals(imageName.getUnversionedPart());\n        if (isPublicCompatibleImage && isLessThanBaseVersion) {\n            throw new IllegalArgumentException(\"Redpanda version must be >= v22.2.1\");\n        }\n\n        withExposedPorts(REDPANDA_PORT, REDPANDA_ADMIN_PORT, SCHEMA_REGISTRY_PORT, REST_PROXY_PORT);\n        withCreateContainerCmdModifier(cmd -> {\n            cmd.withEntrypoint(\"/entrypoint-tc.sh\");\n            cmd.withUser(\"root:root\");\n        });\n        waitingFor(Wait.forLogMessage(\".*Successfully started Redpanda!.*\", 1));\n        withCopyFileToContainer(\n            MountableFile.forClasspathResource(\"testcontainers/entrypoint-tc.sh\", 0700),\n            \"/entrypoint-tc.sh\"\n        );\n        withCommand(\"redpanda\", \"start\", \"--mode=dev-container\", \"--smp=1\", \"--memory=1G\");\n    }\n\n    @Override\n    protected void configure() {\n        this.listenersValueSupplier.stream()","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/testcontainers/testcontainers-java/blob/8e549514e3f01c57d70546fbb8599d138f3903e5/modules/redpanda/src/main/java/org/testcontainers/redpanda/RedpandaContainer.java#L68-L104","documentation":"RedpandaContainer's constructor validates the image tag of the Redpanda docker image being used. Images on the redpandadata/vectorized official repositories older than v22.2.1 are not supported by Testcontainers, so it throws IllegalArgumentException at construction time. The check only applies to the known public compatible image names.","triggerScenarios":"Creating new RedpandaContainer(DockerImageName.parse(\"vectorized/redpanda:v21.x\")) or any tag whose version part is less than v22.2.1, e.g. v22.1.x or older, via new RedpandaContainer(\"redpandadata/redpanda:v22.1.1\").","commonSituations":"Projects pinned to old Redpanda versions in build scripts, upgrading testcontainers but keeping an old image tag, or copying tutorial code with a legacy vectorized/redpanda image.","solutions":["Upgrade the image tag to v22.2.1 or newer, e.g. redpandadata/redpanda:v23.1.2.","Use DockerImageName.parse(\"redpandadata/redpanda:latest\") or a recent pinned tag in tests.","If you must test against an old broker, bypass via new RedpandaContainer(DockerImageName.parse(...).asCompatibleSubstituteFor(\"redpandadata/redpanda\")) — only if you accept it may not work.","Update any CI config or docker-compose-derived version strings feeding the container constructor."],"exampleFix":"// before\nRedpandaContainer container = new RedpandaContainer(\"vectorized/redpanda:v21.11.9\");\n// after\nRedpandaContainer container = new RedpandaContainer(DockerImageName.parse(\"redpandadata/redpanda:v23.1.2\"));","handlingStrategy":"validation","validationCode":"DockerImageName img = DockerImageName.parse(image);\nString version = img.getVersionPart(); // e.g. v23.1.2\nif (version.compareTo(\"v22.2.1\") < 0) throw new IllegalArgumentException(\"Redpanda image must be >= v22.2.1: \" + image);","typeGuard":null,"tryCatchPattern":"try {\n  RedpandaContainer c = new RedpandaContainer(imageName);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().contains(\"Redpanda version must be\")) {\n    throw new ConfigurationException(\"Upgrade Redpanda image to >= v22.2.1, got: \" + imageName); }\n  throw e;\n}","preventionTips":["Pin Redpanda image tags to >= v22.2.1 in one shared constant","Use redpandadata/redpanda (not legacy vectorized/redpanda) images","Centralize test image versions and review them when upgrading testcontainers"],"tags":["version-check","redpanda","docker-image","illegal-argument"],"backgroundTag":"invalid-config-value","analyzedSha":"8e549514e3f01c57d70546fbb8599d138f3903e5","analyzedAt":"2026-09-12T14:56:41.227Z","contentChangedAt":"2026-09-12T14:56:41.227Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}