genmod / start.sh
pbordescnil's picture
Avoid Neo4j config prefix for dump variables
e80387a
Raw
History Blame
1.71 kB
set -euo pipefail
DUMP_REPO="${GENMOD_DUMP_REPO:-cnil/genmod-dump-neo4j}"
DUMP_REVISION="${GENMOD_DUMP_REVISION:-main}"
DUMP_BASE_URL="https://huggingface.co/datasets/${DUMP_REPO}/resolve/${DUMP_REVISION}"
AUTH_HEADER="Authorization: Bearer ${HF_TOKEN}"
# Load the database backup. Metadata is optional for compatibility with the
# original dump; the application then falls back to its historical date.
wget --header="${AUTH_HEADER}" "${DUMP_BASE_URL}/system.dump" -O /backups/system.dump
wget --header="${AUTH_HEADER}" "${DUMP_BASE_URL}/neo4j.dump" -O /backups/neo4j.dump
if ! wget --header="${AUTH_HEADER}" "${DUMP_BASE_URL}/database_metadata.json" \
-O /backups/database_metadata.json; then
rm -f /backups/database_metadata.json
fi
neo4j-admin database load --expand-commands system --from-path=/backups --overwrite-destination=true
neo4j-admin database load --expand-commands neo4j --from-path=/backups --overwrite-destination=true
# start database
/startup/docker-entrypoint.sh neo4j &
# The Community importer cannot create indexes through --schema. Ensure that
# dumps produced by the refresh Job receive the required indexes before the
# application starts serving searches.
until cypher-shell -u neo4j -p genealogiemodeles \
"RETURN 1;" >/dev/null 2>&1; do
sleep 2
done
cypher-shell -u neo4j -p genealogiemodeles \
"CREATE INDEX IF NOT EXISTS FOR (m:Model) ON (m.name);
CREATE INDEX IF NOT EXISTS FOR (a:Author) ON (a.name);
CREATE INDEX IF NOT EXISTS FOR (d:Dataset) ON (d.name);
CALL db.awaitIndexes(600);"
# start tool
python3 /application_neo4j/app.py neo4j genealogiemodeles &
# wait for any process to exit
wait -n
# exit with status of process that exited first
exit $?