Implementar timeout padrão para execução de queries via Explorer UI (BE)
Description
Descrição
Atualmente, usuários podem lançar queries pesadas através da interface (Explorer UI) e, mesmo após fecharem a janela do navegador, o job continua em execução por horas no BigQuery.
Esses jobs se tornam ofensores de slots difíceis de identificar e impactam a performance geral da plataforma.
Problema
-
O usuário executa uma query muito pesada via UI.
-
Fecha o navegador ou muda de aba, e o job segue executando indefinidamente.
-
O backend não aplica nenhum timeout, portanto o job só termina por conclusão natural ou intervenção manual.
-
Isso consome recursos (slots) e prejudica outros usuários.
Proposta de Solução
Implementar timeout padrão de X minutos (sugestão inicial: 30 minutos) para todas as queries enviadas via Explorer UI.
O backend deve enviar o parâmetro --job_timeout_ms na submissão do job para o BigQuery, garantindo que o job seja automaticamente cancelado após o tempo limite. Parâmetro retirado da doc oficial: https://cloud.google.com/bigquery/docs/reference/bq-cli-reference#bq_query
Exemplo:
bq query --job_timeout_ms=1800000 "SELECT 1"
No código, o parâmetro corresponde a:
--job_timeout_ms={string (Int64Value)}
Benefícios
-
Evita consumo prolongado e desnecessário de slots.
-
Garante melhor uso dos recursos de execução.
-
Melhora a experiência do usuário (não fica “preso” em queries intermináveis).
-
Reduz necessidade de monitoramento manual de jobs longos.
Implementação sugerida
-
Alterar o backend responsável pelo envio de jobs BigQuery adicionando o campo opcional
job_timeout_msao payload da requisição. -
O frontend passa a adicionar o valor de 30 minutos (1800000 ms) em todas as requests que partem dele.
Exemplo de job com timeout
ideia-dataops-prod:US.bqjob_r7c9da323a3adc1ce_00000199ca341a90_1ideia-dataops-prod:US.bqjob_r2f7a7f8ac506efae_00000199ca37219c_1
Critérios de aceitação
-
Explorer deve enviar um tempo de timeout, limitando entre 30 min e 120 min.
-
Na ausência do parametro assumir o valor padrão de 120 min.
-
-
UI do Explorer deve ter um alerta que a query vai ficar em execução por um período em especifico:
-
Valor definido na UI: 30 minutos.
-
Mensagem: The query will run for at most 30 minutes, unless otherwise specified in the configuration.”
-
-
Queries enviadas pela UI são automaticamente canceladas após o tempo limite configurado.
-
Queries não provenientes da UI irão assumir o tempo de timeout de 120 minutos.
-
-
Logs indicam claramente quando um job foi finalizado por timeout.