Solução de problemas do Polymarket
Recuperação exata de falhas de configuração, origem, coletor e ClickHouse.
Windows e WSL 2
Todas as entradas desta seção presumem o ambiente Windows compatível descrito em 00 Configuração: Ubuntu no WSL 2 com integração do Docker Desktop.
Um comando aparece como "não reconhecido" no PowerShell
Sintoma: o PowerShell rejeita ./preflight.sh, source, export ou outro comando do workshop.
Causa: o PowerShell serve apenas para a inicialização do WSL identificada no Módulo 00. Todos os comandos do workshop são executados dentro do Ubuntu.
Abra Ubuntu pelo menu Iniciar, volte ao diretório do laboratório e carregue novamente o arquivo de ambiente — um novo shell não o herda:
cd "$(git rev-parse --show-toplevel)/workshop_public/polymarket"
set -a; source ./.env.polymarket; set +a
./preflight.shO repositório está em /mnt/c
Sintoma: os bind mounts do Docker estão lentos, ./preflight.sh informa erro de permissão ou pwd
começa com /mnt/c/Users/.
Causa: o clone foi criado no sistema de arquivos do Windows, e não no sistema Linux do WSL.
Clone uma cópia limpa no seu diretório home do Linux e transfira apenas o .env.polymarket preenchido:
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.polymarketO Ubuntu está executando como WSL 1
Sintoma: wsl --list --verbose mostra Ubuntu com VERSION 1, ou o Docker Desktop não consegue se
integrar à distribuição.
No PowerShell como Administrador:
wsl --set-version Ubuntu 2
wsl --set-default-version 2
wsl --list --verbosedocker não está disponível no Ubuntu
Sintoma: o Docker Desktop está aberto, mas o Ubuntu informa docker: command not found ou não
consegue acessar o daemon.
Ative Docker Desktop -> Settings -> General -> Use the WSL 2 based engine e
Settings -> Resources -> WSL Integration -> Ubuntu, aplique a mudança, execute
wsl --shutdown no PowerShell e reabra o Ubuntu. docker version deverá mostrar as seções Client
e Server. Não instale um segundo Docker Engine com apt.
WSL ou Docker fica sem memória
Sintoma: o container do coletor é encerrado ou reinicia em loop, docker compose ... up --build
falha durante o processo ou docker info --format '{{.MemTotal}}' mostra bem menos de 4 GB.
Causa: o backend WSL 2 do Docker Desktop é limitado pela máquina virtual do WSL, cujo limite padrão é uma fração da RAM do host e pode ser pequeno quando outras distribuições estão ativas.
Feche o Docker Desktop, abra o PowerShell e defina um limite explícito:
@('[wsl2]', 'memory=4GB', 'processors=2') |
Set-Content -Encoding ascii "$env:USERPROFILE\.wslconfig"
wsl --shutdownInicie o Docker Desktop, reabra o Ubuntu, carregue .env.polymarket novamente e execute
./preflight.sh outra vez.
Um script informa /usr/bin/env: 'bash\r': No such file or directory
Sintoma: ./preflight.sh falha imediatamente e o erro contém bash\r ou ^M.
Causa: finais de linha CRLF do Windows substituíram os LF exigidos pelo repositório, normalmente
porque core.autocrlf estava como true durante o clone.
git config --global core.autocrlf input
git status --short
git add --renormalize .Revise git status antes de descartar qualquer coisa. Se o checkout não tiver trabalho necessário,
um novo clone em ~/ClickHouse_Demos é a recuperação mais segura.
O arquivo de ambiente tem finais de linha do Windows
Sintoma: printf mostra um host plausível, mas ./preflight.sh ou clickhouse client não consegue
resolvê-lo, ou o handshake TLS falha sem motivo visível.
Causa: .env.polymarket foi salvo por um editor Windows, então cada valor termina com um retorno
de carro. set -a; source o mantém, e CLICKHOUSE_HOST se torna host\r.
sed -i 's/\r$//' .env.polymarket
set -a; source ./.env.polymarket; set +a
printf 'host=[%s]\n' "$CLICKHOUSE_HOST"
./preflight.shEsperado: o colchete de fechamento fica logo depois do hostname, na mesma linha. Daqui em diante, edite o arquivo dentro do Ubuntu.
O endpoint de saúde não abre no navegador do Windows
Sintoma: curl http://localhost:8090/health funciona no Ubuntu, mas a mesma URL falha no navegador do Windows.
Causa: o encaminhamento de localhost do WSL é estabelecido a cada inicialização e pode se perder
depois de uma suspensão ou de wsl --shutdown.
Primeiro, confirme a porta no Ubuntu; se o navegador ainda não conseguir acessá-la, execute
wsl --shutdown no PowerShell e reabra o Ubuntu:
curl --fail --silent http://localhost:8090/health | python3 -m json.toolO terminal é a referência para todas as verificações do workshop; o navegador é apenas uma conveniência.
A rede da sala bloqueia o Polymarket
Sintoma: o preflight não acessa o Gamma ou a saúde permanece degraded com erros de origem.
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.toolEsperado: status é fixture; os dados crescem a cada cinco segundos.
A saúde mostra websocket_stale_rest_active
É recuperável enquanto last_trade_reconcile_at e last_book_fallback_at continuarem avançando.
O coletor reconecta com backoff. Não o reinicie repetidamente.
docker compose --env-file .env.polymarket logs --tail=50 collector
sleep 35
curl --fail --silent http://localhost:8090/health | python3 -m json.toolUse o modo fixture somente se os dois timestamps REST permanecerem nulos ou desatualizados.
A saúde mostra clickhouse_write_retrying ou clickhouse_write_stalled
Enquanto o processo estiver ativo, o lote exato permanece na memória e é tentado novamente com o mesmo token de deduplicação. Corrija os valores do Cloud, carregue o arquivo e recrie o coletor:
${EDITOR:-vi} .env.polymarket
set -a; source ./.env.polymarket; set +a
./preflight.sh
docker compose --env-file .env.polymarket up -d --force-recreate collectorNão remova as tabelas; a nova tentativa é segura.
Uma recriação forçada descarta ticks de cotação que ainda estavam apenas na memória. O coletor reiniciado repõe os livros atuais por REST e reconcilia negociações públicas desde o último checkpoint confirmado. O workshop não promete uma fila local durável.
A mensagem missing ClickHouse tables aparece
O Módulo 02 foi ignorado ou executado em outro serviço. Carregue o arquivo atual e confira:
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"Volte ao Módulo 02 se faltar algum objeto.
A consulta de movimentos está vazia
Ela precisa de observações nos dois lados de um limite de cinco minutos. Aguarde o coletor executar por pelo menos seis minutos ou use o modo fixture em uma aula com tempo marcado.
A porta 8090 já está em uso
Mude POLYMARKET_HEALTH_PORT em .env.polymarket, carregue-o e recrie:
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