You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/12/14 06:53:25 UTC

[james-project] 03/05: [ADR] Enhance existing ADRs

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit e7a14a1de6ff9f1b80608c8f4fe3522a76a0f36b
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Dec 5 22:22:22 2020 +0700

    [ADR] Enhance existing ADRs
    
    I have been doing a bit of archeology...
    
     - Update the status if needed
     - Indicate whether it had been implemented or not
     - Link the JIRA ticket (and thus the PRs as they should be references in the JIRA)
     - Link the pull request discussing the very ADR
     - If possible, link mailing list discussions
    
     Globally, we should try to link better sources of information together.
---
 src/adr/0001-record-architecture-decisions.md                 |  1 +
 src/adr/0002-make-taskmanager-distributed.md                  |  6 +++++-
 src/adr/0003-distributed-workqueue.md                         |  6 +++++-
 src/adr/0004-distributed-tasks-listing.md                     |  6 +++++-
 src/adr/0005-distributed-task-termination-ackowledgement.md   |  6 +++++-
 src/adr/0006-task-serialization.md                            |  6 +++++-
 src/adr/0007-distributed-task-cancellation.md                 |  6 +++++-
 src/adr/0008-distributed-task-await.md                        |  6 +++++-
 src/adr/0009-disable-elasticsearch-dynamic-mapping.md         |  3 ++-
 src/adr/0009-java-11-migration.md                             |  8 +++++++-
 src/adr/0010-enable-elasticsearch-routing.md                  |  3 ++-
 src/adr/0011-remove-elasticsearch-document-source.md          |  1 +
 src/adr/0012-jmap-partial-reads.md                            |  3 ++-
 src/adr/0013-precompute-jmap-preview.md                       |  4 +++-
 src/adr/0014-blobstore-storage-policies.md                    |  8 +++++---
 src/adr/0015-objectstorage-blobid-list.md                     |  4 +++-
 src/adr/0016-distributed-workqueue.md                         |  7 ++++++-
 src/adr/0017-file-mail-queue-deprecation.md                   |  2 +-
 src/adr/0018-jmap-new-specs.md                                |  2 +-
 src/adr/0019-reactor-netty-adoption.md                        |  2 +-
 src/adr/0020-cassandra-mailbox-object-consistency.md          |  2 +-
 src/adr/0021-cassandra-acl-inconsistency.md                   |  2 ++
 src/adr/0022-cassandra-message-inconsistency.md               |  2 +-
 src/adr/0023-cassandra-mailbox-counters-inconsistencies.md    |  2 +-
 src/adr/0024-polyglot-strategy.md                             |  6 ++++++
 src/adr/0025-cassandra-blob-store-cache.md                    |  2 +-
 .../0026-removing-configured-additional-mailboxListeners.md   |  4 +++-
 src/adr/0027-eventBus-error-handling-upon-dispatch.md         |  8 ++++++--
 src/adr/0028-Recompute-mailbox-quotas.md                      |  8 ++++++--
 src/adr/0029-Cassandra-mailbox-deletion-cleanup.md            |  8 ++++++--
 src/adr/0030-separate-attachment-content-and-metadata.md      |  2 +-
 src/adr/0031-distributed-mail-queue.md                        |  6 +++++-
 src/adr/0032-distributed-mail-queue-cleanup.md                |  6 +++++-
 src/adr/0033-use-scala-in-event-sourcing-modules.md           |  7 +++++--
 src/adr/0034-mailbox-api-visibility-and-usage.md              |  2 +-
 src/adr/0035-distributed-listeners-configuration.md           |  2 ++
 ...-against-use-of-conditional-statements-in-guice-modules.md |  8 ++++++--
 src/adr/0037-eventbus.md                                      |  6 +++++-
 src/adr/0038-distributed-eventbus.md                          | 10 ++++++++--
 src/adr/0039-distributed-blob-garbage-collector.md            |  6 ++++--
 src/adr/0040-quality-levels-definitions.md                    |  1 +
 src/adr/0041-replace-jcloud-with-s3.md                        | 11 ++++++++---
 src/adr/0042-applicative-read-repairs.md                      |  5 ++++-
 src/adr/0042-james-cli-based-on-webadmin.md                   |  5 ++++-
 src/adr/0043-avoid-elasticsearch-on-critical-reads.md         |  7 ++++++-
 45 files changed, 168 insertions(+), 50 deletions(-)

diff --git a/src/adr/0001-record-architecture-decisions.md b/src/adr/0001-record-architecture-decisions.md
index fa8e0c1..076a916 100644
--- a/src/adr/0001-record-architecture-decisions.md
+++ b/src/adr/0001-record-architecture-decisions.md
@@ -36,3 +36,4 @@ JIRA tickets implementing that architecture decision should also link the relate
 ## References
 
  * [JAMES-2909](https://jira.apache.org/jira/browse/JAMES-2909)
+ * [PR discussing this ADR](https://github.com/apache/james-project/pull/166)
diff --git a/src/adr/0002-make-taskmanager-distributed.md b/src/adr/0002-make-taskmanager-distributed.md
index a13c62d..c52cc6a 100644
--- a/src/adr/0002-make-taskmanager-distributed.md
+++ b/src/adr/0002-make-taskmanager-distributed.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -23,3 +23,7 @@ Create a distribution-aware implementation of `TaskManager`.
 
  * Split the `TaskManager` part dealing with the coordination (`Task` management and view) and the `Task` execution (located in `TaskManagerWorker`)
  * The distributed `TaskManager` will rely on RabbitMQ to coordinate and the event system to synchronize states
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
diff --git a/src/adr/0003-distributed-workqueue.md b/src/adr/0003-distributed-workqueue.md
index 7bf3337..a4f17b3 100644
--- a/src/adr/0003-distributed-workqueue.md
+++ b/src/adr/0003-distributed-workqueue.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 Superceded by [16. Distributed WorkQueue](0016-distributed-workqueue.md)
 
@@ -25,4 +25,8 @@ By switching the task manager to a distributed implementation, we need to be abl
 
  * It's a temporary and not safe to use in production solution: if the node promoted to exclusive listener of the queue dies, no more tasks will be run
  * The serial execution of tasks does not leverage cluster scalability.
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
 
diff --git a/src/adr/0004-distributed-tasks-listing.md b/src/adr/0004-distributed-tasks-listing.md
index a9dc089..336d276 100644
--- a/src/adr/0004-distributed-tasks-listing.md
+++ b/src/adr/0004-distributed-tasks-listing.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -18,3 +18,7 @@ By switching the task manager to a distributed implementation, we need to be abl
 
  * A Cassandra projection has to be done
  * The `EventSourcingSystem` should have a `Listener` updating the `Projection`
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
diff --git a/src/adr/0005-distributed-task-termination-ackowledgement.md b/src/adr/0005-distributed-task-termination-ackowledgement.md
index f125b8a..018590d 100644
--- a/src/adr/0005-distributed-task-termination-ackowledgement.md
+++ b/src/adr/0005-distributed-task-termination-ackowledgement.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -22,4 +22,8 @@ We need a way for nodes to be signaled of any termination event so that we can n
  * `TerminationEvent`s will be broadcasted on an exchange which will be bound to all interested components later
  * `EventSourcingSystem.dipatch` should use `RabbitMQ` to dispatch `Event`s instead of triggering local `Listener`s
  * Any node can be notified when a `Task` emits a termination event
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
 
diff --git a/src/adr/0006-task-serialization.md b/src/adr/0006-task-serialization.md
index 7530b0d..dcca4b2 100644
--- a/src/adr/0006-task-serialization.md
+++ b/src/adr/0006-task-serialization.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -27,3 +27,7 @@ At this point in time a `Task` can contain any arbitrary code. It's not an eleme
  * Every `Task`s should be serializable.
  * Every `Task`s should provide a `Factory` which would be responsible to deserialize the task and instantiate it.
  * Every `Factory` should be registered through a Guice module to be created for each project containing a `Factory`
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
diff --git a/src/adr/0007-distributed-task-cancellation.md b/src/adr/0007-distributed-task-cancellation.md
index 784dd5b..8f28464 100644
--- a/src/adr/0007-distributed-task-cancellation.md
+++ b/src/adr/0007-distributed-task-cancellation.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -19,3 +19,7 @@ A `Task` could be run on any node of the cluster. To interrupt it we need to not
 ## Consequences
 
 * The task manager's event system should be bound to the RabbitMQ exchange which publish the `TerminationEvent`s
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
diff --git a/src/adr/0008-distributed-task-await.md b/src/adr/0008-distributed-task-await.md
index 2f7e1c0..bc3885c 100644
--- a/src/adr/0008-distributed-task-await.md
+++ b/src/adr/0008-distributed-task-await.md
@@ -4,7 +4,7 @@ Date: 2019-10-02
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -19,4 +19,8 @@ By switching the task manager to a distributed implementation, we need to be abl
  * `RabbitMQTaskManager` should broadcast termination `Event`s (`Completed`|`Failed`|`Canceled`)
  * `RabbitMQTaskManager.await` should: first, check the `Task`'s state; and if it's not terminated, listen to RabbitMQ
  * The await should have a timeout limit
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
 
diff --git a/src/adr/0009-disable-elasticsearch-dynamic-mapping.md b/src/adr/0009-disable-elasticsearch-dynamic-mapping.md
index 5d75a43..f9f592d 100644
--- a/src/adr/0009-disable-elasticsearch-dynamic-mapping.md
+++ b/src/adr/0009-disable-elasticsearch-dynamic-mapping.md
@@ -4,7 +4,7 @@ Date: 2019-10-10
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -34,3 +34,4 @@ Regarding performance:
 
  - [1]: https://github.com/linagora/james-project/pull/2726 JAMES-2078 Add an integration test to prove that dynamic mapping can lead to ignored header fields
  - [JIRA](https://issues.apache.org/jira/browse/JAMES-2078)
+ * [PR discussing this ADR](https://github.com/apache/james-project/pull/171)
diff --git a/src/adr/0009-java-11-migration.md b/src/adr/0009-java-11-migration.md
index 5938905..4a51bad 100644
--- a/src/adr/0009-java-11-migration.md
+++ b/src/adr/0009-java-11-migration.md
@@ -4,7 +4,7 @@ Date: 2019-10-24
 
 ## Status
 
-Proposed
+Accepted & implemented
 
 ## Context
 
@@ -22,3 +22,9 @@ of the languages and the platform.
 * It requires the upgrade of Spring to 4.3.x.
 * All docker images should be updated to adoptopenjdk 11.
 * The documentation should be updated accordingly.
+
+## References
+
+* [Mailing list thread](https://www.mail-archive.com/server-dev@james.apache.org/msg62611.html)
+* [Mailing list thread](https://www.mail-archive.com/server-dev@james.apache.org/msg61335.html)
+* [PR discussing this ADR](https://github.com/apache/james-project/pull/171)
\ No newline at end of file
diff --git a/src/adr/0010-enable-elasticsearch-routing.md b/src/adr/0010-enable-elasticsearch-routing.md
index b74f458..94bfd9f 100644
--- a/src/adr/0010-enable-elasticsearch-routing.md
+++ b/src/adr/0010-enable-elasticsearch-routing.md
@@ -4,7 +4,7 @@ Date: 2019-10-17
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 Additional performance testing is required for adoption.
 
@@ -44,3 +44,4 @@ percentile reduction)
 
  - https://www.elastic.co/guide/en/elasticsearch/reference/6.3/mapping-routing-field.html
  - [JIRA](https://issues.apache.org/jira/browse/JAMES-2917)
+ - [PR discussing this ADR](https://github.com/apache/james-project/pull/171)
\ No newline at end of file
diff --git a/src/adr/0011-remove-elasticsearch-document-source.md b/src/adr/0011-remove-elasticsearch-document-source.md
index 30882f3..75f3e67 100644
--- a/src/adr/0011-remove-elasticsearch-document-source.md
+++ b/src/adr/0011-remove-elasticsearch-document-source.md
@@ -36,3 +36,4 @@ Note please that `_source` allows admin flexibility like performing index level
 
  - https://www.elastic.co/guide/en/elasticsearch/reference/6.3/mapping-source-field.html
  - [JIRA](https://issues.apache.org/jira/browse/JAMES-2906)
+ - [PR discussing this ADR](https://github.com/apache/james-project/pull/171)
diff --git a/src/adr/0012-jmap-partial-reads.md b/src/adr/0012-jmap-partial-reads.md
index ef945b6..bf2f6c3 100644
--- a/src/adr/0012-jmap-partial-reads.md
+++ b/src/adr/0012-jmap-partial-reads.md
@@ -4,7 +4,7 @@ Date: 2019-10-09
 
 ## Status
 
-Accepted
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -47,3 +47,4 @@ We went from:
 
  - /get method: https://tools.ietf.org/html/rfc8620#section-5.1
  - [JIRA](https://issues.apache.org/jira/browse/JAMES-2919)
+ * [PR discussing this ADR](https://github.com/apache/james-project/pull/170)
diff --git a/src/adr/0013-precompute-jmap-preview.md b/src/adr/0013-precompute-jmap-preview.md
index 8a1092f..a0173d6 100644
--- a/src/adr/0013-precompute-jmap-preview.md
+++ b/src/adr/0013-precompute-jmap-preview.md
@@ -4,7 +4,7 @@ Date: 2019-10-09
 
 ## Status
 
-Accepted
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -55,3 +55,5 @@ As such, this changeset significantly increases the JMAP performance.
  - Similar decision had been taken at FastMail: https://fastmail.blog/2014/12/15/dec-15-putting-the-fast-in-fastmail-loading-your-mailbox-quickly/
 
  - [JIRA](https://issues.apache.org/jira/browse/JAMES-2919)
+ 
+ - [PR discussing this ADR](https://github.com/apache/james-project/pull/170)
diff --git a/src/adr/0014-blobstore-storage-policies.md b/src/adr/0014-blobstore-storage-policies.md
index 655b1eb..2ecfb0b 100644
--- a/src/adr/0014-blobstore-storage-policies.md
+++ b/src/adr/0014-blobstore-storage-policies.md
@@ -4,9 +4,9 @@ Date: 2019-10-09
 
 ## Status
 
-Proposed
+Accepted
 
-Adoption needs to be backed by some performance tests, as well as data repartition between Cassandra and object storage shifts.
+Adoption had been backed by some performance tests, as well as data repartition between Cassandra and object storage shifts.
 
 ## Context
 
@@ -54,4 +54,6 @@ however we will benefits of the performance enhancements only for newly stored b
 
 ## References
 
- - [JIRA](https://issues.apache.org/jira/browse/JAMES-2921)
\ No newline at end of file
+ - [JIRA](https://issues.apache.org/jira/browse/JAMES-2921)
+ 
+ - [PR discussing this ADR](https://github.com/apache/james-project/pull/170)
\ No newline at end of file
diff --git a/src/adr/0015-objectstorage-blobid-list.md b/src/adr/0015-objectstorage-blobid-list.md
index ef1523b..326562e 100644
--- a/src/adr/0015-objectstorage-blobid-list.md
+++ b/src/adr/0015-objectstorage-blobid-list.md
@@ -4,7 +4,7 @@ Date: 2019-10-09
 
 ## Status
 
-Proposed
+Rejected (leads to concurrency issues)
 
 Adoption needs to be backed by some performance tests.
 
@@ -57,3 +57,5 @@ Previous optimization proposal using blob existence checks before persist. This
 https://github.com/linagora/james-project/pull/2011 (V2)
 
  - [JIRA](https://issues.apache.org/jira/browse/JAMES-2921)
+ 
+ - [PR discussing this ADR](https://github.com/apache/james-project/pull/170)
diff --git a/src/adr/0016-distributed-workqueue.md b/src/adr/0016-distributed-workqueue.md
index f2db6b9..0d37bbd 100644
--- a/src/adr/0016-distributed-workqueue.md
+++ b/src/adr/0016-distributed-workqueue.md
@@ -4,7 +4,7 @@ Date: 2019-12-03
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 Supercedes [3. Distributed WorkQueue](0003-distributed-workqueue.md)
 
@@ -27,3 +27,8 @@ By switching the task manager to a distributed implementation, we need to be abl
  * This solution is safer to use in production: if the active consumer dies, an other one is promoted instead.
  * This change needs RabbitMQ version to be at least 3.8.0.
  * The serial execution of tasks still does not leverage cluster scalability.
+ 
+## References
+
+* [JIRA ticket](https://issues.apache.org/jira/projects/JAMES/issues/JAMES-2813)
+* [PR discussing this ADR](https://github.com/apache/james-project/pull/259)
diff --git a/src/adr/0017-file-mail-queue-deprecation.md b/src/adr/0017-file-mail-queue-deprecation.md
index aba7396..78461a9 100644
--- a/src/adr/0017-file-mail-queue-deprecation.md
+++ b/src/adr/0017-file-mail-queue-deprecation.md
@@ -4,7 +4,7 @@ Date: 2019-12-04
 
 ## Status
 
-Proposed
+Accepted (lazy consensus) & removed
 
 ## Context
 
diff --git a/src/adr/0018-jmap-new-specs.md b/src/adr/0018-jmap-new-specs.md
index 3a125d8..eb27202 100644
--- a/src/adr/0018-jmap-new-specs.md
+++ b/src/adr/0018-jmap-new-specs.md
@@ -4,7 +4,7 @@ Date: 2020-02-06
 
 ## Status
 
-Proposed
+Accepted (lazy consensus) & partially implemented
 
 ## Context
 
diff --git a/src/adr/0019-reactor-netty-adoption.md b/src/adr/0019-reactor-netty-adoption.md
index 3f78056..e2e689b 100644
--- a/src/adr/0019-reactor-netty-adoption.md
+++ b/src/adr/0019-reactor-netty-adoption.md
@@ -4,7 +4,7 @@ Date: 2020-02-28
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
diff --git a/src/adr/0020-cassandra-mailbox-object-consistency.md b/src/adr/0020-cassandra-mailbox-object-consistency.md
index 559e2a4..de4dc0e 100644
--- a/src/adr/0020-cassandra-mailbox-object-consistency.md
+++ b/src/adr/0020-cassandra-mailbox-object-consistency.md
@@ -4,7 +4,7 @@ Date: 2020-02-27
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
diff --git a/src/adr/0021-cassandra-acl-inconsistency.md b/src/adr/0021-cassandra-acl-inconsistency.md
index 60922de..b625f76 100644
--- a/src/adr/0021-cassandra-acl-inconsistency.md
+++ b/src/adr/0021-cassandra-acl-inconsistency.md
@@ -6,6 +6,8 @@ Date: 2020-02-27
 
 Proposed
 
+Not implemented yet.
+
 ## Context
 
 Mailboxes ACLs are denormalized in Cassandra in order to:
diff --git a/src/adr/0022-cassandra-message-inconsistency.md b/src/adr/0022-cassandra-message-inconsistency.md
index 7a83d55..f4a7d9c 100644
--- a/src/adr/0022-cassandra-message-inconsistency.md
+++ b/src/adr/0022-cassandra-message-inconsistency.md
@@ -4,7 +4,7 @@ Date: 2020-02-27
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
diff --git a/src/adr/0023-cassandra-mailbox-counters-inconsistencies.md b/src/adr/0023-cassandra-mailbox-counters-inconsistencies.md
index 0ca1195..3de7301 100644
--- a/src/adr/0023-cassandra-mailbox-counters-inconsistencies.md
+++ b/src/adr/0023-cassandra-mailbox-counters-inconsistencies.md
@@ -4,7 +4,7 @@ Date: 2020-03-07
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
diff --git a/src/adr/0024-polyglot-strategy.md b/src/adr/0024-polyglot-strategy.md
index fac483e..266c5e8 100644
--- a/src/adr/0024-polyglot-strategy.md
+++ b/src/adr/0024-polyglot-strategy.md
@@ -6,6 +6,8 @@ Date: 2020-03-17
 
 Proposed
 
+We rely on scala in parts of the code base.
+
 ## Context & Problem Statement
 
 James is written in Java for a very long time. In recent years, Java modernized a lot after a decade of slow progress.
@@ -159,3 +161,7 @@ Cons:
 * Needs work to master
 * Can be slow to build
 * 3.0 will probably require code changes
+
+## References
+
+* [Mailing list thread](https://www.mail-archive.com/server-dev@james.apache.org/msg66100.html)
diff --git a/src/adr/0025-cassandra-blob-store-cache.md b/src/adr/0025-cassandra-blob-store-cache.md
index 40a25f1..98cb3ed 100644
--- a/src/adr/0025-cassandra-blob-store-cache.md
+++ b/src/adr/0025-cassandra-blob-store-cache.md
@@ -4,7 +4,7 @@ Date: 2020-04-03
 
 ## Status
 
-Proposed
+Accepted (lazy consensus) & implemented
 
 Supercedes [14. Add storage policies for BlobStore](0014-blobstore-storage-policies.md)
 
diff --git a/src/adr/0026-removing-configured-additional-mailboxListeners.md b/src/adr/0026-removing-configured-additional-mailboxListeners.md
index 5eefb81..e9fa3ce 100644
--- a/src/adr/0026-removing-configured-additional-mailboxListeners.md
+++ b/src/adr/0026-removing-configured-additional-mailboxListeners.md
@@ -6,7 +6,9 @@ Date: 2020-04-03
 
 Accepted (lazy consensus)
 
-Superceded by [34. Distributed Mailbox Listener Configuration](0035-distributed-listeners-configuration.md)
+Not implemented yet.
+
+Superseded by [35. Distributed Mailbox Listener Configuration](0035-distributed-listeners-configuration.md)
 
 ## Context
 
diff --git a/src/adr/0027-eventBus-error-handling-upon-dispatch.md b/src/adr/0027-eventBus-error-handling-upon-dispatch.md
index bdb36ff..aab0566 100644
--- a/src/adr/0027-eventBus-error-handling-upon-dispatch.md
+++ b/src/adr/0027-eventBus-error-handling-upon-dispatch.md
@@ -4,7 +4,7 @@ Date: 2020-04-03
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -32,4 +32,8 @@ re-dispatching of these events will be attempted.
 
 ## Consequence
 
-In distributed James Guice project an administrator have a way to be eventually consistent upon rabbitMQ failure.
\ No newline at end of file
+In distributed James Guice project an administrator have a way to be eventually consistent upon rabbitMQ failure.
+
+## References
+
+ - [JIRA](https://issues.apache.org/jira/browse/JAMES-3139)
\ No newline at end of file
diff --git a/src/adr/0028-Recompute-mailbox-quotas.md b/src/adr/0028-Recompute-mailbox-quotas.md
index 16182cd..72366c8 100644
--- a/src/adr/0028-Recompute-mailbox-quotas.md
+++ b/src/adr/0028-Recompute-mailbox-quotas.md
@@ -4,7 +4,7 @@ Date: 2020-04-03
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -44,4 +44,8 @@ This way, non-Cassandra implementation will also benefit from this task.
 
 This task is not concurrent-safe. Concurrent operations will result in an invalid quota to be persisted.
 
-However, as the source of truth is not altered, re-running this task will eventually return the correct result.
\ No newline at end of file
+However, as the source of truth is not altered, re-running this task will eventually return the correct result.
+
+## References
+
+ - [JIRA](https://issues.apache.org/jira/browse/JAMES-3138)
\ No newline at end of file
diff --git a/src/adr/0029-Cassandra-mailbox-deletion-cleanup.md b/src/adr/0029-Cassandra-mailbox-deletion-cleanup.md
index d97e3cd..87a99d1 100644
--- a/src/adr/0029-Cassandra-mailbox-deletion-cleanup.md
+++ b/src/adr/0029-Cassandra-mailbox-deletion-cleanup.md
@@ -4,7 +4,7 @@ Date: 2020-04-12
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -41,4 +41,8 @@ asynchronously, via mailbox listeners so that it can be retried.
 ## Consequences
 
 Mailbox listener failures lead to eventBus retrying their execution, we need to ensure the result of the deletion to be 
-idempotent. 
\ No newline at end of file
+idempotent. 
+
+## References
+
+ - [JIRA](https://issues.apache.org/jira/browse/JAMES-3148)
\ No newline at end of file
diff --git a/src/adr/0030-separate-attachment-content-and-metadata.md b/src/adr/0030-separate-attachment-content-and-metadata.md
index 704d603..b21b6a6 100644
--- a/src/adr/0030-separate-attachment-content-and-metadata.md
+++ b/src/adr/0030-separate-attachment-content-and-metadata.md
@@ -4,7 +4,7 @@ Date: 2020-04-13
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
diff --git a/src/adr/0031-distributed-mail-queue.md b/src/adr/0031-distributed-mail-queue.md
index 42c6691..5d84f83 100644
--- a/src/adr/0031-distributed-mail-queue.md
+++ b/src/adr/0031-distributed-mail-queue.md
@@ -4,7 +4,7 @@ Date: 2020-04-13
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -116,3 +116,7 @@ Distributed mail queue allows a better spreading of Mail processing workload. It
 management for all James servers.
 
 Yet some additional work is required to use it as a Mail Exchange scenario.
+
+## References
+
+* [JIRA](https://issues.apache.org/jira/browse/JAMES-2541)
\ No newline at end of file
diff --git a/src/adr/0032-distributed-mail-queue-cleanup.md b/src/adr/0032-distributed-mail-queue-cleanup.md
index 5f2202f..68a7557 100644
--- a/src/adr/0032-distributed-mail-queue-cleanup.md
+++ b/src/adr/0032-distributed-mail-queue-cleanup.md
@@ -4,7 +4,7 @@ Date: 2020-04-13
 
 ## Status
 
-Proposed
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -51,3 +51,7 @@ cleanup upon dequeue/delete operations. The dequeuer/deleter then directly remov
  related data.
  - this will end up tumbstoning live slices potentially harming browse/delete/browse start updates performance.
  - this proposition don't leverage as efficiently timeWindowCompactionStrategy.
+
+## References
+
+* [JIRA](https://issues.apache.org/jira/browse/JAMES-3319)
\ No newline at end of file
diff --git a/src/adr/0033-use-scala-in-event-sourcing-modules.md b/src/adr/0033-use-scala-in-event-sourcing-modules.md
index 12b619b..db80c56 100644
--- a/src/adr/0033-use-scala-in-event-sourcing-modules.md
+++ b/src/adr/0033-use-scala-in-event-sourcing-modules.md
@@ -4,7 +4,7 @@ Date: 2019-12-13
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -28,7 +28,10 @@ This will help to standardize the `event-*` modules as `event-store-memory` is a
 This change will avoid interopability concerns with the main consumers of those modules which are already written in Scala: see the distributed task manager.
 In the long run this will allow to have a stronger typing in those parts of the code and to have a much less verbose code.
 
-
 ## Consequences
 
 We will have to mitigate the pervading of the Scale API in the Java code base by implementing Java facade.
+
+## References
+
+* [JIRA](https://issues.apache.org/jira/browse/JAMES-3009)
\ No newline at end of file
diff --git a/src/adr/0034-mailbox-api-visibility-and-usage.md b/src/adr/0034-mailbox-api-visibility-and-usage.md
index 79b1117..aa41676 100644
--- a/src/adr/0034-mailbox-api-visibility-and-usage.md
+++ b/src/adr/0034-mailbox-api-visibility-and-usage.md
@@ -4,7 +4,7 @@ Date: 2020-04-27
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
diff --git a/src/adr/0035-distributed-listeners-configuration.md b/src/adr/0035-distributed-listeners-configuration.md
index 120e7ad..ab5204c 100644
--- a/src/adr/0035-distributed-listeners-configuration.md
+++ b/src/adr/0035-distributed-listeners-configuration.md
@@ -8,6 +8,8 @@ Proposed
 
 Supercedes [26. Removing a configured additional MailboxListener](0026-removing-configured-additional-mailboxListeners.md)
 
+Not implemented yet.
+
 ## Context
 
 James enables a user to register additional mailbox listeners.
diff --git a/src/adr/0036-against-use-of-conditional-statements-in-guice-modules.md b/src/adr/0036-against-use-of-conditional-statements-in-guice-modules.md
index 55307e7..9416a4a 100644
--- a/src/adr/0036-against-use-of-conditional-statements-in-guice-modules.md
+++ b/src/adr/0036-against-use-of-conditional-statements-in-guice-modules.md
@@ -4,7 +4,7 @@ Date: 2019-12-29
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -118,4 +118,8 @@ The following conditional statements in guice modules needs to be removed :
  
 We furthermore need to enable a module choice for LDAP on top of other existing products. We should remove LDAP variations
 for LDAP products. Corresponding docker image will be based on their non LDAP version, overriding the `usersrepository.xml`
-configuration file, be marked as deprecated and eventually removed.
\ No newline at end of file
+configuration file, be marked as deprecated and eventually removed.
+
+## References
+
+* [PR discussing this ADR](https://github.com/apache/james-project/pull/188)
\ No newline at end of file
diff --git a/src/adr/0037-eventbus.md b/src/adr/0037-eventbus.md
index f52b9f8..dfa0cf6 100644
--- a/src/adr/0037-eventbus.md
+++ b/src/adr/0037-eventbus.md
@@ -4,7 +4,7 @@ Date: 2020-05-05
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -61,3 +61,7 @@ The following features are implemented as Group mailbox listeners:
  - Quota indexing
  - Over Quota mailing
  - SpamAssassin Spam/Ham reporting
+ 
+## References
+
+* [JIRA](https://issues.apache.org/jira/browse/MAILBOX-364)
diff --git a/src/adr/0038-distributed-eventbus.md b/src/adr/0038-distributed-eventbus.md
index cb02ac6..6421678 100644
--- a/src/adr/0038-distributed-eventbus.md
+++ b/src/adr/0038-distributed-eventbus.md
@@ -4,7 +4,7 @@ Date: 2020-05-25
 
 ## Status
 
-Accepted (lazy consensus)
+Accepted (lazy consensus) & implemented
 
 ## Context
 
@@ -43,4 +43,10 @@ The implementation of the the distributed EventBus suffers from the following fl
  
 The following enhancement have furthermore been contributed:
 
- - [EventBus error handling upon dispatch](0027-eventBus-error-handling-upon-dispatch.md)
\ No newline at end of file
+ - [EventBus error handling upon dispatch](0027-eventBus-error-handling-upon-dispatch.md)
+
+## References
+
+* [JIRA 1](https://issues.apache.org/jira/browse/MAILBOX-367)
+* [JIRA 2](https://issues.apache.org/jira/browse/MAILBOX-368)
+* [JIRA 3](https://issues.apache.org/jira/browse/MAILBOX-371)
\ No newline at end of file
diff --git a/src/adr/0039-distributed-blob-garbage-collector.md b/src/adr/0039-distributed-blob-garbage-collector.md
index d2bcca1..29d422b 100644
--- a/src/adr/0039-distributed-blob-garbage-collector.md
+++ b/src/adr/0039-distributed-blob-garbage-collector.md
@@ -4,7 +4,9 @@ Date: 2020-02-18
 
 ## Status
 
-Proposed
+Proposed, not implemented yet.
+
+Work had been started on this topic.
 
 ## Context
 
@@ -58,7 +60,7 @@ store the blob for. This can make some components harder to implement as we will
 Since we will not build a distributed task scheduler. To increment the `reference generation` and launch periodically a
 `garbage collection iteration`, the scheduling will be done by an external scheduler (cron job, kubernetes cronjob ...)
  which will call a webadmin endpoint to launch this task periodically.
-
+ 
 ## Algorithm visualisation
 
 ### Generation 1 and Iteration 1
diff --git a/src/adr/0040-quality-levels-definitions.md b/src/adr/0040-quality-levels-definitions.md
index a4aad52..2b7e27e 100644
--- a/src/adr/0040-quality-levels-definitions.md
+++ b/src/adr/0040-quality-levels-definitions.md
@@ -60,3 +60,4 @@ tickets will encourage contributions on experimental and unsupported components.
 ## References
 
  - Mailing list discussion: https://www.mail-archive.com/server-dev@james.apache.org/msg66909.html
+ - [PR discussing this ADR](https://github.com/apache/james-project/pull/219)
\ No newline at end of file
diff --git a/src/adr/0041-replace-jcloud-with-s3.md b/src/adr/0041-replace-jcloud-with-s3.md
index 7c38220..1c083dd 100644
--- a/src/adr/0041-replace-jcloud-with-s3.md
+++ b/src/adr/0041-replace-jcloud-with-s3.md
@@ -4,9 +4,9 @@ Date: 2020-02-11
 
 ## Status
 
-Proposed
+Accepted (lazy consensus) & implemented
 
-Adoption needs to be backed by some performance tests.
+Adoption had been backed by some performance tests.
 
 ## Context
 
@@ -40,4 +40,9 @@ our Swift code without dropping Swift support at the same time.
 * We have to document carefully how to transition from `blob-store-objectstorage` with `blobstore-s3`  in the
 configuration and how to handle existing data
 
-* We need to work on a new implementation of blob encryption.
\ No newline at end of file
+* We need to work on a new implementation of blob encryption.
+
+## References
+
+* [JAMES](https://issues.apache.org/jira/browse/JAMES-3028)
+* [Pull request tree](https://github.com/linagora/james-project/pull/3773)
diff --git a/src/adr/0042-applicative-read-repairs.md b/src/adr/0042-applicative-read-repairs.md
index 3f5bc58..57fc7f9 100644
--- a/src/adr/0042-applicative-read-repairs.md
+++ b/src/adr/0042-applicative-read-repairs.md
@@ -4,7 +4,7 @@ Date: 2020-09-25
 
 ## Status
 
-Adopted (lazy consensus)
+Adopted (lazy consensus) & implemented
 
 Completes [20. Cassandra Mailbox object consistency](0020-cassandra-mailbox-object-consistency.md),
 [23. Cassandra Mailbox Counters inconsistencies](0023-cassandra-mailbox-counters-inconsistencies.md)
@@ -99,3 +99,6 @@ Materialized View Limitations:
     Mutations on a base table partition must happen sequentially per replica if the mutation touches
     a column in a view (this will improve after ticket CASSANDRA-10307)
 ```
+
+* [JIRA](https://issues.apache.org/jira/browse/JAMES-3407)
+* [PR discussing this ADR](https://github.com/apache/james-project/pull/248)
\ No newline at end of file
diff --git a/src/adr/0042-james-cli-based-on-webadmin.md b/src/adr/0042-james-cli-based-on-webadmin.md
index 3f09f11..3c648e8 100644
--- a/src/adr/0042-james-cli-based-on-webadmin.md
+++ b/src/adr/0042-james-cli-based-on-webadmin.md
@@ -79,4 +79,7 @@ It aims at providing a more modern and more secure CLI, also bringing compatibil
 * [NVD-CVE-2017-12628 Detail](https://nvd.nist.gov/vuln/detail/CVE-2017-12628)
 * [Picocli 2.0: Do More With Less](https://dzone.com/articles/whats-new-in-picocli-20)
 * [Picocli Homepage](https://picocli.info/)
-* [Native Image Maven Plugin](https://www.graalvm.org/reference-manual/native-image/NativeImageMavenPlugin/)
\ No newline at end of file
+* [Native Image Maven Plugin](https://www.graalvm.org/reference-manual/native-image/NativeImageMavenPlugin/)
+
+* [JIRA](https://issues.apache.org/jira/browse/JAMES-3400)
+* [PR discussing this ADR](https://github.com/apache/james-project/pull/251)
\ No newline at end of file
diff --git a/src/adr/0043-avoid-elasticsearch-on-critical-reads.md b/src/adr/0043-avoid-elasticsearch-on-critical-reads.md
index c2e1b7d..cd83236 100644
--- a/src/adr/0043-avoid-elasticsearch-on-critical-reads.md
+++ b/src/adr/0043-avoid-elasticsearch-on-critical-reads.md
@@ -4,7 +4,7 @@ Date: 2020-11-11
 
 ## Status
 
-Accepted (lazy consensus).
+Accepted (lazy consensus) & implemented
 
 Scope: Distributed James
 
@@ -168,3 +168,8 @@ COLUMN receivedAt
 ```
 
 Note that to handle position & limit, we need to fetch `position + limit` ordered items then removing `position` firsts items.
+
+## References
+
+* [JIRA](https://issues.apache.org/jira/browse/JAMES-3440)
+* [PR discussing this ADR](https://github.com/apache/james-project/pull/259)
\ No newline at end of file


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