diff --git a/docker/complement/conf/start_for_complement.sh b/docker/complement/conf/start_for_complement.sh index e0cd275ff3..8ed28d11cb 100755 --- a/docker/complement/conf/start_for_complement.sh +++ b/docker/complement/conf/start_for_complement.sh @@ -6,7 +6,7 @@ set -e echo "Complement Synapse launcher" echo " Args: $*" -echo " Env: SYNAPSE_COMPLEMENT_DATABASE=$SYNAPSE_COMPLEMENT_DATABASE SYNAPSE_COMPLEMENT_USE_WORKERS=$SYNAPSE_COMPLEMENT_USE_WORKERS SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR=$SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR SYNAPSE_USE_RUST_DRIVER=$SYNAPSE_USE_RUST_DRIVER" +echo " Env: SYNAPSE_COMPLEMENT_DATABASE=$SYNAPSE_COMPLEMENT_DATABASE SYNAPSE_COMPLEMENT_USE_WORKERS=$SYNAPSE_COMPLEMENT_USE_WORKERS SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR=$SYNAPSE_COMPLEMENT_USE_ASYNCIO_REACTOR SYNAPSE_USE_RUST_DRIVER=$SYNAPSE_USE_RUST_DRIVER SYNAPSE_RUST_STATE_RES=$SYNAPSE_RUST_STATE_RES" function log { d=$(printf '%(%Y-%m-%d %H:%M:%S)T,%.3s\n' ${EPOCHREALTIME/./ }) @@ -128,6 +128,13 @@ openssl x509 -req -in /conf/server.tls.csr \ export SYNAPSE_TLS_CERT=/conf/server.tls.crt export SYNAPSE_TLS_KEY=/conf/server.tls.key +# Resolve state in Rust (`experimental_features.rust_state_res`). This goes into +# the shared config's `experimental_features`, as a config snippet with its own +# `experimental_features` would replace the shared one. +if [[ -n "$SYNAPSE_RUST_STATE_RES" ]]; then + sed -i "s/^experimental_features:$/experimental_features:\n rust_state_res: $SYNAPSE_RUST_STATE_RES/" /conf/shared.yaml.j2 +fi + # Add a directory for tests to add config overrides if they want mkdir --parents /conf/homeserver.d export _SYNAPSE_COMPLEMENT_EXTRA_CONFIG_DIR=/conf/homeserver.d diff --git a/scripts-dev/complement.sh b/scripts-dev/complement.sh index ccbbc7b924..6e2bf37e42 100755 --- a/scripts-dev/complement.sh +++ b/scripts-dev/complement.sh @@ -364,6 +364,12 @@ main() { export PASS_SYNAPSE_USE_RUST_DRIVER=true fi + if [[ -n "$RUST_STATE_RES" ]]; then + # Set `experimental_features.rust_state_res` (off, shadow or on). The Rust + # state resolution needs RUST_DRIVER=1. + export PASS_SYNAPSE_RUST_STATE_RES="$RUST_STATE_RES" + fi + if [[ -n "$UNIX_SOCKETS" ]]; then # Enable full on Unix socket mode for Synapse, Redis and Postgresql export PASS_SYNAPSE_USE_UNIX_SOCKET=1