Copilot commented on code in PR #10377:
URL: https://github.com/apache/gravitino/pull/10377#discussion_r2939689821


##########
dev/docker/gravitino/gravitino-dependency.sh:
##########
@@ -95,11 +87,15 @@ find ${gravitino_home}/bundles/aws-bundle/build/libs/ -name 
'gravitino-aws-bundl
 find ${gravitino_home}/bundles/gcp-bundle/build/libs/ -name 
'gravitino-gcp-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${fileset_lib_dir}" \;
 find ${gravitino_home}/bundles/azure-bundle/build/libs/ -name 
'gravitino-azure-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${fileset_lib_dir}" \;
 
-# Copy the Aliyun, AWS, GCP and Azure bundles to the Iceberg REST server libs
-find ${gravitino_home}/bundles/iceberg-gcp-bundle/build/libs/ -name 
'gravitino-iceberg-gcp-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${gravitino_iceberg_rest_dir}" \;
-find ${gravitino_home}/bundles/iceberg-aws-bundle/build/libs/ -name 
'gravitino-iceberg-aws-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${gravitino_iceberg_rest_dir}" \;
-find ${gravitino_home}/bundles/iceberg-azure-bundle/build/libs/ -name 
'gravitino-iceberg-azure-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${gravitino_iceberg_rest_dir}" \;
-find ${gravitino_home}/bundles/iceberg-aliyun-bundle/build/libs/ -name 
'gravitino-iceberg-aliyun-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${gravitino_iceberg_rest_dir}" \;
+iceberg_bundle_dir="${gravitino_dir}/packages/gravitino/iceberg-bundles"
+
+# Copy the Aliyun, AWS, GCP and Azure bundles to the Iceberg bundles directory
+mkdir -p "${iceberg_bundle_dir}"
+find ${gravitino_home}/bundles/iceberg-gcp-bundle/build/libs/ -name 
'gravitino-iceberg-gcp-bundle-*.jar' ! -name '*-empty.jar' -exec cp -v {} 
"${iceberg_bundle_dir}" \;

Review Comment:
   `iceberg_bundle_dir` is built by repeating the package root 
(`${gravitino_dir}/packages/gravitino/...`) even though `gravitino_package_dir` 
is available. Prefer `${gravitino_package_dir}/iceberg-bundles` to keep path 
construction centralized and less error-prone.



##########
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

Review Comment:
   The script creates target directories for MySQL driver links, but not for 
the PostgreSQL catalog. If `catalogs/jdbc-postgresql/libs` is missing in some 
packaging scenarios, these `ln` commands will fail and abort startup (due to 
`set -e`). Consider creating the directory with `mkdir -p` alongside the others.
   



##########
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 -sv {} 
"${lakehouse_iceberg_lib_dir}" \; -exec ln -sv {} "${iceberg_rest_lib_dir}" \;

Review Comment:
   The `find` command for Iceberg bundles uses an unquoted variable (`find 
${iceberg_bundle_dir} ...`) while other `find` usages in this script are 
quoted. Quote it to avoid word-splitting/globbing issues and keep the style 
consistent.
   



##########
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 -sv {} 
"${lakehouse_iceberg_lib_dir}" \; -exec ln -sv {} "${iceberg_rest_lib_dir}" \;

Review Comment:
   `start-gravitino.sh` runs with `set -e`, but the Iceberg bundle linking uses 
`ln -sv` (no `-f`). If the container restarts (or links already exist), `ln` 
will fail and abort startup. Use a force/idempotent link creation (e.g., `ln 
-sf...`) consistently, as done for the JDBC drivers.
   



##########
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}"
 
+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 "${jdbc_driver_dir}/${mysql_driver}"

Review Comment:
   `jdbc_driver_dir` duplicates the already-defined `gravitino_package_dir` 
prefix. Using `${gravitino_package_dir}/jdbc-drivers` avoids repeating the path 
and reduces the chance of future inconsistencies if the package root changes.



-- 
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]

Reply via email to