PolymarketClickHouse Workshops

Troubleshooting Polymarket

Pemulihan yang tepat untuk kegagalan setup, sumber data, collector, dan ClickHouse.

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

Windows dan WSL 2

Setiap entri di sini mengasumsikan environment Windows yang didukung dari 00 Setup: Ubuntu di WSL 2 dengan integrasi Docker Desktop WSL.

Sebuah perintah "not recognized" di PowerShell

Gejala: PowerShell menolak ./preflight.sh, source, export, atau perintah workshop lainnya.

Penyebab: PowerShell hanya dipakai untuk bootstrap WSL yang ditandai di Modul 00. Setiap perintah workshop dijalankan di dalam Ubuntu.

Buka Ubuntu dari Start menu, kembali ke direktori lab, dan source ulang file environment -- shell baru tidak mewarisinya:

cd "$(git rev-parse --show-toplevel)/workshop_public/polymarket"
set -a; source ./.env.polymarket; set +a
./preflight.sh

Repository berada di bawah /mnt/c

Gejala: bind mount Docker lambat, ./preflight.sh melaporkan error permission, atau pwd dimulai dengan /mnt/c/Users/.

Penyebab: clone-nya mendarat di filesystem Windows alih-alih filesystem Linux milik WSL.

Clone salinan yang bersih di home directory Linux Anda dan bawa hanya .env.polymarket yang sudah Anda isi:

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 berjalan sebagai WSL 1

Gejala: wsl --list --verbose menampilkan Ubuntu dengan VERSION 1, atau Docker Desktop tidak bisa berintegrasi dengan distro-nya.

Di PowerShell as Administrator:

wsl --set-version Ubuntu 2
wsl --set-default-version 2
wsl --list --verbose

docker tidak tersedia di dalam Ubuntu

Gejala: Docker Desktop berjalan, tetapi Ubuntu melaporkan docker: command not found atau tidak bisa menjangkau daemon-nya.

Aktifkan Docker Desktop -> Settings -> General -> Use the WSL 2 based engine dan Settings -> Resources -> WSL Integration -> Ubuntu, terapkan perubahannya, jalankan wsl --shutdown di PowerShell, lalu buka kembali Ubuntu. docker version kemudian harus menampilkan bagian Client maupun Server. Jangan instal Docker Engine kedua dengan apt.

WSL atau Docker kehabisan memori

Gejala: container collector di-kill atau restart berulang, docker compose ... up --build gagal di tengah jalan, atau docker info --format '{{.MemTotal}}' melaporkan jauh di bawah 4 GB.

Penyebab: backend WSL 2 milik Docker Desktop dibatasi oleh virtual machine WSL, yang batas default-nya hanya sebagian kecil dari RAM host dan bisa kecil pada mesin yang menjalankan distro lain.

Tutup Docker Desktop, buka PowerShell, dan setel batas eksplisit:

@('[wsl2]', 'memory=4GB', 'processors=2') |
  Set-Content -Encoding ascii "$env:USERPROFILE\.wslconfig"
wsl --shutdown

Jalankan Docker Desktop, buka kembali Ubuntu, source ulang .env.polymarket, dan jalankan ./preflight.sh lagi.

Sebuah script melaporkan /usr/bin/env: 'bash\r': No such file or directory

Gejala: ./preflight.sh langsung gagal dan error-nya memuat bash\r atau ^M.

Penyebab: line ending CRLF Windows menggantikan ending LF yang diwajibkan repository ini, biasanya karena core.autocrlf bernilai true saat Anda melakukan clone.

git config --global core.autocrlf input
git status --short
git add --renormalize .

Tinjau git status sebelum membuang apa pun. Jika checkout itu tidak memuat pekerjaan yang Anda butuhkan, clone bersih di bawah ~/ClickHouse_Demos adalah pemulihan yang paling aman.

File environment memakai line ending Windows

Gejala: printf menampilkan host yang tampak wajar, tetapi ./preflight.sh atau clickhouse client tidak bisa me-resolve-nya, atau TLS handshake gagal tanpa alasan yang terlihat.

Penyebab: .env.polymarket disimpan oleh editor Windows, jadi setiap value diakhiri carriage return. set -a; source mempertahankannya, dan CLICKHOUSE_HOST menjadi host\r.

sed -i 's/\r$//' .env.polymarket
set -a; source ./.env.polymarket; set +a
printf 'host=[%s]\n' "$CLICKHOUSE_HOST"
./preflight.sh

Diharapkan: kurung tutupnya berada persis setelah hostname, di baris yang sama. Mulai sekarang edit file itu di dalam Ubuntu.

Endpoint health tidak terbuka di browser Windows

Gejala: curl http://localhost:8090/health berhasil di Ubuntu, tetapi URL yang sama gagal di browser Windows.

Penyebab: forwarding localhost WSL dibuat per boot dan bisa hilang setelah sleep atau wsl --shutdown.

Konfirmasi dulu port-nya dari Ubuntu; jika browser masih tidak bisa menjangkaunya, jalankan wsl --shutdown di PowerShell dan buka kembali Ubuntu:

curl --fail --silent http://localhost:8090/health | python3 -m json.tool

Terminal adalah acuan utama untuk setiap langkah verifikasi di workshop ini; browser hanya kemudahan.

Jaringan kelas memblokir Polymarket

Gejala: preflight tidak bisa menjangkau Gamma, atau health tetap degraded dengan error sumber.

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

Diharapkan: status bernilai fixture; data bertambah setiap lima detik.

Health menyebut websocket_stale_rest_active

Ini masih bisa dipulihkan bila last_trade_reconcile_at dan last_book_fallback_at terus bergerak maju. Collector melakukan reconnect dengan backoff. Jangan me-restart-nya berulang kali.

docker compose --env-file .env.polymarket logs --tail=50 collector
sleep 35
curl --fail --silent http://localhost:8090/health | python3 -m json.tool

Gunakan mode fixture hanya jika kedua timestamp REST tetap null atau usang.

Health menyebut clickhouse_write_retrying atau clickhouse_write_stalled

Selagi proses masih berjalan, batch yang bersangkutan tetap ada di memori dan di-retry dengan token deduplikasi yang sama. Perbaiki nilai-nilai Cloud, source file-nya, lalu buat ulang collector:

${EDITOR:-vi} .env.polymarket
set -a; source ./.env.polymarket; set +a
./preflight.sh
docker compose --env-file .env.polymarket up -d --force-recreate collector

Jangan drop tabelnya; retry itu aman.

Pembuatan ulang yang dipaksakan akan membuang quote tick yang masih hanya ada di memori. Collector yang di-restart mengisi ulang book terkini melalui REST dan merekonsiliasi trade publik dari checkpoint terakhir yang di-acknowledge. Workshop ini tidak mengklaim adanya queue lokal yang durable.

Muncul missing ClickHouse tables

Modul 02 terlewat atau dijalankan terhadap service lain. Source file yang berlaku lalu periksa:

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"

Kembali ke Modul 02 jika ada objek yang hilang.

Query mover kosong

Query itu butuh observasi di kedua sisi batas lima menit. Tunggu sampai collector berjalan setidaknya enam menit, atau gunakan mode fixture untuk kelas yang terjadwal ketat.

Port 8090 sudah dipakai

Ubah POLYMARKET_HEALTH_PORT di .env.polymarket, source-kan, dan buat ulang:

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

Di halaman ini

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

ID