Contenção do MongoDB

A política interna de pool e tempo de execução do Core, os erros DATABASE_POOL_BUSY e DATABASE_OPERATION_TIMEOUT e como recuperar sem repetir escritas.

O backend do Core aplica uma política de contenção de carga sem configuração no App. Atualize os pacotes e republique para ativá-la.

Política

Parâmetro Padrão
maxPoolSize 4 (modo de performance: 4 / 8 / 16)
minPoolSize 0
maxConnecting 2
waitQueueTimeoutMS 2000 ms
maxTimeMS nos métodos cobertos 5000 ms

O Core passa essas opções ao driver com precedência sobre a URI. MONGO_URI continua fornecendo credenciais, banco, TLS, authSource e replica set; sem ela, DB_SERVER/DB_NAME e DB_USER/DB_PASSWORD são suportados. Não há override por env, central.config.js ou central.app.json.

Cobertura

Operação maxTimeMS automático
find, findOne, countDocuments, estimatedDocumentCount, distinct Sim
findOneAnd* Sim (sem garantia de ausência de escrita após erro)
updateOne/Many, replaceOne, deleteOne/Many como queries Sim
aggregate, populate Sim
Cursores Comando inicial apenas
save, create, insertMany, bulkWrite Não
Collection nativa, outro MongoClient/instância Mongoose Não garantido

Limite explícito menor é preservado. Carregue o Core antes de compilar modelos customizados.

Erros

Código HTTP Significado
DATABASE_POOL_BUSY 503 Expirou a espera por conexão no pool
DATABASE_OPERATION_TIMEOUT 504 O servidor excedeu o tempo de execução

Observabilidade

Contadores em memória (conexões em uso, esperando, picos, checkouts, falhas, timeouts e duração de espera) são emitidos a cada 60 s quando há atividade, com appCode, APP_ENVIRONMENT e PID — sem payload, endereço do servidor ou documentos.

Limites

Pool limita paralelismo por processo, não CPU/RAM/I/O nem o total do cluster. Réplicas e rollouts multiplicam o orçamento. Consultas caras continuam pressionando o banco — crie índices e pagine.