#!/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}" INTERVAL="${STATE_COMPRESS_INTERVAL:-86400}" # 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 compressor in a loop while true; do echo "[compress-state] Running at $(date)" "$BINARY" -p "$CONN" -c "$CHUNK_SIZE" -n "$CHUNKS" || echo "[compress-state] Error: $?" echo "[compress-state] Done. Sleeping ${INTERVAL}s" sleep "$INTERVAL" done