Copilot commented on code in PR #10377:
URL: https://github.com/apache/gravitino/pull/10377#discussion_r2939737636
##########
dev/docker/gravitino/start-gravitino.sh:
##########
@@ -26,6 +26,42 @@ cd ${gravitino_dir}
python bin/rewrite_gravitino_server_config.py
+# Create soft links for JDBC drivers
+jdbc_driver_dir="${gravitino_dir}/jdbc-drivers"
+
+if [ -d "${jdbc_driver_dir}" ]; then
+ # Link MySQL driver to catalogs that need it
+ mkdir -p "${gravitino_dir}/catalogs/jdbc-mysql/libs"
+ mkdir -p "${gravitino_dir}/catalogs/jdbc-doris/libs"
+ mkdir -p "${gravitino_dir}/catalogs/jdbc-starrocks/libs"
+ mkdir -p "${gravitino_dir}/catalogs/lakehouse-iceberg/libs"
+ mkdir -p "${gravitino_dir}/iceberg-rest-server/libs"
+ mkdir -p "${gravitino_dir}/libs"
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/jdbc-mysql/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/jdbc-doris/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/jdbc-starrocks/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/lakehouse-iceberg/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/iceberg-rest-server/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/libs/" \;
+
+ # Link PostgreSQL driver to catalogs that need it
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/catalogs/jdbc-postgresql/libs/" \;
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/catalogs/lakehouse-iceberg/libs/" \;
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/iceberg-rest-server/libs/" \;
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/libs/" \;
Review Comment:
The PostgreSQL driver symlink commands write into
"${gravitino_dir}/catalogs/jdbc-postgresql/libs/", but this script doesn’t
create that directory (unlike the MySQL case). If the directory isn’t present
in the packaged distribution, `ln` will fail and the container won’t start. Add
a `mkdir -p "${gravitino_dir}/catalogs/jdbc-postgresql/libs"` before these
`find ... -exec ln ...` lines (or ensure it’s created unconditionally with the
other mkdirs).
##########
dev/docker/gravitino/start-gravitino.sh:
##########
@@ -26,6 +26,42 @@ cd ${gravitino_dir}
python bin/rewrite_gravitino_server_config.py
+# Create soft links for JDBC drivers
+jdbc_driver_dir="${gravitino_dir}/jdbc-drivers"
+
+if [ -d "${jdbc_driver_dir}" ]; then
+ # Link MySQL driver to catalogs that need it
+ mkdir -p "${gravitino_dir}/catalogs/jdbc-mysql/libs"
+ mkdir -p "${gravitino_dir}/catalogs/jdbc-doris/libs"
+ mkdir -p "${gravitino_dir}/catalogs/jdbc-starrocks/libs"
+ mkdir -p "${gravitino_dir}/catalogs/lakehouse-iceberg/libs"
+ mkdir -p "${gravitino_dir}/iceberg-rest-server/libs"
+ mkdir -p "${gravitino_dir}/libs"
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/jdbc-mysql/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/jdbc-doris/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/jdbc-starrocks/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/catalogs/lakehouse-iceberg/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/iceberg-rest-server/libs/" \;
+ find "${jdbc_driver_dir}" -name "mysql-connector-java-*.jar" -exec ln -sfv
{} "${gravitino_dir}/libs/" \;
+
+ # Link PostgreSQL driver to catalogs that need it
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/catalogs/jdbc-postgresql/libs/" \;
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/catalogs/lakehouse-iceberg/libs/" \;
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/iceberg-rest-server/libs/" \;
+ find "${jdbc_driver_dir}" -name "postgresql-*.jar" -exec ln -sfv {}
"${gravitino_dir}/libs/" \;
+fi
+
+# Create soft links for Iceberg bundle jars
+iceberg_bundle_dir="${gravitino_dir}/iceberg-bundles"
+lakehouse_iceberg_lib_dir="${gravitino_dir}/catalogs/lakehouse-iceberg/libs"
+iceberg_rest_lib_dir="${gravitino_dir}/iceberg-rest-server/libs"
+
+if [ -d "${iceberg_bundle_dir}" ]; then
+ mkdir -p "${lakehouse_iceberg_lib_dir}"
+ mkdir -p "${iceberg_rest_lib_dir}"
+ find ${iceberg_bundle_dir} -name '*.jar' -exec ln -sfv {}
"${lakehouse_iceberg_lib_dir}" \; -exec ln -sfv {} "${iceberg_rest_lib_dir}" \;
Review Comment:
`find ${iceberg_bundle_dir} ...` leaves `iceberg_bundle_dir` unquoted, while
the rest of this script consistently quotes paths. This can break if the
install path contains whitespace or glob characters. Quote the variable (and
keep quoting consistent with the JDBC section).
##########
dev/docker/gravitino/gravitino-dependency.sh:
##########
@@ -64,22 +64,14 @@ mkdir -p "${gravitino_staging_dir}"
echo "Start to download the jar package"
-mysql_driver="mysql-connector-java-8.0.27.jar"
-wget
"https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.27/$mysql_driver"
-O "${gravitino_staging_dir}/${mysql_driver}"
-cp "${gravitino_staging_dir}/${mysql_driver}"
"${gravitino_package_dir}/catalogs/jdbc-mysql/libs/"
-cp "${gravitino_staging_dir}/${mysql_driver}"
"${gravitino_package_dir}/catalogs/jdbc-doris/libs/"
-cp "${gravitino_staging_dir}/${mysql_driver}"
"${gravitino_package_dir}/catalogs/jdbc-starrocks/libs/"
-cp "${gravitino_staging_dir}/${mysql_driver}"
"${gravitino_package_dir}/catalogs/lakehouse-iceberg/libs/"
-cp "${gravitino_staging_dir}/${mysql_driver}" "${gravitino_iceberg_rest_dir}"
-cp "${gravitino_staging_dir}/${mysql_driver}" "${gravitino_package_dir}/libs/"
+jdbc_driver_dir="${gravitino_dir}/packages/gravitino/jdbc-drivers"
+mkdir -p "${jdbc_driver_dir}"
Review Comment:
After switching JDBC downloads to `${jdbc_driver_dir}`,
`gravitino_staging_dir` is no longer used anywhere except for being created
earlier in the script. Consider removing the unused `gravitino_staging_dir`
variable and the corresponding `mkdir -p` to avoid confusion about where jars
are expected to be staged.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]