Skip to content

Develop - #154

Merged
elson-vinicius-lopes merged 6 commits into
mainfrom
develop
Aug 23, 2026
Merged

Develop#154
elson-vinicius-lopes merged 6 commits into
mainfrom
develop

Conversation

@elson-vinicius-lopes

Copy link
Copy Markdown
Contributor

No description provided.

elson-vinicius-lopes and others added 6 commits August 23, 2026 19:21
O login em produção (host BRNDDAPPBLD01) ficava lento/instável porque a
resolução DNS padrão do Windows para login.microsoftonline.com sofre o
comportamento "Smart Multi-Homed Name Resolution": o SO aguarda respostas de
todas as 5 interfaces de rede ativas (várias sem DNS configurado) antes de
aceitar a resposta correta, gerando ~11-12s de atraso fixo em toda chamada de
saída via fetch nativo do MSAL Node (auth.entra.acquire_token_failed com
durationMs ~10.6s, estourando timeout do MSAL e derrubando o login).

dns.setServers() do node:dns não resolve isso: só afeta as funções baseadas
em c-ares (dns.resolve*), não dns.lookup() usado internamente pelo conector
padrão do undici (que o fetch nativo do Node usa). A mitigação real é injetar
um lookup customizado, baseado em dns.Resolver com servidores fixos, no
dispatcher global do undici via setGlobalDispatcher — isso cobre o fetch
global usado pelo MsalOidcClient e GoogleOidcClient.

Aplicado via nova variável opcional BFF_DNS_SERVERS (CSV de IPs), sem
hardcode de infra de produção no código; sem a variável, mantém o
comportamento padrão do Node/SO, restringindo o efeito a hosts confirmadamente
afetados.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Deixa explícito no comentário que setGlobalDispatcher() afeta todo
fetch do processo, incluindo o proxy /api -> LayoutParserApi via
@fastify/http-proxy, não só as chamadas OIDC. Achado P3 da revisão
de segurança (@lp-security, veredito PASS).
Adiciona -DnsServers a Deploy-Iis.ps1: quando ausente/vazio, a linha não é
gerada no Start-Bff.ps1 (server/src/config.ts já trata isso como no-op).
Referencia vars.BFF_DNS_SERVERS no workflow, mesmo padrão de PUBLIC_HOST,
mas sem tornar obrigatório. Valor de produção configurado como variável de
repositório: 172.31.250.251,172.31.250.252 (DNS internos já validados no
host BRNDDAPPBLD01).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ERVERS

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
dnsOverride.ts estava com 0% de cobertura, derrubando os thresholds
globais do server/ (linhas/funções/statements 85%, branches 80%) e
quebrando o gate de CI do PR #153. Adiciona testes para o caso no-op
(sem servidores), aplicação do dispatcher global do undici, e a função
lookup customizada (IPv4/IPv6, fallback, all, e propagação de erro),
mockando undici e node:dns.
fix(bff): DNS explícito para contornar latência multi-homed do SO
@elson-vinicius-lopes
elson-vinicius-lopes merged commit dd3592e into main Aug 23, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant