Dépannage Polymarket
Procédures exactes de reprise pour la configuration, les sources, le collecteur et ClickHouse.
Windows et WSL 2
Chaque entrée suppose l'environnement Windows pris en charge dans 00 Configuration : Ubuntu sur WSL 2 avec l'intégration WSL de Docker Desktop.
Une commande n'est « pas reconnue » dans PowerShell
Symptôme : PowerShell rejette ./preflight.sh, source, export ou une autre commande de l'atelier.
Cause : PowerShell sert uniquement à l'initialisation WSL indiquée au Module 00. Toutes les commandes de l'atelier s'exécutent dans Ubuntu.
Ouvrez Ubuntu depuis le menu Démarrer, revenez au dossier du labo et rechargez l'environnement ; un nouveau shell ne l'hérite pas :
cd "$(git rev-parse --show-toplevel)/workshop_public/polymarket"
set -a; source ./.env.polymarket; set +a
./preflight.shLe dépôt se trouve sous /mnt/c
Symptôme : les bind mounts Docker sont lents, ./preflight.sh signale un problème de droits ou
pwd commence par /mnt/c/Users/.
Cause : le clone se trouve dans le système de fichiers Windows plutôt que dans celui de WSL.
Clonez une copie propre dans votre home Linux et ne transférez que votre .env.polymarket rempli :
cd ~
git config --global core.autocrlf input
git clone https://github.com/ClickHouse/ClickHouse_Demos.git
cd ClickHouse_Demos
git switch build-workshop-v1
cd "$(git rev-parse --show-toplevel)/workshop_public/polymarket"
cp .env.polymarket.example .env.polymarketUbuntu fonctionne sous WSL 1
Symptôme : wsl --list --verbose affiche Ubuntu avec VERSION 1, ou Docker Desktop ne peut pas s'intégrer à la distribution.
Dans PowerShell en tant qu'Administrateur :
wsl --set-version Ubuntu 2
wsl --set-default-version 2
wsl --list --verbosedocker est indisponible dans Ubuntu
Symptôme : Docker Desktop fonctionne, mais Ubuntu indique docker: command not found ou ne joint pas le daemon.
Activez Docker Desktop -> Settings -> General -> Use the WSL 2 based engine et
Settings -> Resources -> WSL Integration -> Ubuntu, appliquez, exécutez wsl --shutdown dans
PowerShell, puis rouvrez Ubuntu. docker version doit afficher Client et Server. N'installez pas
un second Docker Engine avec apt.
WSL ou Docker manque de mémoire
Symptôme : le conteneur est tué ou redémarre en boucle, docker compose ... up --build échoue en
cours de route ou docker info --format '{{.MemTotal}}' indique nettement moins de 4 Go.
Cause : le backend WSL 2 de Docker Desktop est limité par la VM WSL, dont la valeur par défaut peut être faible si d'autres distributions tournent.
Fermez Docker Desktop, ouvrez PowerShell et fixez une limite :
@('[wsl2]', 'memory=4GB', 'processors=2') |
Set-Content -Encoding ascii "$env:USERPROFILE\.wslconfig"
wsl --shutdownRelancez Docker Desktop, rouvrez Ubuntu, rechargez .env.polymarket, puis relancez ./preflight.sh.
Un script indique /usr/bin/env: 'bash\r': No such file or directory
Symptôme : ./preflight.sh échoue immédiatement avec bash\r ou ^M.
Cause : les fins de ligne CRLF Windows ont remplacé les LF requis, généralement parce que
core.autocrlf valait true pendant le clone.
git config --global core.autocrlf input
git status --short
git add --renormalize .Vérifiez git status avant de supprimer quoi que ce soit. Si aucun travail n'est à conserver, un
clone propre sous ~/ClickHouse_Demos est le choix le plus sûr.
Le fichier d'environnement utilise les fins de ligne Windows
Symptôme : printf affiche un hôte plausible, mais ./preflight.sh ou clickhouse client ne le
résout pas, ou le handshake TLS échoue sans raison visible.
Cause : .env.polymarket a été enregistré par un éditeur Windows et chaque valeur se termine par
un retour chariot. set -a; source le conserve et CLICKHOUSE_HOST devient host\r.
sed -i 's/\r$//' .env.polymarket
set -a; source ./.env.polymarket; set +a
printf 'host=[%s]\n' "$CLICKHOUSE_HOST"
./preflight.shRésultat attendu : le crochet fermant suit immédiatement le hostname sur la même ligne. Modifiez désormais le fichier depuis Ubuntu.
L'endpoint de santé ne s'ouvre pas dans le navigateur Windows
Symptôme : curl http://localhost:8090/health fonctionne sous Ubuntu, mais pas dans le navigateur Windows.
Cause : la redirection localhost WSL est établie à chaque démarrage et peut disparaître après une
veille ou un wsl --shutdown.
Confirmez d'abord le port depuis Ubuntu ; si le navigateur échoue encore, exécutez wsl --shutdown
dans PowerShell et rouvrez Ubuntu :
curl --fail --silent http://localhost:8090/health | python3 -m json.toolLe terminal fait autorité pour tous les contrôles ; le navigateur est une commodité.
Le réseau de la salle bloque Polymarket
Symptôme : le preflight ne joint pas Gamma ou la santé reste degraded avec des erreurs source.
sed -i.bak 's/^POLYMARKET_MODE=.*/POLYMARKET_MODE=fixture/' .env.polymarket
set -a; source ./.env.polymarket; set +a
docker compose --env-file .env.polymarket up -d --build --force-recreate collector
curl --fail --silent http://localhost:8090/health | python3 -m json.toolRésultat attendu : status vaut fixture ; les données augmentent toutes les cinq secondes.
La santé indique websocket_stale_rest_active
La situation est récupérable tant que last_trade_reconcile_at et last_book_fallback_at avancent.
Le collecteur se reconnecte avec backoff. Ne le redémarrez pas sans cesse.
docker compose --env-file .env.polymarket logs --tail=50 collector
sleep 35
curl --fail --silent http://localhost:8090/health | python3 -m json.toolUtilisez fixture uniquement si les deux timestamps REST restent nuls ou périmés.
La santé indique clickhouse_write_retrying ou clickhouse_write_stalled
Tant que le processus tourne, le lot exact reste en mémoire et est retenté avec le même token de déduplication. Corrigez les valeurs Cloud, chargez le fichier, puis recréez le collecteur :
${EDITOR:-vi} .env.polymarket
set -a; source ./.env.polymarket; set +a
./preflight.sh
docker compose --env-file .env.polymarket up -d --force-recreate collectorNe supprimez pas les tables ; la nouvelle tentative est sûre.
Une recréation forcée perd les ticks encore uniquement en mémoire. Le collecteur recharge les carnets actuels par REST et rapproche les transactions depuis le dernier checkpoint acquitté. L'atelier ne prétend pas disposer d'une file locale durable.
missing ClickHouse tables apparaît
Le Module 02 a été ignoré ou exécuté sur un autre service. Chargez le fichier et contrôlez :
set -a; source ./.env.polymarket; set +a
clickhouse client \
--host "$CLICKHOUSE_HOST" \
--port "$CLICKHOUSE_PORT" \
--user "$CLICKHOUSE_USER" \
--password "$CLICKHOUSE_PASSWORD" \
--secure \
--query "SHOW TABLES FROM polymarket"Revenez au Module 02 si un objet manque.
La requête de mouvements est vide
Elle exige des observations de part et d'autre d'une limite de cinq minutes. Attendez au moins six minutes ou utilisez fixture pour une session minutée.
Le port 8090 est déjà utilisé
Modifiez POLYMARKET_HEALTH_PORT dans .env.polymarket, chargez-le et recréez :
sed -i.bak 's/^POLYMARKET_HEALTH_PORT=.*/POLYMARKET_HEALTH_PORT=8091/' .env.polymarket
set -a; source ./.env.polymarket; set +a
docker compose --env-file .env.polymarket up -d --force-recreate collector
curl --fail --silent http://localhost:8091/health | python3 -m json.tool