{"record":{"id":"6ce54831a517cce4","repo":"testcontainers/testcontainers-java","slug":"failed-to-connect-elasticsearch-container-to-ad-hoc-shared","errorCode":null,"errorMessage":"Failed to connect Elasticsearch container to ad-hoc shared network","messagePattern":"Failed to connect Elasticsearch container to ad-hoc shared network","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/KibanaContainer.java","lineNumber":514,"sourceCode":"                \"before KibanaContainer is started.\"\n            );\n        }\n        return id.trim();\n    }\n\n    private void connectRunningContainerToNetwork(String containerId, Network network) {\n        String networkId = network.getId();\n\n        try {\n            DockerClientFactory\n                .instance()\n                .client()\n                .connectToNetworkCmd()\n                .withContainerId(containerId)\n                .withNetworkId(networkId)\n                .exec();\n        } catch (Exception e) {\n            throw new IllegalStateException(\"Failed to connect Elasticsearch container to ad-hoc shared network\", e);\n        }\n    }\n\n    private static void ensureCompatibleVersion(String esVersion) {\n        ComparableVersion comparableVersion = new ComparableVersion(esVersion);\n        if (comparableVersion.isLessThan(MINIMUM_SUPPORTED_VERSION)) {\n            throw new IllegalArgumentException(\n                String.format(\n                    \"Kibana version %s is not supported. Minimum version is %s\",\n                    comparableVersion,\n                    MINIMUM_SUPPORTED_VERSION\n                )\n            );\n        }\n    }\n\n    private String createKibanaServiceAccountToken(String protocol) {\n        if (elasticsearch == null) {","sourceCodeStart":496,"sourceCodeEnd":532,"githubUrl":"https://github.com/testcontainers/testcontainers-java/blob/8e549514e3f01c57d70546fbb8599d138f3903e5/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/KibanaContainer.java#L496-L532","documentation":"When Kibana runs in managed mode against a pre-existing Elasticsearch network setup, the library creates an ad-hoc shared Docker network and connects the already-running Elasticsearch container to it via connectToNetworkCmd(). If the Docker API call throws for any reason, the library wraps it in this IllegalStateException to signal the shared-network setup failed.","triggerScenarios":"Docker daemon rejecting connectToNetworkCmd for the running ES container: network already removed mid-test, container stopped between network creation and connect, Docker daemon restart, or any exception from the docker-java client during the exec() call.","commonSituations":"Flaky CI environments where the Docker daemon is restarted or under load; running tests with remote/docker-in-docker setups where network operations behave differently; parallel tests tearing down shared networks while another test connects a container.","solutions":["Retry the test setup; transient Docker daemon failures are the usual cause.","Check Docker daemon health (docker ps, docker network ls) and that the ES container is still running when Kibana starts.","Avoid parallel test suites sharing ad-hoc networks; give each test its own network/container chain.","Ensure Docker and testcontainers versions are current — older docker-java versions have network-connect race bugs."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// wrap test startup\ntry {\n    kibana.start();\n} catch (IllegalStateException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"ad-hoc shared network\")) {\n        // transient docker failure: verify daemon, then retry once\n        if (!dockerDaemonHealthy()) throw e;\n        es.stop(); kibana.stop(); retrySetup();\n    } else throw e;\n}","preventionTips":["Keep Docker and testcontainers versions up to date.","Avoid parallel suites sharing ad-hoc networks; isolate containers per test class.","Monitor Docker daemon health in CI before running container tests."],"tags":["testcontainers","docker","network","elasticsearch","kibana"],"backgroundTag":"network-request-failed","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"}