Smettere di aprire ogni cartella e smettere di recuperare ogni messaggio

PerformanceEmailService
Spegnimento
14 agosto 2026 alle ore 02:09 UTC
Autore
Kamo
Impegno
9698977

Due problemi di andata e ritorno sul percorso critico /messages, entrambi invisibili nel codice che li ha causati. listFolders ha aperto ogni cartella di sola lettura per leggere due interi fuori di esso. Questo è un SELECT e un CLOSE per cartella, e rende il server costruire ogni indice della casella di posta lungo il percorso, quindi una casella di posta venti volte speso quaranta viaggi rotondi rispondere a una domanda circa quaranta numeri. La barra laterale lo ricarica sul montaggio e di nuovo su ogni cambio di casella di posta — arrivo di posta, un messaggio letto, una mossa, un'eliminazione — quindi esso è la più chiamata operazione IMAP nel prodotto. ottenereUnreadCount proprio javadoc ha detto listaFolders era "troppo costoso" da quando è stato scritto. STATUS restituisce esattamente quei conti e non tocca nessun messaggio. Pubblicità dei server RFC 5819 LIST-STATUS, Dovecot tra di loro, ora rispondere a tutto l'albero in uno comando; qualsiasi altra cosa ottiene uno STATUS per cartella chiusa, dove Jakarta Mail's la cache di stato serve non letto e totale da una singola risposta. Solo una cartella la cui server rifiuta STATUS è aperto ora. Il percorso della lista aveva un N+1 niente di nome. FetchProfile.Item.ENVELOPE si espande a ENVELOPE INTERNALDATE RFC822.SIZE — nessuna BODYSTRUCTURE e nessuna testata — ma toEnvelope chiama getContentType() per l'attaccamento euristico e legge Messaggio-ID per il threading. Jakarta Mail risponde ad un accessor non prefetto di emettendo tranquillamente il proprio singolo messaggio FETCH, quindi una pagina di cinquanta messaggi costa fino a cento viaggi extra. La ricerca era peggio: non prefette affatto nulla. Entrambi ora condividono un profilo che copre ogni campo perEnvelope legge. La risposta LIST-STATUS è analizzata qui piuttosto che da Jakarta Mail, quindi è parsed under test: IMAPResponse accetta una linea di protocollo letterale, e la dieci i casi coprono l'ordine, \Noselect, STATUS assente e traffico non correlato. Uno loro è un bug questo trovato — ElencInfo decodes modificato UTF-7 mailbox nomi e Lo stato non lo fa, quindi unirsi a loro come arriverebbero avrebbe segnalato zero illeggi per esattamente quelle cartelle con un accento nel nome, e nient'altro.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo