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 d58d7e9c72511165b3974e85ecf4d3b528cef878 Author: Benoit Tellier <[email protected]> AuthorDate: Fri Mar 27 18:08:55 2020 +0700 JAMES-3058 Add a confirmation header to call SolveMailboxInconsistency task --- .../rabbitmq/RabbitMQWebAdminServerIntegrationTest.java | 1 + .../routes/SolveMailboxInconsistenciesRequestToTask.java | 12 +++++++++++- src/site/markdown/server/manage-webadmin.md | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java index dcf26ba..0f7b1e8 100644 --- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java @@ -178,6 +178,7 @@ class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegrationTes .body("status", is("completed")); taskId = with() + .header("I-KNOW-WHAT-I-M-DOING", "ALL-SERVICES-ARE-OFFLINE") .queryParam("task", "SolveInconsistencies") .post("/mailboxes") .jsonPath() diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTask.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTask.java index 7418226..064dca5 100644 --- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTask.java +++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTask.java @@ -26,12 +26,22 @@ import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesT import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; import org.apache.james.webadmin.tasks.TaskRegistrationKey; +import com.google.common.base.Preconditions; + public class SolveMailboxInconsistenciesRequestToTask extends TaskFromRequestRegistry.TaskRegistration { private static final TaskRegistrationKey REGISTRATION_KEY = TaskRegistrationKey.of("SolveInconsistencies"); @Inject public SolveMailboxInconsistenciesRequestToTask(SolveMailboxInconsistenciesService service) { super(REGISTRATION_KEY, - request -> new SolveMailboxInconsistenciesTask(service)); + request -> { + Preconditions.checkArgument(request.headers("I-KNOW-WHAT-I-M-DOING") + .equalsIgnoreCase("ALL-SERVICES-ARE-OFFLINE"), + "Due to concurrency risks, a `I-KNOW-WHAT-I-M-DOING` header should be positioned to " + + "`ALL-SERVICES-ARE-OFFLINE` in order to prevent accidental calls. " + + "Check the documentation for details."); + + return new SolveMailboxInconsistenciesTask(service); + }); } } diff --git a/src/site/markdown/server/manage-webadmin.md b/src/site/markdown/server/manage-webadmin.md index 042752b..e88532e 100644 --- a/src/site/markdown/server/manage-webadmin.md +++ b/src/site/markdown/server/manage-webadmin.md @@ -453,6 +453,9 @@ A dirty read is when data is read between the two writes of the denormalization In order to ensure being offline, stop the traffic on SMTP, JMAP and IMAP ports, for example via re-configuration or firewall rules. +Due to all of those risks, a `I-KNOW-WHAT-I-M-DOING` header should be positioned to `ALL-SERVICES-ARE-OFFLINE` in order +to prevent accidental calls. + #### Recomputing mailbox counters This task is only available on top of Guice Cassandra products. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
