From e2d6f2ba7912c875b3102d0f1df0d3a85a00dce0 Mon Sep 17 00:00:00 2001 From: mchades Date: Wed, 3 Apr 2024 10:21:21 +0800 Subject: [PATCH] try fix --- .../test/container/ContainerSuite.java | 121 ++++++++++-------- 1 file changed, 67 insertions(+), 54 deletions(-) diff --git a/integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/ContainerSuite.java b/integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/ContainerSuite.java index 89c46194603..10db14f5c42 100644 --- a/integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/ContainerSuite.java +++ b/integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/ContainerSuite.java @@ -32,11 +32,11 @@ public class ContainerSuite implements Closeable { private static final String NETWORK_NAME = "gravitino-ci-network"; private static Network network = null; - private static HiveContainer hiveContainer; - private static TrinoContainer trinoContainer; + private static volatile HiveContainer hiveContainer; + private static volatile TrinoContainer trinoContainer; private static TrinoITContainers trinoITContainers; - private static DorisContainer dorisContainer; + private static volatile DorisContainer dorisContainer; protected static final CloseableGroup closer = CloseableGroup.create(); @@ -71,20 +71,24 @@ public Network getNetwork() { } public void startHiveContainer() { - if (hiveContainer != null) { - return; + if (hiveContainer == null) { + synchronized (ContainerSuite.class) { + if (hiveContainer == null) { + // Start Hive container + HiveContainer.Builder hiveBuilder = + HiveContainer.builder() + .withHostName("gravitino-ci-hive") + .withEnvVars( + ImmutableMap.builder() + .put("HADOOP_USER_NAME", "datastrato") + .build()) + .withNetwork(network); + HiveContainer container = closer.register(hiveBuilder.build()); + container.start(); + hiveContainer = container; + } + } } - // Start Hive container - HiveContainer.Builder hiveBuilder = - HiveContainer.builder() - .withHostName("gravitino-ci-hive") - .withEnvVars( - ImmutableMap.builder() - .put("HADOOP_USER_NAME", "datastrato") - .build()) - .withNetwork(network); - hiveContainer = closer.register(hiveBuilder.build()); - hiveContainer.start(); } public void startTrinoContainer( @@ -92,49 +96,58 @@ public void startTrinoContainer( String trinoConnectorLibDir, int gravitinoServerPort, String metalakeName) { - if (trinoContainer != null) { - return; + if (trinoContainer == null) { + synchronized (ContainerSuite.class) { + if (trinoContainer == null) { + // Start Trino container + String hiveContainerIp = hiveContainer.getContainerIpAddress(); + TrinoContainer.Builder trinoBuilder = + TrinoContainer.builder() + .withEnvVars( + ImmutableMap.builder() + .put("HADOOP_USER_NAME", "root") + .put("GRAVITINO_HOST_IP", "host.docker.internal") + .put("GRAVITINO_HOST_PORT", String.valueOf(gravitinoServerPort)) + .put("GRAVITINO_METALAKE_NAME", metalakeName) + .build()) + .withNetwork(getNetwork()) + .withExtraHosts( + ImmutableMap.builder() + .put("host.docker.internal", "host-gateway") + .put(HiveContainer.HOST_NAME, hiveContainerIp) + .build()) + .withFilesToMount( + ImmutableMap.builder() + .put( + TrinoContainer.TRINO_CONTAINER_PLUGIN_GRAVITINO_DIR, + trinoConnectorLibDir) + .build()) + .withExposePorts(ImmutableSet.of(TrinoContainer.TRINO_PORT)) + .withTrinoConfDir(trinoConfDir) + .withMetalakeName(metalakeName) + .withHiveContainerIP(hiveContainerIp); + + TrinoContainer container = closer.register(trinoBuilder.build()); + container.start(); + trinoContainer = container; + } + } } - - // Start Trino container - String hiveContainerIp = hiveContainer.getContainerIpAddress(); - TrinoContainer.Builder trinoBuilder = - TrinoContainer.builder() - .withEnvVars( - ImmutableMap.builder() - .put("HADOOP_USER_NAME", "root") - .put("GRAVITINO_HOST_IP", "host.docker.internal") - .put("GRAVITINO_HOST_PORT", String.valueOf(gravitinoServerPort)) - .put("GRAVITINO_METALAKE_NAME", metalakeName) - .build()) - .withNetwork(getNetwork()) - .withExtraHosts( - ImmutableMap.builder() - .put("host.docker.internal", "host-gateway") - .put(HiveContainer.HOST_NAME, hiveContainerIp) - .build()) - .withFilesToMount( - ImmutableMap.builder() - .put(TrinoContainer.TRINO_CONTAINER_PLUGIN_GRAVITINO_DIR, trinoConnectorLibDir) - .build()) - .withExposePorts(ImmutableSet.of(TrinoContainer.TRINO_PORT)) - .withTrinoConfDir(trinoConfDir) - .withMetalakeName(metalakeName) - .withHiveContainerIP(hiveContainerIp); - - trinoContainer = closer.register(trinoBuilder.build()); - trinoContainer.start(); } public void startDorisContainer() { - if (dorisContainer != null) { - return; + if (dorisContainer == null) { + synchronized (ContainerSuite.class) { + if (dorisContainer == null) { + // Start Doris container + DorisContainer.Builder dorisBuilder = + DorisContainer.builder().withHostName("gravitino-ci-doris").withNetwork(network); + DorisContainer container = closer.register(dorisBuilder.build()); + container.start(); + dorisContainer = container; + } + } } - // Start Doris container - DorisContainer.Builder dorisBuilder = - DorisContainer.builder().withHostName("gravitino-ci-doris").withNetwork(network); - dorisContainer = closer.register(dorisBuilder.build()); - dorisContainer.start(); } public TrinoContainer getTrinoContainer() {