You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2023/10/20 08:35:38 UTC

[james-project] branch master updated (87351b15dc -> 40fe60d517)

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

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


    from 87351b15dc JAMES-3948 FIX virtual users should not be listed (#1753)
     new 5ddfc721f9 JAMES-3926 Fix migration task for current quotas
     new 8cf9ad8f4b JAMES-3926 Fix migration task for per user max quotas
     new 3c6f13966c JAMES-3926 Fix migration task for sieve quotas
     new c5d41b04ea JAMES-3926 Latest Cassandra version schema should be 15
     new bc4dfc46fc JAMES-3926 Fix quota.compatibility.mode configuration
     new ce475c3323 [FIX] Fix deletedMessageVault configuration
     new 6b1bdb514b JAMES-3926 Add singleton to V2 cassandra quota DAOs in legacy modules
     new 40fe60d517 JAMES-3926 Fix CassandraPerUserMaxQuotaManagerMigration for the case that user has no user quota defined in Cassandra quota table

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../versions/CassandraSchemaVersionManager.java       |  2 +-
 .../CassandraCurrentQuotaManagerMigration.java        |  2 +-
 .../CassandraPerUserMaxQuotaManagerMigration.java     |  6 ++++--
 .../CassandraPerUserMaxQuotaManagerMigrationTest.java |  2 ++
 .../james/CassandraJamesServerConfiguration.java      | 12 ++++++++----
 .../james/CassandraRabbitMQJamesConfiguration.java    | 12 ++++++++----
 .../james/DistributedPOP3JamesConfiguration.java      | 13 +++++++++----
 .../modules/data/CassandraSieveQuotaLegacyModule.java |  4 ++++
 .../james/modules/data/CassandraSieveQuotaModule.java |  1 +
 .../mailbox/CassandraMailboxQuotaLegacyModule.java    |  6 ++++++
 .../modules/mailbox/CassandraMailboxQuotaModule.java  |  2 ++
 .../james/modules/webadmin/CassandraRoutesModule.java |  2 +-
 .../cassandra/migration/SieveQuotaMigration.java      |  2 +-
 .../RabbitMQWebAdminServerIntegrationTest.java        | 19 ++++++++++---------
 upgrade-instructions.md                               |  2 +-
 15 files changed, 59 insertions(+), 28 deletions(-)
 rename mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/{ => migration}/CassandraPerUserMaxQuotaManagerMigration.java (94%)


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


[james-project] 05/08: JAMES-3926 Fix quota.compatibility.mode configuration

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bc4dfc46fc2b786f47dbd1d62da6d28d1a294992
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Oct 17 15:28:28 2023 +0700

    JAMES-3926 Fix quota.compatibility.mode configuration
    
    Need the PropertiesProvider to read cassandra.properties file, not the FileConfigurationProvider
---
 .../java/org/apache/james/CassandraJamesServerConfiguration.java   | 6 ++++--
 .../java/org/apache/james/CassandraRabbitMQJamesConfiguration.java | 6 ++++--
 .../java/org/apache/james/DistributedPOP3JamesConfiguration.java   | 7 +++++--
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
index ee8d86a699..9731958a7e 100644
--- a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
+++ b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
@@ -151,9 +151,11 @@ public class CassandraJamesServerConfiguration implements Configuration {
 
             boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> {
                 try {
-                    return configurationProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
-                } catch (ConfigurationException e) {
+                    return propertiesProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
+                } catch (FileNotFoundException e) {
                     return false;
+                } catch (ConfigurationException e) {
+                    throw new RuntimeException(e);
                 }
             });
 
diff --git a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java
index ac7ae1da56..5d55feb301 100644
--- a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java
+++ b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java
@@ -180,9 +180,11 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration {
 
             boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> {
                 try {
-                    return configurationProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
-                } catch (ConfigurationException e) {
+                    return propertiesProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
+                } catch (FileNotFoundException e) {
                     return false;
+                } catch (ConfigurationException e) {
+                    throw new RuntimeException(e);
                 }
             });
 
diff --git a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java
index 6264d1bd61..11a0cf748a 100644
--- a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java
+++ b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java
@@ -20,6 +20,7 @@
 package org.apache.james;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.util.Optional;
 
 import org.apache.commons.configuration2.ex.ConfigurationException;
@@ -148,9 +149,11 @@ public class DistributedPOP3JamesConfiguration implements Configuration {
 
             boolean quotaCompatibilityMode = this.quotaCompatibilityMode.orElseGet(() -> {
                 try {
-                    return configurationProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
-                } catch (ConfigurationException e) {
+                    return propertiesProvider.getConfiguration("cassandra").getBoolean("quota.compatibility.mode", false);
+                } catch (FileNotFoundException e) {
                     return false;
+                } catch (ConfigurationException e) {
+                    throw new RuntimeException(e);
                 }
             });
 


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


[james-project] 04/08: JAMES-3926 Latest Cassandra version schema should be 15

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c5d41b04eab9acd0dd423505809f75cbe7ffca79
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Oct 17 12:12:31 2023 +0700

    JAMES-3926 Latest Cassandra version schema should be 15
---
 .../versions/CassandraSchemaVersionManager.java       |  2 +-
 .../RabbitMQWebAdminServerIntegrationTest.java        | 19 ++++++++++---------
 upgrade-instructions.md                               |  2 +-
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
index 0b7e485c1c..da6c191fe7 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
@@ -36,7 +36,7 @@ import reactor.core.publisher.Mono;
 
 public class CassandraSchemaVersionManager {
     public static final SchemaVersion MIN_VERSION = new SchemaVersion(12);
-    public static final SchemaVersion MAX_VERSION = new SchemaVersion(14);
+    public static final SchemaVersion MAX_VERSION = new SchemaVersion(15);
     public static final SchemaVersion DEFAULT_VERSION = MIN_VERSION;
 
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraSchemaVersionManager.class);
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 ea2d39bada..90333d3623 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
@@ -30,13 +30,6 @@ import static org.hamcrest.CoreMatchers.hasItems;
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
 
-import com.datastax.oss.driver.api.core.CqlSession;
-import com.google.inject.AbstractModule;
-import com.google.inject.Inject;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
 import org.apache.james.CassandraExtension;
 import org.apache.james.CassandraRabbitMQJamesConfiguration;
 import org.apache.james.CassandraRabbitMQJamesServerMain;
@@ -65,6 +58,14 @@ import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import com.datastax.oss.driver.api.core.CqlSession;
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import com.google.inject.name.Names;
+
 import io.restassured.http.ContentType;
 
 @Tag(BasicFeature.TAG)
@@ -129,13 +130,13 @@ class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegrationTes
     private static final String UPGRADE_TO_LATEST_VERSION = UPGRADE_VERSION + "/latest";
 
     @Test
-    void getCurrentVersionShouldReturnNullForCurrentVersionAsBeginning() {
+    void getCurrentVersionShouldReturnMaxVersionForCurrentVersionWhenFirstRun() {
         when()
             .get(VERSION)
         .then()
             .statusCode(HttpStatus.OK_200)
             .contentType(JSON_CONTENT_TYPE)
-            .body(is("{\"version\":14}"));
+            .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}"));
     }
 
     @Test
diff --git a/upgrade-instructions.md b/upgrade-instructions.md
index d0aa4f5eac..e20dfec85c 100644
--- a/upgrade-instructions.md
+++ b/upgrade-instructions.md
@@ -105,7 +105,7 @@ In order to upgrade to the latest Quota data model, one need to enable quota com
 quota.compatibility.mode=true
 ```
 
-This is required for going from Cassandra schema version 12 -> 13.
+This is required for going from Cassandra schema version 12 -> 15.
 
 then run the migration: https://james.apache.org/server/manage-webadmin.html#Cassandra_Schema_upgrades
 


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


[james-project] 06/08: [FIX] Fix deletedMessageVault configuration

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ce475c3323669e6b30156532338877ff7d6ff24a
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Oct 17 15:31:38 2023 +0700

    [FIX] Fix deletedMessageVault configuration
    
    Need the PropertiesProvider to read deletedMessageVault.properties file, not the FileConfigurationProvider
---
 .../java/org/apache/james/CassandraJamesServerConfiguration.java    | 6 ++++--
 .../java/org/apache/james/CassandraRabbitMQJamesConfiguration.java  | 6 ++++--
 .../java/org/apache/james/DistributedPOP3JamesConfiguration.java    | 6 ++++--
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
index 9731958a7e..b731768490 100644
--- a/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
+++ b/server/apps/cassandra-app/src/main/java/org/apache/james/CassandraJamesServerConfiguration.java
@@ -143,9 +143,11 @@ public class CassandraJamesServerConfiguration implements Configuration {
 
             VaultConfiguration vaultConfiguration = this.vaultConfiguration.orElseGet(() -> {
                 try {
-                    return VaultConfiguration.from(configurationProvider.getConfiguration("deletedMessageVault"));
-                } catch (ConfigurationException e) {
+                    return VaultConfiguration.from(propertiesProvider.getConfiguration("deletedMessageVault"));
+                } catch (FileNotFoundException e) {
                     return VaultConfiguration.DEFAULT;
+                } catch (ConfigurationException e) {
+                    throw new RuntimeException(e);
                 }
             });
 
diff --git a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java
index 5d55feb301..7a4daa5d67 100644
--- a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java
+++ b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java
@@ -162,9 +162,11 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration {
 
             VaultConfiguration vaultConfiguration = this.vaultConfiguration.orElseGet(() -> {
                 try {
-                    return VaultConfiguration.from(configurationProvider.getConfiguration("deletedMessageVault"));
-                } catch (ConfigurationException e) {
+                    return VaultConfiguration.from(propertiesProvider.getConfiguration("deletedMessageVault"));
+                } catch (FileNotFoundException e) {
                     return VaultConfiguration.DEFAULT;
+                } catch (ConfigurationException e) {
+                    throw new RuntimeException(e);
                 }
             });
 
diff --git a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java
index 11a0cf748a..56772aa524 100644
--- a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java
+++ b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesConfiguration.java
@@ -141,9 +141,11 @@ public class DistributedPOP3JamesConfiguration implements Configuration {
 
             VaultConfiguration vaultConfiguration = this.vaultConfiguration.orElseGet(() -> {
                 try {
-                    return VaultConfiguration.from(configurationProvider.getConfiguration("deletedMessageVault"));
-                } catch (ConfigurationException e) {
+                    return VaultConfiguration.from(propertiesProvider.getConfiguration("deletedMessageVault"));
+                } catch (FileNotFoundException e) {
                     return VaultConfiguration.DEFAULT;
+                } catch (ConfigurationException e) {
+                    throw new RuntimeException(e);
                 }
             });
 


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


[james-project] 07/08: JAMES-3926 Add singleton to V2 cassandra quota DAOs in legacy modules

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6b1bdb514baff5c2db14cf1c6d272a78bfc36a4d
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Wed Oct 18 10:22:12 2023 +0700

    JAMES-3926 Add singleton to V2 cassandra quota DAOs in legacy modules
---
 .../org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java  | 1 +
 .../apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java
index 942e48fe01..b102b7185c 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java
@@ -35,6 +35,7 @@ public class CassandraSieveQuotaLegacyModule extends AbstractModule {
     @Override
     protected void configure() {
         bind(CassandraSieveQuotaDAOV1.class).in(Scopes.SINGLETON);
+        bind(CassandraSieveQuotaDAOV2.class).in(Scopes.SINGLETON);
         bind(CassandraSieveQuotaDAO.class).to(CassandraSieveQuotaDAOV1.class);
         bind(CassandraSieveQuotaDAO.class).annotatedWith(Names.named("old")).to(CassandraSieveQuotaDAOV1.class);
         bind(CassandraSieveQuotaDAO.class).annotatedWith(Names.named("new")).to(CassandraSieveQuotaDAOV2.class);
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
index 38d9ec6381..1db5fac742 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
@@ -37,11 +37,13 @@ public class CassandraMailboxQuotaLegacyModule extends AbstractModule {
     @Override
     protected void configure() {
         bind(CassandraCurrentQuotaManagerV1.class).in(Scopes.SINGLETON);
+        bind(CassandraCurrentQuotaManagerV2.class).in(Scopes.SINGLETON);
         bind(CurrentQuotaManager.class).to(CassandraCurrentQuotaManagerV1.class);
         bind(CurrentQuotaManager.class).annotatedWith(Names.named("old")).to(CassandraCurrentQuotaManagerV1.class);
         bind(CurrentQuotaManager.class).annotatedWith(Names.named("new")).to(CassandraCurrentQuotaManagerV2.class);
 
         bind(CassandraPerUserMaxQuotaManagerV1.class).in(Scopes.SINGLETON);
+        bind(CassandraPerUserMaxQuotaManagerV2.class).in(Scopes.SINGLETON);
         bind(MaxQuotaManager.class).to(CassandraPerUserMaxQuotaManagerV1.class);
         bind(MaxQuotaManager.class).annotatedWith(Names.named("old")).to(CassandraPerUserMaxQuotaManagerV1.class);
         bind(MaxQuotaManager.class).annotatedWith(Names.named("new")).to(CassandraPerUserMaxQuotaManagerV2.class);


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


[james-project] 02/08: JAMES-3926 Fix migration task for per user max quotas

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8cf9ad8f4b57232a1a79931e8ac5c8263f279ed2
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Oct 17 12:09:52 2023 +0700

    JAMES-3926 Fix migration task for per user max quotas
---
 .../{ => migration}/CassandraPerUserMaxQuotaManagerMigration.java     | 4 ++--
 .../cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java | 1 +
 .../james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java      | 2 ++
 .../org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java | 1 +
 .../java/org/apache/james/modules/webadmin/CassandraRoutesModule.java | 2 +-
 5 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigration.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java
similarity index 97%
rename from mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigration.java
rename to mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java
index 1df5ff4814..9be8ed2a95 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigration.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mailbox.cassandra.quota;
+package org.apache.james.mailbox.cassandra.quota.migration;
 
 import java.util.List;
 
@@ -50,7 +50,7 @@ public class CassandraPerUserMaxQuotaManagerMigration implements Migration {
 
     @Inject
     public CassandraPerUserMaxQuotaManagerMigration(UsersRepository usersRepository, DomainList domainDao,
-                                                    @Named("old") MaxQuotaManager oldMaxQuotaManager, MaxQuotaManager newMaxQuotaManager,
+                                                    @Named("old") MaxQuotaManager oldMaxQuotaManager, @Named("new")  MaxQuotaManager newMaxQuotaManager,
                                                     UserQuotaRootResolver userQuotaRootResolver) {
         this.usersRepository = usersRepository;
         this.domainDao = domainDao;
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java
index 529b9aba95..8ce70dcac6 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java
@@ -34,6 +34,7 @@ import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.api.mock.SimpleDomainList;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxQuotaModule;
+import org.apache.james.mailbox.cassandra.quota.migration.CassandraPerUserMaxQuotaManagerMigration;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.quota.UserQuotaRootResolver;
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
index 8a9c4b30ad..38d9ec6381 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
@@ -23,6 +23,7 @@ import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManagerV1;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManagerV2;
 import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManagerV1;
+import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManagerV2;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 
@@ -43,6 +44,7 @@ public class CassandraMailboxQuotaLegacyModule extends AbstractModule {
         bind(CassandraPerUserMaxQuotaManagerV1.class).in(Scopes.SINGLETON);
         bind(MaxQuotaManager.class).to(CassandraPerUserMaxQuotaManagerV1.class);
         bind(MaxQuotaManager.class).annotatedWith(Names.named("old")).to(CassandraPerUserMaxQuotaManagerV1.class);
+        bind(MaxQuotaManager.class).annotatedWith(Names.named("new")).to(CassandraPerUserMaxQuotaManagerV2.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
         cassandraDataDefinitions.addBinding().toInstance(org.apache.james.mailbox.cassandra.modules.CassandraMailboxQuotaModule.MODULE);
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java
index 69aba3433c..26c11ed178 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java
@@ -41,5 +41,6 @@ public class CassandraMailboxQuotaModule extends AbstractModule {
         bind(CassandraPerUserMaxQuotaManagerV2.class).in(Scopes.SINGLETON);
         bind(MaxQuotaManager.class).to(CassandraPerUserMaxQuotaManagerV2.class);
         bind(MaxQuotaManager.class).annotatedWith(Names.named("old")).to(FakeMaxQuotaManager.class);
+        bind(MaxQuotaManager.class).annotatedWith(Names.named("new")).to(CassandraPerUserMaxQuotaManagerV2.class);
     }
 }
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/webadmin/CassandraRoutesModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/webadmin/CassandraRoutesModule.java
index 9f12d8bf42..b4c17d7cac 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/webadmin/CassandraRoutesModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/webadmin/CassandraRoutesModule.java
@@ -25,8 +25,8 @@ import org.apache.james.backends.cassandra.migration.MigrationTask;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
 import org.apache.james.backends.cassandra.versions.SchemaTransition;
 import org.apache.james.backends.cassandra.versions.SchemaVersion;
-import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManagerMigration;
 import org.apache.james.mailbox.cassandra.quota.migration.CassandraCurrentQuotaManagerMigration;
+import org.apache.james.mailbox.cassandra.quota.migration.CassandraPerUserMaxQuotaManagerMigration;
 import org.apache.james.sieve.cassandra.migration.SieveQuotaMigration;
 import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.routes.CassandraMailboxMergingRoutes;


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


[james-project] 08/08: JAMES-3926 Fix CassandraPerUserMaxQuotaManagerMigration for the case that user has no user quota defined in Cassandra quota table

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 40fe60d517c4b1ce1af575a567aca5f69c3ed303
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Wed Oct 18 10:58:34 2023 +0700

    JAMES-3926 Fix CassandraPerUserMaxQuotaManagerMigration for the case that user has no user quota defined in Cassandra quota table
---
 .../quota/migration/CassandraPerUserMaxQuotaManagerMigration.java       | 2 ++
 .../cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java   | 1 +
 2 files changed, 3 insertions(+)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java
index 9be8ed2a95..2d89e6c894 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraPerUserMaxQuotaManagerMigration.java
@@ -85,9 +85,11 @@ public class CassandraPerUserMaxQuotaManagerMigration implements Migration {
 
     private Mono<Void> migrateUserQuotaLimit(QuotaRoot quotaRoot) {
         return Mono.from(oldMaxQuotaManager.listMaxMessagesDetailsReactive(quotaRoot))
+            .filter(map -> map.containsKey(Quota.Scope.User))
             .map(map -> map.get(Quota.Scope.User))
             .flatMap(quotaCountLimit -> Mono.from(newMaxQuotaManager.setMaxMessageReactive(quotaRoot, quotaCountLimit)))
             .then(Mono.from(oldMaxQuotaManager.listMaxStorageDetailsReactive(quotaRoot))
+                .filter(map -> map.containsKey(Quota.Scope.User))
                 .map(map -> map.get(Quota.Scope.User))
                 .flatMap(quotaSizeLimit -> Mono.from(newMaxQuotaManager.setMaxStorageReactive(quotaRoot, quotaSizeLimit))));
     }
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java
index 8ce70dcac6..69c27a59ce 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerMigrationTest.java
@@ -128,6 +128,7 @@ public class CassandraPerUserMaxQuotaManagerMigrationTest {
 
     @Test
     void shouldNotFailWhenNoUserLimit() throws Exception {
+        usersRepository.addUser(USERNAME, "1");
         migration.apply();
         assertThat(newMaxQuotaManager.getMaxMessage(QUOTA_ROOT)).isEmpty();
         assertThat(newMaxQuotaManager.getMaxStorage(QUOTA_ROOT)).isEmpty();


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


[james-project] 03/08: JAMES-3926 Fix migration task for sieve quotas

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3c6f13966c76647b6d9e817dcfa1f85550d72d3b
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Oct 17 12:12:03 2023 +0700

    JAMES-3926 Fix migration task for sieve quotas
---
 .../org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java | 3 +++
 .../java/org/apache/james/modules/data/CassandraSieveQuotaModule.java  | 1 +
 .../apache/james/sieve/cassandra/migration/SieveQuotaMigration.java    | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java
index db953a8764..942e48fe01 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaLegacyModule.java
@@ -22,12 +22,14 @@ package org.apache.james.modules.data;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.sieve.cassandra.CassandraSieveQuotaDAO;
 import org.apache.james.sieve.cassandra.CassandraSieveQuotaDAOV1;
+import org.apache.james.sieve.cassandra.CassandraSieveQuotaDAOV2;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Scopes;
 import com.google.inject.multibindings.Multibinder;
 import com.google.inject.name.Names;
 
+@Deprecated() // To be removed after release 3.9.0
 public class CassandraSieveQuotaLegacyModule extends AbstractModule {
 
     @Override
@@ -35,6 +37,7 @@ public class CassandraSieveQuotaLegacyModule extends AbstractModule {
         bind(CassandraSieveQuotaDAOV1.class).in(Scopes.SINGLETON);
         bind(CassandraSieveQuotaDAO.class).to(CassandraSieveQuotaDAOV1.class);
         bind(CassandraSieveQuotaDAO.class).annotatedWith(Names.named("old")).to(CassandraSieveQuotaDAOV1.class);
+        bind(CassandraSieveQuotaDAO.class).annotatedWith(Names.named("new")).to(CassandraSieveQuotaDAOV2.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
         cassandraDataDefinitions.addBinding().toInstance(org.apache.james.sieve.cassandra.CassandraSieveQuotaModule.MODULE);
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaModule.java
index bb71b69fb5..864a2dadd1 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraSieveQuotaModule.java
@@ -33,5 +33,6 @@ public class CassandraSieveQuotaModule extends AbstractModule {
         bind(CassandraSieveQuotaDAOV2.class).in(Scopes.SINGLETON);
         bind(CassandraSieveQuotaDAO.class).to(CassandraSieveQuotaDAOV2.class);
         bind(CassandraSieveQuotaDAO.class).annotatedWith(Names.named("old")).to(FakeSieveQuotaDAO.class);
+        bind(CassandraSieveQuotaDAO.class).annotatedWith(Names.named("new")).to(CassandraSieveQuotaDAOV2.class);
     }
 }
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/migration/SieveQuotaMigration.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/migration/SieveQuotaMigration.java
index 287bd01c52..e2958c1dd8 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/migration/SieveQuotaMigration.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/migration/SieveQuotaMigration.java
@@ -36,7 +36,7 @@ public class SieveQuotaMigration implements Migration {
     private final CassandraSieveQuotaDAO newDAO;
 
     @Inject
-    public SieveQuotaMigration(UsersRepository usersRepository, @Named("old") CassandraSieveQuotaDAO oldDAO, CassandraSieveQuotaDAO newDAO) {
+    public SieveQuotaMigration(UsersRepository usersRepository, @Named("old") CassandraSieveQuotaDAO oldDAO, @Named("new") CassandraSieveQuotaDAO newDAO) {
         this.usersRepository = usersRepository;
         this.oldDAO = oldDAO;
         this.newDAO = newDAO;


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


[james-project] 01/08: JAMES-3926 Fix migration task for current quotas

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 5ddfc721f9aed9074ab6874497eb9519f0386182
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Oct 17 12:05:24 2023 +0700

    JAMES-3926 Fix migration task for current quotas
---
 .../quota/migration/CassandraCurrentQuotaManagerMigration.java          | 2 +-
 .../apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java | 2 ++
 .../org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java   | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraCurrentQuotaManagerMigration.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraCurrentQuotaManagerMigration.java
index b22e2aec63..ee3426a4bb 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraCurrentQuotaManagerMigration.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/migration/CassandraCurrentQuotaManagerMigration.java
@@ -43,7 +43,7 @@ public class CassandraCurrentQuotaManagerMigration implements Migration {
     public CassandraCurrentQuotaManagerMigration(UsersRepository usersRepository,
                                                  UserQuotaRootResolver userQuotaRootResolver,
                                                  @Named("old") CurrentQuotaManager oldCurrentQuotaManager,
-                                                 CurrentQuotaManager newCurrentQuotaManager) {
+                                                 @Named("new") CurrentQuotaManager newCurrentQuotaManager) {
         this.usersRepository = usersRepository;
         this.userQuotaRootResolver = userQuotaRootResolver;
         this.oldCurrentQuotaManager = oldCurrentQuotaManager;
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
index 78ca4d7dce..8a9c4b30ad 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaLegacyModule.java
@@ -21,6 +21,7 @@ package org.apache.james.modules.mailbox;
 
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManagerV1;
+import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManagerV2;
 import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManagerV1;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
@@ -37,6 +38,7 @@ public class CassandraMailboxQuotaLegacyModule extends AbstractModule {
         bind(CassandraCurrentQuotaManagerV1.class).in(Scopes.SINGLETON);
         bind(CurrentQuotaManager.class).to(CassandraCurrentQuotaManagerV1.class);
         bind(CurrentQuotaManager.class).annotatedWith(Names.named("old")).to(CassandraCurrentQuotaManagerV1.class);
+        bind(CurrentQuotaManager.class).annotatedWith(Names.named("new")).to(CassandraCurrentQuotaManagerV2.class);
 
         bind(CassandraPerUserMaxQuotaManagerV1.class).in(Scopes.SINGLETON);
         bind(MaxQuotaManager.class).to(CassandraPerUserMaxQuotaManagerV1.class);
diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java
index 302cb0df8a..69aba3433c 100644
--- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java
+++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxQuotaModule.java
@@ -36,6 +36,7 @@ public class CassandraMailboxQuotaModule extends AbstractModule {
         bind(CassandraCurrentQuotaManagerV2.class).in(Scopes.SINGLETON);
         bind(CurrentQuotaManager.class).to(CassandraCurrentQuotaManagerV2.class);
         bind(CurrentQuotaManager.class).annotatedWith(Names.named("old")).to(FakeCassandraCurrentQuotaManager.class);
+        bind(CurrentQuotaManager.class).annotatedWith(Names.named("new")).to(CassandraCurrentQuotaManagerV2.class);
 
         bind(CassandraPerUserMaxQuotaManagerV2.class).in(Scopes.SINGLETON);
         bind(MaxQuotaManager.class).to(CassandraPerUserMaxQuotaManagerV2.class);


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