OpenMetadata/bootstrap/openmetadata-ops.sh
Pere Miquel Brull 97b9b75fce
Update openmetadata-ops.sh for collate-spec classpath (#20855)
This fixes an issue we saw in AUTs and sandbox-beta:

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final long java.time.Instant.seconds accessible: module java.base does not "opens java.time" to unnamed module @44075f31
The RCA of this issue is an overriding we are doing on some internal argo lib classes in io.argoproj.workflow.JSON.

This was previously placed in collate-service. In the recent move to collate-spec when preparing the Hybrid Pipeline Service Client, we missed moving this. Then, the classpath was first loading the JSON class from the argo lib, rather than our fixed class inside collate-spec.

This is tricky since running the server from intellij works properly. However, the issue happens when running from openmetadata-server-start.sh, which is the dep used within Docker too.
2025-04-16 10:32:31 +02:00

58 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright 2021 Collate
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Resolve links - $0 may be a softlink
PRG="${0}"
while [ -h "${PRG}" ]; do
ls=`ls -ld "${PRG}"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "${PRG}"`/"$link"
fi
done
BOOTSTRAP_DIR=`dirname ${PRG}`
CONFIG_FILE_PATH=${BOOTSTRAP_DIR}/../conf/openmetadata.yaml
# Which java to use
if [ -z "${JAVA_HOME}" ]; then
JAVA="java"
else
JAVA="${JAVA_HOME}/bin/java"
fi
OPENMETADATA_SETUP_MAIN_CLASS=org.openmetadata.service.util.OpenMetadataOperations
LIBS_DIR="${BOOTSTRAP_DIR}"/../libs/
if [ ${debug} ] ; then
echo $LIBS_DIR
fi
if [ -d "${LIBS_DIR}" ]; then
# First, add collate-service jar to the classpath.
# This is required for cases where we override classes from dependencies.
for file in "${LIBS_DIR}"collate-spec-*.jar;
do
CLASSPATH="$CLASSPATH":"$file"
done
# Then, add the rest of the libraries
for file in "${LIBS_DIR}"*.jar;
do
CLASSPATH="$CLASSPATH":"$file"
done
else
CLASSPATH=`mvn -pl openmetadata-service -q exec:exec -Dexec.executable=echo -Dexec.args="%classpath"`
fi
${JAVA} -Dbootstrap.dir=$BOOTSTRAP_DIR -cp ${CLASSPATH} ${OPENMETADATA_SETUP_MAIN_CLASS} -c $CONFIG_FILE_PATH "$@"