Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DB::Exception: Parte XXXXX se sobrepõe à parte anterior YYYYY. É um bug ou resultado de uma intervenção manual nos dados do ZooKeeper.

Por que isso ocorre

Quando esse erro ocorre, uma tabela fica como somente leitura, e a mensagem de erro indica partes sobrepostas.

Você pode ver o erro nos logs ou por meio de

SELECT *
FROM system.replicas
WHERE is_readonly = 1

A mensagem de erro é semelhante a:

Code: 49. DB::Exception: Part XXXXX intersects previous part YYYYY. It is a bug or a result of manual intervention in the ZooKeeper data. (LOGICAL_ERROR) (version 21.12.4.1 (official build))

Causa do erro

Esse erro pode ser causado por uma condição de corrida entre mergeSelectingTask e a reinicialização da fila.

Solução

Execute as consultas a seguir em todas as réplicas:

DETACH TABLE table_name;  -- Necessário para DROP REPLICA

SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/table_path_in_zk/'; -- Isso removerá tudo de /table_path_in_zk

ATTACH TABLE table_name;  -- A tabela ficará em modo somente leitura, pois não há metadados no ZK

Em seguida, execute o seguinte em todas as réplicas:

SYSTEM RESTORE REPLICA table_name;  -- Irá desanexar todas as partições, recriar os metadados no ZK (como se fosse uma nova tabela vazia) e então reanexar todas as partições

SYSTEM SYNC REPLICA table_name; -- Aguarda as réplicas sincronizarem as partes. Também é recomendável verificar `system.detached_parts` em todas as réplicas após a conclusão da recuperação.

Recursos adicionais

PRs e issues relacionadas no GitHub:

Versões afetadas:

ClickHouse v22.12 e anteriores

Navigation