Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#2793] improvement(CI): Starting a Container Using the Singleton Mode #2794

Merged
merged 1 commit into from
Apr 3, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down Expand Up @@ -71,70 +71,83 @@ 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.<String, String>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.<String, String>builder()
.put("HADOOP_USER_NAME", "datastrato")
.build())
.withNetwork(network);
hiveContainer = closer.register(hiveBuilder.build());
hiveContainer.start();
}

public void startTrinoContainer(
String trinoConfDir,
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.<String, String>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.<String, String>builder()
.put("host.docker.internal", "host-gateway")
.put(HiveContainer.HOST_NAME, hiveContainerIp)
.build())
.withFilesToMount(
ImmutableMap.<String, String>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.<String, String>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.<String, String>builder()
.put("host.docker.internal", "host-gateway")
.put(HiveContainer.HOST_NAME, hiveContainerIp)
.build())
.withFilesToMount(
ImmutableMap.<String, String>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() {
Expand Down
Loading