Skip to content

Commit 4619ff8

Browse files
authored
HIVE-29462: Log start/init times for Docker resources (#6321)
1 parent c4150d5 commit 4619ff8

8 files changed

Lines changed: 18 additions & 20 deletions

File tree

itests/util/src/main/java/org/apache/hadoop/hive/ql/externalDB/DockerizedDatabase.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,14 @@ private ProcessResults runCmdAndPrintStreams(String[] cmd, long secondsToWait)
9696

9797
public void start() throws Exception {
9898
runCmdAndPrintStreams(buildRmCmd(), 600);
99+
long startTime = System.currentTimeMillis();
99100
if (runCmdAndPrintStreams(buildRunCmd(), 600).rc != 0) {
100101
printDockerEvents();
101102
throw new RuntimeException("Unable to start docker container");
102103
}
103-
long startTime = System.currentTimeMillis();
104+
// 1. Time measured for the docker run command to complete.
105+
long initStartTime = System.currentTimeMillis();
106+
LOG.info("Started docker container in {} ms, waiting for init...", initStartTime - startTime);
104107
ProcessResults pr;
105108
do {
106109
Thread.sleep(1000);
@@ -109,13 +112,15 @@ public void start() throws Exception {
109112
printDockerEvents();
110113
throw new RuntimeException("Failed to get docker logs");
111114
}
112-
} while (startTime + MAX_STARTUP_WAIT >= System.currentTimeMillis() && !isContainerReady(pr));
113-
if (startTime + MAX_STARTUP_WAIT < System.currentTimeMillis()) {
115+
} while (initStartTime + MAX_STARTUP_WAIT >= System.currentTimeMillis() && !isContainerReady(pr));
116+
if (initStartTime + MAX_STARTUP_WAIT < System.currentTimeMillis()) {
114117
printDockerEvents();
115118
throw new RuntimeException(
116119
String.format("Container initialization failed within %d seconds. Please check the hive logs.",
117120
MAX_STARTUP_WAIT / 1000));
118121
}
122+
// 2. Time measured for Docker to be fully initialized (i.e., when the DB is actually ready to use from the start).
123+
LOG.info("Initialized docker container in {} ms", System.currentTimeMillis() - initStartTime);
119124
super.start();
120125
}
121126

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/DatabaseRule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ public String getDb() {
6565
public abstract String getInitialJdbcUrl();
6666

6767
@Override
68-
public abstract void before() throws Exception;
68+
public abstract void before();
69+
6970
@Override
7071
public abstract void after();
7172

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/Derby.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public String getDb() {
8282
};
8383

8484
@Override
85-
public void before() throws Exception {
85+
public void before() {
8686
MetastoreSchemaTool.setHomeDirForTesting();
8787
}
8888

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/Mariadb.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@
2121
import org.testcontainers.containers.MariaDBContainer;
2222
import org.testcontainers.utility.DockerImageName;
2323

24-
import java.io.IOException;
25-
2624
public class Mariadb extends DatabaseRule {
2725
private final MariaDBContainer<?> container = new MariaDBContainer<>(DockerImageName.parse("mariadb:11.4"));
2826

2927
@Override
30-
public void before() throws IOException, InterruptedException {
28+
public void before() {
3129
container.start();
3230
}
3331

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/Mssql.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import org.testcontainers.containers.MSSQLServerContainer;
2222
import org.testcontainers.utility.DockerImageName;
2323

24-
import java.io.IOException;
25-
2624
/**
2725
* JUnit TestRule for Mssql.
2826
*/
@@ -31,7 +29,7 @@ public class Mssql extends DatabaseRule {
3129
new MSSQLServerContainer<>(DockerImageName.parse("mcr.microsoft.com/mssql/server:2019-latest")).acceptLicense();
3230

3331
@Override
34-
public void before() throws IOException, InterruptedException {
32+
public void before() {
3533
container.start();
3634
}
3735

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/Mysql.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,15 @@
2020
import org.testcontainers.containers.MySQLContainer;
2121
import org.testcontainers.utility.DockerImageName;
2222

23-
import java.io.IOException;
24-
2523
/**
2624
* JUnit TestRule for MySql.
2725
*/
2826
public class Mysql extends DatabaseRule {
2927
private final MySQLContainer<?> container =
3028
new MySQLContainer<>(DockerImageName.parse("mysql:8.4.3")).withConfigurationOverride("");
29+
3130
@Override
32-
public void before() throws IOException, InterruptedException {
31+
public void before() {
3332
container.start();
3433
}
3534

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/Oracle.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,16 @@
2020
import org.testcontainers.containers.OracleContainer;
2121
import org.testcontainers.utility.DockerImageName;
2222

23-
import java.io.IOException;
24-
2523
/**
2624
* JUnit TestRule for Oracle.
2725
*/
2826
public class Oracle extends DatabaseRule {
2927
private final DockerImageName name =
3028
DockerImageName.parse("abstractdog/oracle-xe:18.4.0-slim").asCompatibleSubstituteFor("gvenzl/oracle-xe");
3129
private final OracleContainer container = new OracleContainer(name).withEnv("ORACLE_PASSWORD", "oracle");
30+
3231
@Override
33-
public void before() throws IOException, InterruptedException {
32+
public void before() {
3433
container.start();
3534
}
3635

standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/dbinstall/rules/Postgres.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import org.testcontainers.containers.PostgreSQLContainer;
2121
import org.testcontainers.utility.DockerImageName;
2222

23-
import java.io.IOException;
24-
2523
/**
2624
* JUnit TestRule for Postgres.
2725
*/
@@ -37,7 +35,7 @@ protected Postgres(DockerImageName dockerImageName) {
3735
}
3836

3937
@Override
40-
public void before() throws IOException, InterruptedException {
38+
public void before() {
4139
container.start();
4240
}
4341

0 commit comments

Comments
 (0)