JAMES-3623 Provide a (multi-DC firendly) Distributed POP3 Application#570
JAMES-3623 Provide a (multi-DC firendly) Distributed POP3 Application#570chibenwa merged 14 commits intoapache:masterfrom
Conversation
...distributed/src/test/java/org/apache/james/pop3server/mailbox/DistributedPop3ServerTest.java
Outdated
Show resolved
Hide resolved
...uted/src/main/java/org/apache/james/pop3server/mailbox/task/MessageInconsistenciesEntry.java
Outdated
Show resolved
Hide resolved
WhyJames POP3 implementation is backed by the IMAP UID, a monotic counter. Cassandra implementation uses LightWeight transactions to back a compare and swap. This implementation have expensive run time costs, especially in a multi data center setup (LWTs requires 4 round trips accross replica even for reads). HowWe should contribute to apache/james-project an alternative implementation of the POP3 server not Use a dedicated view in order to list the messageIds within a mailbox and the size of the messages and use Offer a configuration option to choose between the classic 'uid based' implementation or the 'messageId based' implementation via the mechanism of module-choosing. ConsequencesBy implementing this we will have more options in the face of bad Lightweight Transaction performances:
Also POP3 workload would not need a failover script to increment UIDs upon failover. However not playing it timely would result in data loss with IMAP. All places currently relying on IMAP UID as an identifier will not be able to be relied upon. Impact studies shows that, for some tasks like mail re-indexing will be impacted (as they are backed by IMAP UID), which is likely non critical for a pure POP3 usage. TestsThe following changeset had been tested with Thunderbird (for the Cassandra set up) We had been contributing extensive integration tests for the POP3 servers. |
...r/apps/distributed-pop3-app/src/main/java/org/apache/james/mailbox/RandomModSeqProvider.java
Show resolved
Hide resolved
server/apps/distributed-pop3-app/src/main/java/org/apache/james/mailbox/RandomUidProvider.java
Show resolved
Hide resolved
41564e3 to
fd63714
Compare
fd63714 to
cebf8f3
Compare
This server diverges from the distributed server by only using MessageId backed by a TimeUUID as a message identifier, thus is multi-datacenter friendly, however comes with a reduced feature set (only supports SMTP protocol).
This enable factorizing the mailbox context reads for right checking.
80e9bfb to
c47e992
Compare
|
DEPRECATION NOTICE of adoptopenjdk: This image is officially deprecated in favor of the eclipse-temurin image, and will receive no further updates after 2021-08-01 (Aug 01, 2021). Please adjust your usage accordingly.
https://www.mail-archive.com/server-dev@james.apache.org/msg70682.html
This server diverges from the distributed server by only using MessageId backed by a TimeUUID as a message identifier,
thus is multi-datacenter friendly, however comes with a reduced feature set (only supports SMTP protocol).