jeantil opened a new pull request, #2422:
URL: https://github.com/apache/james-project/pull/2422

   This serves to clarify implementation details that can affect the semantics 
of some operations.
   
   i couldn't really find a better place than the javadoc of the 
`ManageableMailQueue` to put this in. 
   
   I did write the following in `server/queue/queue-api/README.adoc`
   ```README.adoc
   = Apache James MailQueue projects
   
   The James MailQueue project provies the queue/spool mechanism used in the 
Apache James project.
   The james-server-queue-api defines 2 levels of APIs which can be implemented 
to provide such spool mechanism
   basic and manageable.
   
   == Overview
   
   The main API contracts are:
   
   - MailQueue
   - ManageableMailQueue
   
   == MailQueue
   
   This contract includes the most basic semantics for the queue mechanism:
   
   - enqueue
   - dequeue
   
   Both operations are exposed in a blocking and a reactive flavor.
   
   
   == ManageableMailQueue
   
   This contract enhances the basic semantics of MailQueue to offer management 
services:
   
   - browse
   - flush
   - clear
   - remove
   
   
   [NOTE]
   .ManageableMailQueue#remove
   ====
   - **MUST** be eventually consistent
   - **CAN** be strongly consistent
   ====
   
   [NOTE]
   .ManageableMailQueue#browse
   ====
   - **MUST** tolerate concurrent changes in the underlying queue while the 
MailQueueIterator is being consumed
   - **CAN** return stale items (removed or dequeud) since the operation has 
started. This can happen for snapshot-based implementations that have captured 
a copy of the data or in distributed implementations relying on eventual 
consistency
   ====
   ```
   
   but the implementation notes of the MailQueue itself are in the javadoc 
rather than in a readme so I decided against including this file in the PR.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to