large database usage in query getPrivilegesTableFo...
# replication-ask-ai
d
large database usage in query getPrivilegesTableForCurrentUser, using has_table_privilege in postgres source
k
There’s no explicit mention of the
getPrivilegesTableForCurrentUser
query or
has_table_privilege
in the provided sources, but there is a closely related, open issue on the Postgres source about heavy metadata queries at discovery time. In particular, the Postgres connector is currently known to: - Run an expensive metadata query over all schemas during discover, even when a schema filter was specified on the source. This has caused high load and even outages on large databases with ~10,000+ schemas.[[source-postgres issue](https://github.com/airbytehq/airbyte/issues/65963)] Your note: > large database usage in query getPrivilegesTableForCurrentUser, using has_table_privilege in postgres source is very consistent with that issue: a metadata/privileges query that doesn’t respect schema filters and scans a large catalog. From the available information, we can infer: - Airbyte’s Postgres source does have known problems where discovery/metadata queries don’t sufficiently restrict scope on large databases, causing high load. [[source-postgres issue](https://github.com/airbytehq/airbyte/issues/65963)] - However, the exact SQL of
getPrivilegesTableForCurrentUser
or how it uses
has_table_privilege
is not documented in the provided sources, so I can’t confirm the exact behavior or provide a concrete fix from docs. Given that, practical steps (based on what is documented): 1. Treat this as part of the same class of issues as #65963 Track or comment on that issue with your findings about
getPrivilegesTableForCurrentUser
so the Airbyte team can tie it to the ongoing work on heavy metadata queries. [[source-postgres issue](https://github.com/airbytehq/airbyte/issues/65963)] 2. Mitigation ideas (not documented as official fixes, so note the uncertainty): - Limit discovery usage on very large Postgres instances, and/or run it during low-traffic windows. - Where possible, reduce the number of schemas exposed in the database used by Airbyte (e.g., use a dedicated replica or database with only the needed schemas), so that any global metadata/privilege query touches fewer objects. Because the sources don’t document
getPrivilegesTableForCurrentUser
or
has_table_privilege
specifically, I can’t provide more precise guidance than connecting it to the documented performance problem around unrestricted metadata discovery and recommending tracking the open GitHub issue.
d
consigo desabilitar o check datasource no Airbyte?
@kapa.ai consigo desabilitar o check datasource no Airbyte?
k
A message from kapa.ai
A message from kapa.ai
Não, hoje não é possível desabilitar o check connection (verificação da fonte/destino) no Airbyte. Em um tópico do fórum, um membro da equipe informou explicitamente que atualmente não há como desligar essa etapa de verificação de conexão antes da replicação.[[Check connection performance](https://discuss.airbyte.io/t/3731)] O que você pode fazer é apenas mitigar o impacto em alguns casos (por exemplo, filtrando fontes ou tabelas para reduzir o tempo de operações em geral), mas a etapa em si não pode ser pulada na configuração padrão.
Não há nada na documentação fornecida indicando uma forma de desabilitar completamente o check de fonte de dados (o teste de conexão) no Airbyte. O que a documentação mostra é que, ao desenvolver conectores com o Connector Builder UI, você pode configurar como o check é feito, escolhendo quais streams serão usados para validação de conexão (“Streams to check” ou “Dynamic streams to check”), mas não fala em desativar o check em si.[[Global config](https://docs.airbyte.com/platform/connector-development/connector-builder-ui/global-configuration)] Da mesma forma, na parte de Connector Acceptance Tests, o teste de
connection
(spec/connection/discovery/basic_read/…) é esperado, especialmente em nível de estrito “high”, e a documentação não menciona uma opção para desligar o check, apenas para pular testes com
bypass_reason
dentro do contexto dos testes de aceitação, não da execução normal do conector em produção.[[Strictness level](https://docs.airbyte.com/platform/connector-development/testing-connectors/connector-acceptance-tests-reference#strictness-level)] Então, com base apenas nas fontes que você enviou, não há indicação de que seja possível desabilitar o check de datasource no Airbyte; apenas é possível configurá-lo (por exemplo, escolhendo streams menos pesados para o check).
d
@kapa.ai mas como funcionar o check source quando executa a connection?
k
A message from kapa.ai
Quando você executa uma connection (uma sincronização), o Airbyte roda internamente um fluxo que inclui o check da fonte (source) antes de continuar. Pelos conceitos do CDK Python: - O método
Check
do conector de source delega para a função
check_connection(config)
da classe
AbstractSource
.[[CDK AbstractSource](https://docs.airbyte.com/platform/connector-development/cdk-python/basic-concepts#the-abstractsource-object)] - O
config
é a configuração fornecida pelo usuário (definida no
spec.yaml
), e o
check_connection
usa esses dados para validar acesso e permissões à origem (por exemplo, testar se usuário/senha ou token têm os privilégios necessários).[[CDK AbstractSource](https://docs.airbyte.com/platform/connector-development/cdk-python/basic-concepts#the-abstractsource-object)] Nas boas práticas de conectores, o Airbyte recomenda que o check connection: - Verifique permissões logo no início, garantindo que o token ou credenciais tenham acesso de leitura necessário. - Retorne mensagens de erro acionáveis (ex.: “Usuário/senha inválidos”, “Não foi possível alcançar o host do banco”).[[Quality checklist 1.8](https://docs.airbyte.com/platform/1.8/connector-development/best-practices#check-connection)] Então, ao executar uma connection: 1. O workflow do Airbyte chama o
Check
do source. 2. Esse
Check
chama
check_connection(config)
dentro do conector. 3. Se o check falhar, o fluxo registra algo como
SOURCE CHECK: Failed
e a verificação do destino e a sync são **pulas/abortadas**; isso aparece nos logs de
ConnectionManagerWorkflowImpl
como “DESTINATION CHECK: Skipped, source check failed”.[[Sync jobs hanging](https://github.com/airbytehq/airbyte/issues/55812)] 4. Se o check passar, o workflow prossegue para o check do destino e, depois, para a sincronização em si. Se você estiver desenvolvendo um conector, o comportamento do check na connection é exatamente o que você implementar dentro de
check_connection
.
d
@kapa.ai mas esse check da source usa muito recurso no meu postgres, eu nao consigo desativar?
k
A message from kapa.ai
A message from kapa.ai
Pelas fontes que você trouxe, não há nenhuma opção documentada para desativar o check connection da source quando a conexão roda; ele sempre faz parte do fluxo de execução. Há confirmações explícitas no fórum de que hoje não é possível desligar o passo de check na execução da connection; você só consegue, no máximo, reduzir o impacto (por exemplo, filtrando melhor quais objetos são usados no check/discovery, ou otimizando consultas), mas não pular o passo inteiro.[[Check connection performance](https://discuss.airbyte.io/t/3731); [How to speed up source test](https://discuss.airbyte.io/t/3562)] Além disso, existem issues abertas/relatos de que alguns conectores (como Postgres) executam consultas de metadados muito pesadas durante discovery ou operações relacionadas, o que pode gerar carga alta em bancos com muitos schemas/tabelas, mas essas discussões tratam de otimizar/limitar essas queries, não de remover o check em si.[[source-postgres schema filters](https://github.com/airbytehq/airbyte/issues/65963)] Resumindo: com base na documentação e discussões disponíveis, não há suporte hoje para desabilitar o check da source; a alternativa é trabalhar em otimizações (filtro de schemas/tabelas, janelas de baixa carga, ou acompanhar as issues do conector Postgres que tratam de reduzir a carga das queries de metadados).
Não, pelas informações que temos, não é possível desativar o
check
da source
no Airbyte hoje. Em uma thread do fórum, um membro da equipe comenta explicitamente que **não é possível desligar a etapa de check da connection**; o máximo que se consegue é reduzir o impacto (por exemplo, filtrando apenas as tabelas necessárias).[[Check connection performance](https://discuss.airbyte.io/t/3731)] Além disso: - Em conectores construídos com o Connector Builder UI, você consegue apenas configurar quais streams são usados no check, mas não há opção documentada para desativar o check por completo.[[Global config](https://docs.airbyte.com/platform/connector-development/connector-builder-ui/global-configuration)] - No caso específico do Postgres, há um issue aberto reportando que a operação de discover (e, de forma geral, queries de metadados) pode ser muito pesada em bancos com muitos schemas/tabelas, justamente pelo tipo de queries globais que o conector executa.[[source-postgres issue](https://github.com/airbytehq/airbyte/issues/65963)] Como o check não pode ser desligado, as alternativas práticas (ainda que limitadas) são: 1. Reduzir o escopo do banco visto pelo Airbyte (por exemplo, usar um replica / database dedicado com menos schemas/tabelas). 2. Aplicar filtros de schema/tabela sempre que possível, para diminuir o custo das operações de metadados (mesmo sabendo que hoje há limitações, como descrito no issue acima). 3. Rodar operações pesadas (discover, criação de novas sources, etc.) em janelas de menor uso do Postgres. Não há nada na documentação ou discussões fornecidas que indique um flag ou configuração para simplesmente “pular” o check da source.
A message from kapa.ai
Não é possível desativar o check da source na execução da connection no Airbyte hoje. Nos tópicos do fórum, a equipe deixa claro que: - Não há parâmetro para “pular” ou desligar o *check connection*; ele sempre é executado antes da replicação.[[Check connection performance](https://discuss.airbyte.io/t/3731); [How to speed up source test](https://discuss.airbyte.io/t/3562)] As únicas alternativas documentadas são de mitigação, não de desativação: 1. Reduzir o peso das operações na origem - Limitar schemas/tabelas expostos ao Airbyte (por exemplo, usar um banco/replica dedicado com menos objetos). - No caso do Postgres, há um issue aberto mostrando que a descoberta (discover) executa consultas de metadados muito pesadas quando o banco tem muitos schemas, o que aumenta bastante o consumo de recursos.[[source-postgres schema filters](https://github.com/airbytehq/airbyte/issues/65963)] 2. Ajustar recursos do lado do Airbyte - Configurar CPU e memória para os jobs de sync/check via as variáveis
JOB_MAIN_CONTAINER_CPU_*
e
JOB_MAIN_CONTAINER_MEMORY_*
ou via
resource_requirements
por conector/conexão, para que o job termine mais rápido e fique menos tempo exercendo carga no banco.[[Configuring resources](https://docs.airbyte.com/platform/operator-guides/configuring-connector-resources)] Mas, com base nas fontes disponíveis, não existe hoje uma flag ou configuração suportada para simplesmente desativar o check da source.
d
@kapa.ai mas pq no meu airbyte me ambiente de desenvolvimento nao executa o check da sources quando roda a connection?
k
A message from kapa.ai
A message from kapa.ai
Pelos materiais que você enviou, dá para ver como o check de source costuma aparecer nos logs quando é executado, mas não há nada que explique explicitamente um cenário em que ele não roda ao disparar uma connection. Alguns pontos que dá para afirmar com base nas fontes: - Nos logs do
worker
, quando o Airbyte executa o check da source dentro do fluxo de uma conexão, aparecem entradas do tipo:
Copy code
text   ConnectionManagerWorkflowImpl(checkConnections):606 - SOURCE CHECK: Starting   ...   ConnectionManagerWorkflowImpl(checkConnections):618 - SOURCE CHECK: Failed   ConnectionManagerWorkflowImpl(checkConnections):625 - DESTINATION CHECK: Skipped, source check failed
Isso mostra que, no fluxo normal, o
ConnectionManagerWorkflowImpl
chama o SOURCE CHECK antes de seguir para o destino ou sync.[[All sync jobs hanging](https://github.com/airbytehq/airbyte/issues/55812)] - Também vemos em vários exemplos de logs que, quando um check é disparado (via UI ou parte de um fluxo), sempre existe um job separado com o comando
check --config ...
rodando o container do conector.[[RDS MySQL source](https://discuss.airbyte.io/t/3143); [Source MSSQL](https://discuss.airbyte.io/t/2892)] O que não aparece em nenhuma das fontes: - Nenhuma documentação ou issue diz que é possível “pular” automaticamente o check em ambiente de desenvolvimento. - Nenhuma fonte descreve um modo especial em que o ConnectionManager não chama
checkConnections
ao rodar uma connection. Ou seja: com o que foi fornecido, não consigo afirmar por que, no seu ambiente específico de desenvolvimento, você não está vendo o SOURCE CHECK ser executado ou logado quando roda a connection. Pode ser diferença de versão, de maneira de disparar o job, de logs que você está olhando (por exemplo, ver só logs do container do conector e não do
airbyte-worker
), ou alguma customização; mas nada disso está descrito nas fontes. Se você tiver acesso aos logs do
airbyte-worker
, o caminho sugerido pelas próprias issues é procurar mensagens de
ConnectionManagerWorkflowImpl(checkConnections)
para confirmar se o check está sendo chamado ou não.[[All sync jobs hanging](https://github.com/airbytehq/airbyte/issues/55812)] Resumindo: - A arquitetura padrão chama o SOURCE CHECK dentro do fluxo de conexão. - As fontes não explicam nenhum caso em que isso é automaticamente desativado; portanto não consigo, a partir da documentação que você mandou, dizer exatamente por que isso não está aparecendo no seu ambiente de desenvolvimento.
Pelas fontes que você enviou, dá para ver que o comportamento de executar
SOURCE CHECK
antes da sync depende do workflow/versão e do tipo de operação
. Em vários logs recentes de produção, o
ConnectionManagerWorkflowImpl
sempre faz:
Copy code
text SOURCE CHECK: Starting ... SOURCE CHECK: Failed DESTINATION CHECK: Skipped, source check failed
mostrando que o check da source é disparado automaticamente antes da sync nesse fluxo.[[All sync jobs hanging](https://github.com/airbytehq/airbyte/issues/55812)] Mas também há logs mais antigos onde aparece só:
Copy code
text ----- START CHECK ----- ... Completed integration: io.airbyte.integrations.base.ssh.SshWrappedSource
sem esse
ConnectionManagerWorkflowImpl
no meio, indicando que o check estava sendo rodado só quando você clica explicitamente em “Testar conexão” / “Check”, ou em outro contexto (por exemplo, criação de fonte, não durante a sync).[[Error running Sheets Sync](https://discuss.airbyte.io/t/2532); [RDS MYSQL check logs](https://discuss.airbyte.io/t/3143)] Ou seja, a documentação e os logs mostram que: - Existe um fluxo onde o Airbyte sempre roda
SOURCE CHECK
antes da sync
, via
ConnectionManagerWorkflowImpl
.[[All sync jobs hanging](https://github.com/airbytehq/airbyte/issues/55812)] - Mas também existem execuções onde o check é feito apenas quando você dispara um job de check (criar fonte, testar conexão), e a sync em si não mostra esse
SOURCE CHECK
extra nos logs fornecidos. O que não aparece nas fontes: - Não há nenhuma configuração documentada dizendo “em ambiente de desenvolvimento, não roda check automático, em produção sim”. - Não há explicação detalhada sobre por que em um ambiente específico o check não aparece/roda antes da connection. Então, com base só no que temos: 1. É provável que seu ambiente de desenvolvimento esteja usando: - Uma versão diferente do Airbyte (ou fluxo antigo) onde o
ConnectionManagerWorkflowImpl
ainda não rodava check automático em toda sync; ou - Um tipo de execução (por exemplo, rodando apenas um job de sync manual/isolado) em que o check pré-sync não é acionado da mesma forma que no ambiente de produção mostrado nos issues. 2. As fontes não trazem uma flag ou parâmetro que explique explicitamente essa diferença de comportamento entre ambientes; só mostram que ambos os comportamentos existem em logs reais, mas sem a “regra” clara do quando/por quê. Se você quiser ir a fundo, a recomendação prática, fora do que está nas fontes, seria comparar: - Versão do Airbyte (OSS/Enterprise) entre dev e prod. - Configuração de orquestração (Temporal / Connection Manager) entre os ambientes. Mas isso já extrapola o que está explicitamente documentado nas fontes que você compartilhou.