#!/bin/sh set -e BINARY="/build/synapse_auto_compressor" REPO_DIR="/build/rust-synapse-compress-state" DB_PASS=$(cat /run/secrets/db_password) CONN="postgresql://synapse:${DB_PASS}@db:5432/synapse" CHUNK_SIZE="${STATE_COMPRESS_CHUNK_SIZE:-500}" CHUNKS="${STATE_COMPRESS_CHUNKS:-100}" SCHEDULE="${STATE_COMPRESS_SCHEDULE:-0 3 * * *}" # Build from source if binary doesn't exist if [ ! -f "$BINARY" ]; then echo "[compress-state] Binary not found, building from source..." apk add --no-cache git openssl-dev openssl-libs-static perl make musl-dev jemalloc-dev rm -rf "$REPO_DIR" git clone https://github.com/matrix-org/rust-synapse-compress-state "$REPO_DIR" cd "$REPO_DIR" cargo build --release -p synapse_auto_compressor cp target/release/synapse_auto_compressor "$BINARY" echo "[compress-state] Build complete" # Clean up source to save space rm -rf "$REPO_DIR" else echo "[compress-state] Using cached binary" fi # Run once at startup echo "[compress-state] Running initial compression at $(date)" "$BINARY" -p "$CONN" -c "$CHUNK_SIZE" -n "$CHUNKS" || echo "[compress-state] Error: $?" # Set up cron job CRON_SCRIPT="/build/run_compressor.sh" cat > "$CRON_SCRIPT" <