Hören Sie auf, jeden Ordner zu öffnen, und hören Sie auf, jede Nachricht zu widerrufen

PerformanceEmailService
Verschifft
14. August 2026 um 02:09 UTC
Autor
Kamo
Ausschuss
9698977

Zwei Rundreiseprobleme auf dem kritischen Pfad /Nachricht, beide unsichtbar in der Code, der sie verursacht. listFolders öffnete jeden Ordner read-only, um zwei ganze Zahlen davon zu lesen. Das ist ein SELECT und eine CLOSE pro Ordner, und es macht den Server bauen jede Mailbox-Index auf dem Weg, so dass eine zwanzigfache Mailbox verbrachte vierzig Rundreisen Beantwortung einer Frage über vierzig Zahlen. Die Sidebar lädt diese auf Halterung und wieder auf jede Mailbox-Änderung - Post ankommt, eine Nachricht gelesen, eine Bewegung, ein Löschen ist die meistgenannte IMAP-Operation im Produkt. getUnreadCount's eigenen javadoc hat gesagt, listFolders war "viel zu teuer", da es geschrieben wurde. STATUS gibt genau diese Zähler zurück und berührt keine Botschaft. Server-Werbung RFC 5819 LIST-STATUS, Dovecot unter ihnen, jetzt beantworten den ganzen Baum in einem Befehl; alles andere bekommt ein STATUS pro geschlossenen Ordner, wo Jakarta Mail's Status-Cache dient ungelesen und insgesamt von einer einzigen Antwort. Nur ein Ordner, dessen Ordner Server-Verweigerungen STATUS ist jetzt geöffnet. Der Listenpfad hatte eine N+1 nichts genannt. FetchProfile.Item.ENVELOPE expandiert auf ENVELOPE INTERNALDATE RFC822.SIZE - keine BODYSTRUCTURE und keine Header - aber toEnvelope-Aufrufe getContentType() für die Anlage heuristisch und liest Message-ID zum Threading. Jakarta Mail antwortet auf einen unvorhergesehenen Accessor von ruhig Ausgabe seiner eigenen Single-Nachricht FETCH, so dass eine fünfzig-Nachrichten-Seite Kosten bis zu hundert zusätzliche Rundreisen. Die Suche war schlimmer: es hat überhaupt nichts vorgeholt. Beide teilen sich nun ein Profil, das jedes Feld abdeckt, das Envelope liest. Die LIST-STATUS-Antwort wird hier und nicht von Jakarta Mail geparst, also ist es Parsed under Test: IMAPResponse akzeptiert eine wörtliche Protokolllinie, und die zehn Fälle decken Bestellung, \Noselect, abwesenden STATUS und nicht zusammenhängenden Verkehr ab. Eines von ist ein Fehler, der gefunden hat - ListInfo dekodiert modifiziert UTF-7-Postfachnamen und Status nicht, so dass Beitritt ihnen, wie sie ankommen würde Null ungelesen gemeldet haben für genau diese Ordner mit einem Akzent im Namen, und nichts anderes.

Alle Änderungen

Wie, was Sie sehen Versand?

Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.

Free Forever startenPreisgestaltung anzeigen