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 2023/04/25 11:18:53 UTC
[james-project] branch master updated: JAMES-2791 Avoid incoherent mail repository count (#1537)
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 7932f38e8d JAMES-2791 Avoid incoherent mail repository count (#1537)
7932f38e8d is described below
commit 7932f38e8d455c6a613ee15c5ce9afb707afba80
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Tue Apr 25 18:18:47 2023 +0700
JAMES-2791 Avoid incoherent mail repository count (#1537)
This table can be dropped. Counting keys will definitly be fast
enough (~100ms for million mails) and will not be subject to
inconsistencies.
---
.../CassandraMailRepositoryModule.java | 2 -
.../cassandra/CassandraMailRepository.java | 22 +----
.../cassandra/CassandraMailRepositoryCountDAO.java | 101 ---------------------
.../cassandra/CassandraMailRepositoryFactory.java | 8 +-
.../cassandra/CassandraMailRepositoryKeysDAO.java | 17 ++++
.../cassandra/CassandraMailRepositoryModule.java | 6 --
.../cassandra/MailRepositoryTable.java | 3 -
.../CassandraMailRepositoryCountDAOTest.java | 98 --------------------
.../cassandra/CassandraMailRepositoryTest.java | 12 +--
...aMailRepositoryWithFakeImplementationsTest.java | 6 +-
10 files changed, 27 insertions(+), 248 deletions(-)
diff --git a/server/container/guice/mailrepository-cassandra/src/main/java/org/apache/james/modules/mailrepository/CassandraMailRepositoryModule.java b/server/container/guice/mailrepository-cassandra/src/main/java/org/apache/james/modules/mailrepository/CassandraMailRepositoryModule.java
index 198011d1c5..c93bfb7f95 100644
--- a/server/container/guice/mailrepository-cassandra/src/main/java/org/apache/james/modules/mailrepository/CassandraMailRepositoryModule.java
+++ b/server/container/guice/mailrepository-cassandra/src/main/java/org/apache/james/modules/mailrepository/CassandraMailRepositoryModule.java
@@ -26,7 +26,6 @@ import org.apache.james.mailrepository.api.MailRepositoryFactory;
import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
import org.apache.james.mailrepository.api.Protocol;
import org.apache.james.mailrepository.cassandra.CassandraMailRepository;
-import org.apache.james.mailrepository.cassandra.CassandraMailRepositoryCountDAO;
import org.apache.james.mailrepository.cassandra.CassandraMailRepositoryFactory;
import org.apache.james.mailrepository.cassandra.CassandraMailRepositoryKeysDAO;
import org.apache.james.mailrepository.cassandra.CassandraMailRepositoryMailDaoV2;
@@ -46,7 +45,6 @@ public class CassandraMailRepositoryModule extends AbstractModule {
protected void configure() {
bind(CassandraMailRepositoryUrlStore.class).in(Scopes.SINGLETON);
bind(CassandraMailRepositoryKeysDAO.class).in(Scopes.SINGLETON);
- bind(CassandraMailRepositoryCountDAO.class).in(Scopes.SINGLETON);
bind(CassandraMailRepositoryMailDaoV2.class).in(Scopes.SINGLETON);
bind(MailRepositoryUrlStore.class).to(CassandraMailRepositoryUrlStore.class);
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java
index a70e5c79f4..ba7db34f84 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java
@@ -48,19 +48,16 @@ import reactor.core.publisher.Mono;
public class CassandraMailRepository implements MailRepository {
private final MailRepositoryUrl url;
private final CassandraMailRepositoryKeysDAO keysDAO;
- private final CassandraMailRepositoryCountDAO countDAO;
private final CassandraMailRepositoryMailDaoV2 mailDAO;
private final Store<MimeMessage, MimeMessagePartsId> mimeMessageStore;
@Inject
CassandraMailRepository(MailRepositoryUrl url,
CassandraMailRepositoryKeysDAO keysDAO,
- CassandraMailRepositoryCountDAO countDAO,
CassandraMailRepositoryMailDaoV2 mailDAO,
MimeMessageStore.Factory mimeMessageStoreFactory) {
this.url = url;
this.keysDAO = keysDAO;
- this.countDAO = countDAO;
this.mailDAO = mailDAO;
this.mimeMessageStore = mimeMessageStoreFactory.mimeMessageStore();
}
@@ -74,18 +71,10 @@ public class CassandraMailRepository implements MailRepository {
parts.getHeaderBlobId(),
parts.getBodyBlobId()))
.then(keysDAO.store(url, mailKey))
- .flatMap(this::increaseSizeIfStored)
.thenReturn(mailKey)
.block();
}
- private Mono<Void> increaseSizeIfStored(Boolean isStored) {
- if (isStored) {
- return countDAO.increment(url);
- }
- return Mono.empty();
- }
-
@Override
public Iterator<MailKey> list() {
return keysDAO.list(url)
@@ -135,7 +124,6 @@ public class CassandraMailRepository implements MailRepository {
return mailDAO.read(url, key)
.flatMap(maybeMailDTO ->
keysDAO.remove(url, key)
- .flatMap(this::decreaseSizeIfDeleted)
.then(mailDAO.remove(url, key))
.then(deleteBlobs(maybeMailDTO)));
}
@@ -145,21 +133,15 @@ public class CassandraMailRepository implements MailRepository {
.flatMap(mailDTO -> Mono.from(mimeMessageStore.delete(blobIds(mailDTO))));
}
- private Mono<Void> decreaseSizeIfDeleted(Boolean isDeleted) {
- if (isDeleted) {
- return countDAO.decrement(url);
- }
- return Mono.empty();
- }
@Override
public long size() {
- return countDAO.getCount(url).block();
+ return keysDAO.getCount(url).block();
}
@Override
public Publisher<Long> sizeReactive() {
- return countDAO.getCount(url);
+ return keysDAO.getCount(url);
}
@Override
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAO.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAO.java
deleted file mode 100644
index 3f2c22a6a9..0000000000
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAO.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailrepository.cassandra;
-
-import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.bindMarker;
-import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.selectFrom;
-import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.update;
-import static com.datastax.oss.driver.api.querybuilder.relation.Relation.column;
-import static org.apache.james.mailrepository.cassandra.MailRepositoryTable.COUNT;
-import static org.apache.james.mailrepository.cassandra.MailRepositoryTable.COUNT_TABLE;
-import static org.apache.james.mailrepository.cassandra.MailRepositoryTable.REPOSITORY_NAME;
-
-import java.util.Optional;
-
-import javax.inject.Inject;
-
-import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.mailrepository.api.MailRepositoryUrl;
-
-import com.datastax.oss.driver.api.core.CqlSession;
-import com.datastax.oss.driver.api.core.cql.PreparedStatement;
-import com.datastax.oss.driver.api.core.cql.Row;
-
-import reactor.core.publisher.Mono;
-
-public class CassandraMailRepositoryCountDAO {
-
- private final CassandraAsyncExecutor executor;
- private final PreparedStatement increment;
- private final PreparedStatement decrement;
- private final PreparedStatement select;
-
- @Inject
- public CassandraMailRepositoryCountDAO(CqlSession session) {
- this.executor = new CassandraAsyncExecutor(session);
-
- this.increment = prepareIncrement(session);
- this.decrement = prepareDecrement(session);
- this.select = prepareSelect(session);
- }
-
- private PreparedStatement prepareDecrement(CqlSession session) {
- return session.prepare(update(COUNT_TABLE)
- .decrement(COUNT)
- .where(column(REPOSITORY_NAME).isEqualTo(bindMarker(REPOSITORY_NAME)))
- .build());
- }
-
- private PreparedStatement prepareIncrement(CqlSession session) {
- return session.prepare(update(COUNT_TABLE)
- .increment(COUNT)
- .where(column(REPOSITORY_NAME).isEqualTo(bindMarker(REPOSITORY_NAME)))
- .build());
- }
-
- private PreparedStatement prepareSelect(CqlSession session) {
- return session.prepare(selectFrom(COUNT_TABLE)
- .column(COUNT)
- .where(column(REPOSITORY_NAME).isEqualTo(bindMarker(REPOSITORY_NAME)))
- .build());
- }
-
- public Mono<Void> increment(MailRepositoryUrl url) {
- return executor.executeVoid(increment.bind()
- .setString(REPOSITORY_NAME, url.asString()));
- }
-
- public Mono<Void> decrement(MailRepositoryUrl url) {
- return executor.executeVoid(decrement.bind()
- .setString(REPOSITORY_NAME, url.asString()));
- }
-
- public Mono<Long> getCount(MailRepositoryUrl url) {
- return executor.executeSingleRowOptional(select.bind()
- .setString(REPOSITORY_NAME, url.asString()))
- .map(this::toCount);
- }
-
- private Long toCount(Optional<Row> rowOptional) {
- return rowOptional
- .map(row -> row.getLong(COUNT))
- .orElse(0L);
- }
-}
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryFactory.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryFactory.java
index 98a3d58d3e..bbd5bea463 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryFactory.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryFactory.java
@@ -28,19 +28,15 @@ import org.apache.james.mailrepository.api.MailRepositoryUrl;
public class CassandraMailRepositoryFactory implements MailRepositoryFactory {
private final CassandraMailRepositoryKeysDAO keysDAO;
- private final CassandraMailRepositoryCountDAO countDAO;
private final CassandraMailRepositoryMailDaoV2 mailDAO;
private final MimeMessageStore.Factory mimeMessageStoreFactory;
@Inject
public CassandraMailRepositoryFactory(
CassandraMailRepositoryKeysDAO keysDAO,
- CassandraMailRepositoryCountDAO countDAO,
CassandraMailRepositoryMailDaoV2 mailDAO,
- MimeMessageStore.Factory mimeMessageStoreFactory
- ) {
+ MimeMessageStore.Factory mimeMessageStoreFactory) {
this.keysDAO = keysDAO;
- this.countDAO = countDAO;
this.mailDAO = mailDAO;
this.mimeMessageStoreFactory = mimeMessageStoreFactory;
}
@@ -52,6 +48,6 @@ public class CassandraMailRepositoryFactory implements MailRepositoryFactory {
@Override
public MailRepository create(MailRepositoryUrl url) {
- return new CassandraMailRepository(url, keysDAO, countDAO, mailDAO, mimeMessageStoreFactory);
+ return new CassandraMailRepository(url, keysDAO, mailDAO, mimeMessageStoreFactory);
}
}
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAO.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAO.java
index 4e1b973e46..93a392cb19 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAO.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAO.java
@@ -45,11 +45,13 @@ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public class CassandraMailRepositoryKeysDAO {
+ private static final String COUNT = "count";
private final CassandraAsyncExecutor executor;
private final PreparedStatement insertKey;
private final PreparedStatement deleteKey;
private final PreparedStatement listKeys;
+ private final PreparedStatement countKeys;
private final boolean strongConsistency;
@Inject
@@ -60,6 +62,7 @@ public class CassandraMailRepositoryKeysDAO {
this.insertKey = prepareInsert(session);
this.deleteKey = prepareDelete(session);
this.listKeys = prepareList(session);
+ this.countKeys = prepareCount(session);
}
private PreparedStatement prepareList(CqlSession session) {
@@ -69,6 +72,13 @@ public class CassandraMailRepositoryKeysDAO {
.build());
}
+ private PreparedStatement prepareCount(CqlSession session) {
+ return session.prepare(selectFrom(KEYS_TABLE_NAME)
+ .countAll().as(COUNT)
+ .where(column(REPOSITORY_NAME).isEqualTo(bindMarker(REPOSITORY_NAME)))
+ .build());
+ }
+
private PreparedStatement prepareDelete(CqlSession session) {
Delete deleteStatement = deleteFrom(KEYS_TABLE_NAME)
.where(of(column(REPOSITORY_NAME).isEqualTo(bindMarker(REPOSITORY_NAME)),
@@ -109,6 +119,13 @@ public class CassandraMailRepositoryKeysDAO {
.map(row -> new MailKey(row.getString(MAIL_KEY)));
}
+ public Mono<Long> getCount(MailRepositoryUrl url) {
+ return executor.executeSingleRow(countKeys.bind()
+ .setString(REPOSITORY_NAME, url.asString()))
+ .map(row -> row.getLong(COUNT))
+ .switchIfEmpty(Mono.just(0L));
+ }
+
public Mono<Boolean> remove(MailRepositoryUrl url, MailKey key) {
Mono<Boolean> operation = executor.executeReturnApplied(deleteKey.bind()
.setString(REPOSITORY_NAME, url.asString())
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
index 8d0a44a2c7..cf2e8cc1c4 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
@@ -20,7 +20,6 @@
package org.apache.james.mailrepository.cassandra;
import static com.datastax.oss.driver.api.core.type.DataTypes.BIGINT;
-import static com.datastax.oss.driver.api.core.type.DataTypes.COUNTER;
import static com.datastax.oss.driver.api.core.type.DataTypes.TEXT;
import static com.datastax.oss.driver.api.core.type.DataTypes.TIMESTAMP;
import static com.datastax.oss.driver.api.core.type.DataTypes.listOf;
@@ -36,11 +35,6 @@ public interface CassandraMailRepositoryModule {
.withField(MailRepositoryTable.HEADER_NAME, TEXT)
.withField(MailRepositoryTable.HEADER_VALUE, TEXT))
- .table(MailRepositoryTable.COUNT_TABLE)
- .comment("Projection maintaining per mail repository mail counter")
- .statement(statement -> types -> statement
- .withPartitionKey(MailRepositoryTable.REPOSITORY_NAME, TEXT)
- .withColumn(MailRepositoryTable.COUNT, COUNTER))
.table(MailRepositoryTable.KEYS_TABLE_NAME)
.comment("Per-mailRepository mail key list")
.statement(statement -> types -> statement
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/MailRepositoryTable.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/MailRepositoryTable.java
index 13dd105602..ef56ec69f3 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/MailRepositoryTable.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/MailRepositoryTable.java
@@ -21,7 +21,6 @@ package org.apache.james.mailrepository.cassandra;
public interface MailRepositoryTable {
String KEYS_TABLE_NAME = "mailRepositoryKeys";
- String COUNT_TABLE = "mailRepositoryCount";
String REPOSITORY_NAME = "name";
@@ -39,8 +38,6 @@ public interface MailRepositoryTable {
String LAST_UPDATED = "lastUpdated";
String PER_RECIPIENT_SPECIFIC_HEADERS = "perRecipientSpecificHeaders";
- String COUNT = "count";
-
String HEADER_TYPE = "header";
String HEADER_NAME = "headerName";
String HEADER_VALUE = "headerValue";
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
deleted file mode 100644
index 4e4996dfc4..0000000000
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailrepository.cassandra;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
-import org.apache.james.mailrepository.api.MailRepositoryUrl;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-class CassandraMailRepositoryCountDAOTest {
- static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
- static final MailRepositoryUrl URL2 = MailRepositoryUrl.from("proto://url2");
-
- @RegisterExtension
- static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
- CassandraModule.aggregateModules(CassandraSchemaVersionModule.MODULE,CassandraMailRepositoryModule.MODULE));
-
- CassandraMailRepositoryCountDAO testee;
-
- @BeforeEach
- void setUp(CassandraCluster cassandra) {
- testee = new CassandraMailRepositoryCountDAO(cassandra.getConf());
- }
-
- @Test
- void getCountShouldReturnZeroWhenEmpty() {
- assertThat(testee.getCount(URL).block())
- .isEqualTo(0L);
- }
-
- @Test
- void getCountShouldReturnOneWhenIncrementedOneTime() {
- testee.increment(URL).block();
-
- assertThat(testee.getCount(URL).block())
- .isEqualTo(1L);
- }
-
- @Test
- void incrementShouldNotAffectOtherUrls() {
- testee.increment(URL).block();
-
- assertThat(testee.getCount(URL2).block())
- .isEqualTo(0L);
- }
-
- @Test
- void incrementCanBeAppliedSeveralTime() {
- testee.increment(URL).block();
- testee.increment(URL).block();
-
- assertThat(testee.getCount(URL).block())
- .isEqualTo(2L);
- }
-
- @Test
- void decrementShouldDecreaseCount() {
- testee.increment(URL).block();
- testee.increment(URL).block();
- testee.increment(URL).block();
-
- testee.decrement(URL).block();
-
- assertThat(testee.getCount(URL).block())
- .isEqualTo(2L);
- }
-
- @Test
- void decrementCanLeadToNegativeCount() {
- testee.decrement(URL).block();
-
- assertThat(testee.getCount(URL).block())
- .isEqualTo(-1L);
- }
-}
\ No newline at end of file
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
index 433b5f6e1e..f12c114940 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
@@ -66,12 +66,11 @@ class CassandraMailRepositoryTest {
void setup(CassandraCluster cassandra) {
CassandraMailRepositoryMailDaoV2 v2 = new CassandraMailRepositoryMailDaoV2(cassandra.getConf(), BLOB_ID_FACTORY);
CassandraMailRepositoryKeysDAO keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
- CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
BlobStore blobStore = CassandraBlobStoreFactory.forTesting(cassandra.getConf(), new RecordingMetricFactory())
.passthrough();
cassandraMailRepository = new CassandraMailRepository(URL,
- keysDAO, countDAO, v2, MimeMessageStore.factory(blobStore));
+ keysDAO, v2, MimeMessageStore.factory(blobStore));
}
@Override
@@ -80,11 +79,10 @@ class CassandraMailRepositoryTest {
CassandraMailRepositoryMailDaoV2 v2 = new CassandraMailRepositoryMailDaoV2(cassandra.getConf(), BLOB_ID_FACTORY);
CassandraMailRepositoryKeysDAO keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
- CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
BlobStore blobStore = CassandraBlobStoreFactory.forTesting(cassandra.getConf(), new RecordingMetricFactory())
.passthrough();
- return new CassandraMailRepository(MailRepositoryUrl.fromPathAndProtocol(new Protocol("cassandra"), url), keysDAO, countDAO, v2, MimeMessageStore.factory(blobStore));
+ return new CassandraMailRepository(MailRepositoryUrl.fromPathAndProtocol(new Protocol("cassandra"), url), keysDAO, v2, MimeMessageStore.factory(blobStore));
}
@Override
@@ -129,12 +127,11 @@ class CassandraMailRepositoryTest {
void setup(CassandraCluster cassandra) {
CassandraMailRepositoryMailDaoV2 v2 = new CassandraMailRepositoryMailDaoV2(cassandra.getConf(), BLOB_ID_FACTORY);
CassandraMailRepositoryKeysDAO keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
- CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
BlobStore blobStore = CassandraBlobStoreFactory.forTesting(cassandra.getConf(), new RecordingMetricFactory())
.deduplication();
cassandraMailRepository = new CassandraMailRepository(URL,
- keysDAO, countDAO, v2, MimeMessageStore.factory(blobStore));
+ keysDAO, v2, MimeMessageStore.factory(blobStore));
}
@Override
@@ -143,11 +140,10 @@ class CassandraMailRepositoryTest {
CassandraMailRepositoryMailDaoV2 v2 = new CassandraMailRepositoryMailDaoV2(cassandra.getConf(), BLOB_ID_FACTORY);
CassandraMailRepositoryKeysDAO keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
- CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
BlobStore blobStore = CassandraBlobStoreFactory.forTesting(cassandra.getConf(), new RecordingMetricFactory())
.deduplication();
- return new CassandraMailRepository(MailRepositoryUrl.fromPathAndProtocol(new Protocol("cassandra"), url), keysDAO, countDAO, v2, MimeMessageStore.factory(blobStore));
+ return new CassandraMailRepository(MailRepositoryUrl.fromPathAndProtocol(new Protocol("cassandra"), url), keysDAO, v2, MimeMessageStore.factory(blobStore));
}
@Override
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java
index 2ae770cf51..64920aabab 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java
@@ -59,19 +59,17 @@ class CassandraMailRepositoryWithFakeImplementationsTest {
CassandraMailRepository cassandraMailRepository;
- CassandraMailRepositoryCountDAO countDAO;
CassandraMailRepositoryKeysDAO keysDAO;
@BeforeEach
void setup(CassandraCluster cassandra) {
CassandraMailRepositoryMailDaoV2 mailDAO = new CassandraMailRepositoryMailDaoV2(cassandra.getConf(), BLOB_ID_FACTORY);
keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
- countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
BlobStore blobStore = CassandraBlobStoreFactory.forTesting(cassandra.getConf(), new RecordingMetricFactory())
.passthrough();
cassandraMailRepository = new CassandraMailRepository(URL,
- keysDAO, countDAO, mailDAO, MimeMessageStore.factory(blobStore));
+ keysDAO, mailDAO, MimeMessageStore.factory(blobStore));
}
@Nested
@@ -180,7 +178,7 @@ class CassandraMailRepositoryWithFakeImplementationsTest {
assertThatThrownBy(() -> cassandraMailRepository.store(mail))
.isInstanceOf(RuntimeException.class);
- assertThat(countDAO.getCount(URL).block()).isEqualTo(0);
+ assertThat(keysDAO.getCount(URL).block()).isEqualTo(0L);
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org