Parar de abrir todas as pastas e parar de refazer todas as mensagens

PerformanceEmailService
Navios
14 de agosto de 2026 às 02:09 UTC
Autor
Kamo
Enviar
9698977

Dois problemas de ida e volta no caminho crítico /mensagens, ambos invisíveis no código que os causou. listFolders abriu cada pasta somente para ler dois inteiros dele. Isso é um SELECT e um FECHAR por pasta, e faz com que o servidor construa cada índice de caixa de correio ao longo do caminho, assim uma caixa de correio de vinte colunas gastou quarenta viagens redondas respondendo um Pergunta sobre quarenta números. A barra lateral recarrega isto na montagem e novamente na todas as alterações na caixa de correio — correio que chega, uma mensagem lida, uma jogada, uma exclusão — por isso é a operação IMAP mais chamada no produto. Javadoc do próprio getUnreadCount disse listFolders foi "muito caro" desde que foi escrito. STATUS retorna exatamente essas contagens e não toca em nenhuma mensagem. Publicidade de servidores RFC 5819 LIST-STATUS, Dovecot entre eles, agora responda a árvore inteira em um comando; qualquer outra coisa recebe um STATUS por pasta fechada, onde Jakarta Mail cache de status serve não lido e total de uma única resposta. Apenas uma pasta cuja servidor recusa STATUS está aberto agora. O caminho da lista tinha um N+1 nada chamado. FetchProfile.Item.ENVELOPE expande para ENVELOPE INTERNALDATE RFC822. toEnvelope chama getContentType() para a heurística de anexos e lê Mensagem-ID para threading. O Jakarta Mail responde a um acessor não prefected por emitindo silenciosamente sua própria mensagem FETCH, então uma página de 50 mensagens custa até 100 viagens de ida e volta. A busca foi pior: não prefetizou nada. Ambos agora compartilham um perfil que cobre cada campo paraEnvelope lê. A resposta LIST-STATUS é analisada aqui em vez de pelo Jakarta Mail, por isso é analisado em teste: IMAPResponse aceita uma linha de protocolo literal, e os dez Casos cobrem encomenda, \Noselect, status ausente e tráfego não relacionado. Um de eles são um bug encontrado — ListInfo decodifica nomes de caixa de correio UTF-7 modificados e Status não, por isso juntar-se a eles como eles chegam teria relatado zero não lido para exatamente aquelas pastas com um sotaque no nome, e nada mais.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços