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 2021/10/01 02:02:13 UTC
[james-project] branch master updated: MAILBOX-333 Avoid
overQuotaMailing failures when no size limit (#676)
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
The following commit(s) were added to refs/heads/master by this push:
new a52fba3 MAILBOX-333 Avoid overQuotaMailing failures when no size limit (#676)
a52fba3 is described below
commit a52fba3abe51812ba47ec5740604fa3263379c92
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Fri Oct 1 09:02:08 2021 +0700
MAILBOX-333 Avoid overQuotaMailing failures when no size limit (#676)
```
java.lang.IllegalStateException: null
at java.base/java.util.Optional.orElseThrow(Optional.java:408)
at org.apache.james.core.quota.QuotaSizeLimit.asLong(QuotaSizeLimit.java:52)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdNotice.computeScopes(QuotaThresholdNotice.java:202)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdNotice.renderTemplate(QuotaThresholdNotice.java:169)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdNotice.generateSubject(QuotaThresholdNotice.java:146)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdNotice.generateMimeMessage(QuotaThresholdNotice.java:140)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdMailer.sendNotice(QuotaThresholdMailer.java:78)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdMailer.lambda$handleEvent$0(QuotaThresholdMailer.java:70)
at com.github.fge.lambdas.consumers.ConsumerChainer.doAccept(ConsumerChainer.java:20)
at com.github.fge.lambdas.consumers.ThrowingConsumer.accept(ThrowingConsumer.java:22)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdMailer.handleEvent(QuotaThresholdMailer.java:70)
at org.apache.james.mailbox.quota.mailing.subscribers.QuotaThresholdMailer.handle(QuotaThresholdMailer.java:57)
at org.apache.james.eventsourcing.ReactiveSubscriberWrapper.handle(Subscriber.scala:43)
```
---
.../mailing/subscribers/QuotaThresholdNotice.java | 2 +-
.../subscribers/QuotaThresholdNoticeTest.java | 58 ++++++++++++++++++++++
2 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNotice.java b/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNotice.java
index 056892f..919883c 100644
--- a/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNotice.java
+++ b/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNotice.java
@@ -199,7 +199,7 @@ public class QuotaThresholdNotice {
scopes.put("usedCount", countQuota.getUsed().asLong());
scopes.put("hasCountLimit", countQuota.getLimit().isLimited());
if (countQuota.getLimit().isLimited()) {
- scopes.put("limitCount", sizeQuota.getLimit().asLong());
+ scopes.put("limitCount", countQuota.getLimit().asLong());
}
return scopes;
diff --git a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNoticeTest.java b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNoticeTest.java
index 3a55cdf..73985d1 100644
--- a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNoticeTest.java
+++ b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/subscribers/QuotaThresholdNoticeTest.java
@@ -186,6 +186,64 @@ class QuotaThresholdNoticeTest {
}
@Test
+ void generateReportShouldGenerateAHumanReadableMessageWhenNoCountQuota() throws Exception {
+ QuotaThresholdChange sizeThresholdChange = new QuotaThresholdChange(_80, NOW);
+ QuotaThresholdChange countThresholdChange = new QuotaThresholdChange(_80, NOW);
+
+ assertThat(QuotaThresholdNotice.builder()
+ .withConfiguration(DEFAULT_CONFIGURATION)
+ .sizeQuota(Sizes._82_PERCENT)
+ .countQuota(Quota.<QuotaCountLimit, QuotaCountUsage>builder()
+ .used(QuotaCountUsage.count(92))
+ .computedLimit(QuotaCountLimit.unlimited())
+ .build())
+ .sizeThreshold(HistoryEvolution.higherThresholdReached(sizeThresholdChange, NotAlreadyReachedDuringGracePeriod))
+ .countThreshold(HistoryEvolution.higherThresholdReached(countThresholdChange, NotAlreadyReachedDuringGracePeriod))
+ .build()
+ .get()
+ .generateReport(fileSystem))
+ .isEqualTo("You receive this email because you recently exceeded a threshold related to the quotas of your email account.\n" +
+ "\n" +
+ "You currently occupy more than 80 % of the total size allocated to you.\n" +
+ "You currently occupy 82 bytes on a total of 100 bytes allocated to you.\n" +
+ "\n" +
+ "You currently occupy more than 80 % of the total message count allocated to you.\n" +
+ "You currently have 92 messages.\n" +
+ "\n" +
+ "You need to be aware that actions leading to exceeded quotas will be denied. This will result in a degraded service.\n" +
+ "To mitigate this issue you might reach your administrator in order to increase your configured quota. You might also delete some non important emails.");
+ }
+
+ @Test
+ void generateReportShouldGenerateAHumanReadableMessageWhenNoSizeQuota() throws Exception {
+ QuotaThresholdChange sizeThresholdChange = new QuotaThresholdChange(_80, NOW);
+ QuotaThresholdChange countThresholdChange = new QuotaThresholdChange(_80, NOW);
+
+ assertThat(QuotaThresholdNotice.builder()
+ .withConfiguration(DEFAULT_CONFIGURATION)
+ .countQuota(Counts._92_PERCENT)
+ .sizeQuota(Quota.<QuotaSizeLimit, QuotaSizeUsage>builder()
+ .used(QuotaSizeUsage.size(82))
+ .computedLimit(QuotaSizeLimit.unlimited())
+ .build())
+ .sizeThreshold(HistoryEvolution.higherThresholdReached(sizeThresholdChange, NotAlreadyReachedDuringGracePeriod))
+ .countThreshold(HistoryEvolution.higherThresholdReached(countThresholdChange, NotAlreadyReachedDuringGracePeriod))
+ .build()
+ .get()
+ .generateReport(fileSystem))
+ .isEqualTo("You receive this email because you recently exceeded a threshold related to the quotas of your email account.\n" +
+ "\n" +
+ "You currently occupy more than 80 % of the total size allocated to you.\n" +
+ "You currently occupy 82 bytes.\n" +
+ "\n" +
+ "You currently occupy more than 80 % of the total message count allocated to you.\n" +
+ "You currently have 92 messages on a total of 100 allowed for you.\n" +
+ "\n" +
+ "You need to be aware that actions leading to exceeded quotas will be denied. This will result in a degraded service.\n" +
+ "To mitigate this issue you might reach your administrator in order to increase your configured quota. You might also delete some non important emails.");
+ }
+
+ @Test
void generateReportShouldOmitCountPartWhenNone() throws Exception {
QuotaThresholdChange sizeThresholdChange = new QuotaThresholdChange(_80, NOW);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org