From fbe68d516c9bf9ccf880d6be54883899a8b471d2 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Tue, 14 Jun 2022 13:55:53 -0400 Subject: [PATCH] optionally initialize rocksdb from a snapshot fixes https://github.com/lbryio/hub/issues/10 --- docs/docker_examples/docker-compose.yml | 3 ++- docs/docker_examples/hub-compose.yml | 1 + scripts/entrypoint.sh | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/docker_examples/docker-compose.yml b/docs/docker_examples/docker-compose.yml index cc979af..5d33924 100644 --- a/docs/docker_examples/docker-compose.yml +++ b/docs/docker_examples/docker-compose.yml @@ -17,6 +17,7 @@ services: - "lbry_rocksdb:/database" environment: - HUB_COMMAND=scribe + - SNAPSHOT_URL=https://snapshots.lbry.com/hub/lbry-rocksdb.zip command: # for full options, see `scribe --help` - "--daemon_url=http://lbry:lbry@127.0.0.1:9245" - "--max_query_workers=2" @@ -41,7 +42,7 @@ services: - "--elastic_port=9200" # elasticsearch port - "--elastic_notifier_host=127.0.0.1" # address for the elastic sync notifier to connect to - "--elastic_notifier_port=19080" - scribe_hub: + herald: depends_on: - lbcd - scribe_elastic_sync diff --git a/docs/docker_examples/hub-compose.yml b/docs/docker_examples/hub-compose.yml index 2517e63..96e70f5 100644 --- a/docs/docker_examples/hub-compose.yml +++ b/docs/docker_examples/hub-compose.yml @@ -14,6 +14,7 @@ services: - "lbry_rocksdb:/database" environment: - HUB_COMMAND=scribe + - SNAPSHOT_URL=https://snapshots.lbry.com/hub/lbry-rocksdb.zip command: - "--daemon_url=http://lbry:lbry@127.0.0.1:9245" - "--max_query_workers=2" diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 6ff7cb1..bef8856 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -4,6 +4,22 @@ set -euo pipefail +SNAPSHOT_URL="${SNAPSHOT_URL:-}" #off by default. latest snapshot at https://lbry.com/snapshot/hub + +if [[ "$HUB_COMMAND" == "scribe" ]] && [[ -n "$SNAPSHOT_URL" ]] && [[ ! -d /database/lbry-rocksdb ]]; then + files="$(ls)" + echo "Downloading hub snapshot from $SNAPSHOT_URL" + wget --no-verbose --trust-server-names --content-disposition "$SNAPSHOT_URL" + echo "Extracting snapshot..." + filename="$(grep -vf <(echo "$files") <(ls))" # finds the file that was not there before + case "$filename" in + *.tgz|*.tar.gz|*.tar.bz2 ) tar xvf "$filename" --directory /database ;; + *.zip ) unzip "$filename" -d /database/ ;; + * ) echo "Don't know how to extract ${filename}. SNAPSHOT COULD NOT BE LOADED" && exit 1 ;; + esac + rm "$filename" +fi + if [ -z "$HUB_COMMAND" ]; then echo "HUB_COMMAND env variable must be scribe, herald, or scribe-elastic-sync" exit 1