From ca7a91c2b280e6481d784f520bd54a9d09f1de21 Mon Sep 17 00:00:00 2001 From: Luca Canali Date: Wed, 15 May 2024 15:08:34 +0200 Subject: [PATCH 1/4] Skip resetting SYSTEM password in the Oracle Free container as it is redundant and ca trigger ORA-04031 --- .../sql/jdbc/OracleDatabaseOnDocker.scala | 31 ------------------- .../sql/jdbc/OracleIntegrationSuite.scala | 6 ++-- .../sql/jdbc/v2/OracleIntegrationSuite.scala | 8 ++--- .../sql/jdbc/v2/OracleNamespaceSuite.scala | 6 ++-- 4 files changed, 10 insertions(+), 41 deletions(-) diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleDatabaseOnDocker.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleDatabaseOnDocker.scala index 88bb23f9c653e..dd6bbf0af8a33 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleDatabaseOnDocker.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleDatabaseOnDocker.scala @@ -17,12 +17,7 @@ package org.apache.spark.sql.jdbc -import java.io.{File, PrintWriter} - -import com.github.dockerjava.api.model._ - import org.apache.spark.internal.Logging -import org.apache.spark.util.Utils class OracleDatabaseOnDocker extends DatabaseOnDocker with Logging { lazy override val imageName = @@ -38,30 +33,4 @@ class OracleDatabaseOnDocker extends DatabaseOnDocker with Logging { override def getJdbcUrl(ip: String, port: Int): String = { s"jdbc:oracle:thin:system/$oracle_password@//$ip:$port/freepdb1" } - - override def beforeContainerStart( - hostConfigBuilder: HostConfig, - containerConfigBuilder: ContainerConfig): Unit = { - try { - val dir = Utils.createTempDir() - val writer = new PrintWriter(new File(dir, "install.sql")) - // SPARK-46592: gvenzl/oracle-free occasionally fails to start with the following error: - // 'ORA-04021: timeout occurred while waiting to lock object', when initializing the - // SYSTEM user. This is due to the fact that the default DDL_LOCK_TIMEOUT is 0, which - // means that the lock will no wait. We set the timeout to 30 seconds to try again. - // TODO: This workaround should be removed once the issue is fixed in the image. - // https://github.com/gvenzl/oci-oracle-free/issues/35 - writer.write("ALTER SESSION SET DDL_LOCK_TIMEOUT = 30;\n") - writer.write(s"""ALTER USER SYSTEM IDENTIFIED BY "$oracle_password";""") - writer.close() - val newBind = new Bind( - dir.getAbsolutePath, - new Volume("/docker-entrypoint-initdb.d"), - AccessMode.DEFAULT) - hostConfigBuilder.withBinds(hostConfigBuilder.getBinds :+ newBind: _*) - } catch { - case e: Exception => - logWarning("Failed to create install.sql file", e) - } - } } diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala index 1eee65986fccd..9cc9817deea29 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala @@ -54,10 +54,10 @@ import org.apache.spark.tags.DockerTest * A sequence of commands to build the Oracle Database Free container image: * $ git clone https://github.com/oracle/docker-images.git * $ cd docker-images/OracleDatabase/SingleInstance/dockerfiles - * $ ./buildContainerImage.sh -v 23.2.0 -f - * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.2.0-free + * $ ./buildContainerImage.sh -v 23.4.0 -f + * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.4.0-free * - * This procedure has been validated with Oracle Database Free version 23.2.0, + * This procedure has been validated with Oracle Database Free version 23.4.0, * and with Oracle Express Edition versions 18.4.0 and 21.3.0 */ @DockerTest diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala index b35018ec16dce..ad7b229d8699f 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala @@ -48,11 +48,11 @@ import org.apache.spark.tags.DockerTest * * A sequence of commands to build the Oracle Database Free container image: * $ git clone https://github.com/oracle/docker-images.git - * $ cd docker-images/OracleDatabase/SingleInstance/dockerfiles - * $ ./buildContainerImage.sh -v 23.2.0 -f - * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.2.0-free + * $ cd docker-images/OracleDatabase/SingleInstance/dockerfiles0 + * $ ./buildContainerImage.sh -v 23.4.0 -f + * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.4.0-free * - * This procedure has been validated with Oracle Database Free version 23.2.0, + * This procedure has been validated with Oracle Database Free version 23.4.0, * and with Oracle Express Edition versions 18.4.0 and 21.3.0 */ @DockerTest diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala index 05f38102d4101..a1c8556071265 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala @@ -46,10 +46,10 @@ import org.apache.spark.tags.DockerTest * A sequence of commands to build the Oracle Database Free container image: * $ git clone https://github.com/oracle/docker-images.git * $ cd docker-images/OracleDatabase/SingleInstance/dockerfiles - * $ ./buildContainerImage.sh -v 23.2.0 -f - * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.2.0-free + * $ ./buildContainerImage.sh -v 23.4.0 -f + * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.4.0-free * - * This procedure has been validated with Oracle Database Free version 23.2.0, + * This procedure has been validated with Oracle Database Free version 23.4.0, * and with Oracle Express Edition versions 18.4.0 and 21.3.0 */ @DockerTest From e09e746bf231d7195802016cbfd22dbee00d5a60 Mon Sep 17 00:00:00 2001 From: Kent Yao Date: Thu, 16 May 2024 10:06:52 +0800 Subject: [PATCH 2/4] Update connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala --- .../org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala index a1c8556071265..48f8282e58804 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleNamespaceSuite.scala @@ -50,7 +50,7 @@ import org.apache.spark.tags.DockerTest * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.4.0-free * * This procedure has been validated with Oracle Database Free version 23.4.0, - * and with Oracle Express Edition versions 18.4.0 and 21.3.0 + * and with Oracle Express Edition versions 18.4.0 and 21.4.0 */ @DockerTest class OracleNamespaceSuite extends DockerJDBCIntegrationSuite with V2JDBCNamespaceTest { From 3fc56e78f0d8815ff5ba3331ace82112a0dd8730 Mon Sep 17 00:00:00 2001 From: Kent Yao Date: Thu, 16 May 2024 10:07:15 +0800 Subject: [PATCH 3/4] Update connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala --- .../org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala index ad7b229d8699f..5d630dd7bd61d 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/OracleIntegrationSuite.scala @@ -53,7 +53,7 @@ import org.apache.spark.tags.DockerTest * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.4.0-free * * This procedure has been validated with Oracle Database Free version 23.4.0, - * and with Oracle Express Edition versions 18.4.0 and 21.3.0 + * and with Oracle Express Edition versions 18.4.0 and 21.4.0 */ @DockerTest class OracleIntegrationSuite extends DockerJDBCIntegrationV2Suite with V2JDBCTest { From af5568d8a6030e3a876ee31647180c380e5d8771 Mon Sep 17 00:00:00 2001 From: Kent Yao Date: Thu, 16 May 2024 10:07:38 +0800 Subject: [PATCH 4/4] Update connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala --- .../org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala index 9cc9817deea29..2b2596289548c 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/OracleIntegrationSuite.scala @@ -58,7 +58,7 @@ import org.apache.spark.tags.DockerTest * $ export ORACLE_DOCKER_IMAGE_NAME=oracle/database:23.4.0-free * * This procedure has been validated with Oracle Database Free version 23.4.0, - * and with Oracle Express Edition versions 18.4.0 and 21.3.0 + * and with Oracle Express Edition versions 18.4.0 and 21.4.0 */ @DockerTest class OracleIntegrationSuite extends DockerJDBCIntegrationSuite with SharedSparkSession {