diff --git a/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala b/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
index d6270313cabea..2020c9b6c34af 100644
--- a/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
+++ b/external/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DockerJDBCIntegrationSuite.scala
@@ -99,6 +99,8 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu
val connectionTimeout = timeout(5.minutes)
val keepContainer =
sys.props.getOrElse("spark.test.docker.keepContainer", "false").toBoolean
+ val removePulledImage =
+ sys.props.getOrElse("spark.test.docker.removePulledImage", "true").toBoolean
private var docker: DockerClient = _
// Configure networking (necessary for boot2docker / Docker Machine)
@@ -109,6 +111,7 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu
port
}
private var containerId: String = _
+ private var pulled: Boolean = false
protected var jdbcUrl: String = _
override def beforeAll(): Unit = {
@@ -130,6 +133,7 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu
case e: ImageNotFoundException =>
log.warn(s"Docker image ${db.imageName} not found; pulling image from registry")
docker.pull(db.imageName)
+ pulled = true
}
val hostConfigBuilder = HostConfig.builder()
.privileged(db.privileged)
@@ -215,6 +219,9 @@ abstract class DockerJDBCIntegrationSuite extends SharedSparkSession with Eventu
}
} finally {
docker.removeContainer(containerId)
+ if (removePulledImage && pulled) {
+ docker.removeImage(db.imageName)
+ }
}
}
}
diff --git a/pom.xml b/pom.xml
index 1e052a684edf3..796e0f2f647d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -264,6 +264,7 @@
${session.executionRootDirectory}
false
+ true
1g
@@ -2728,6 +2729,7 @@
true
${spark.test.webdriver.chrome.driver}
${spark.test.docker.keepContainer}
+ ${spark.test.docker.removePulledImage}
__not_used__