PolymarketClickHouse Workshops

Dépannage Polymarket

Procédures exactes de reprise pour la configuration, les sources, le collecteur et ClickHouse.

Votre ordinateur
Terminal macOS : Exécutez les commandes de l’atelier dans le Terminal avec zsh ou bash.

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.sh

Le 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.polymarket

Ubuntu 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 --verbose

docker 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 --shutdown

Relancez 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.sh

Ré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.tool

Le 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.tool

Ré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.tool

Utilisez 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 collector

Ne 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

Sur cette page

Suivre votre progression ?

Facultatif. Nous envoyons un lien par e-mail pour confirmer votre adresse ; la progression est enregistrée après son ouverture.

Utilisez votre adresse e-mail professionnelle, et non une adresse personnelle.

Le suivi de la progression exige aussi d’accepter les Conditions d’utilisation actuelles dans les Paramètres de confidentialité.

FR