You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/09/13 10:57:30 UTC
[04/24] james-project git commit: MAILBOX-304 Configure read timeout
for attachment v2 migration
MAILBOX-304 Configure read timeout for attachment v2 migration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b3c308e9
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b3c308e9
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b3c308e9
Branch: refs/heads/master
Commit: b3c308e9c0a0a18a69c37889701230b10c379834
Parents: 2001443
Author: benwa <bt...@linagora.com>
Authored: Sat Sep 9 15:50:56 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 13 10:17:37 2017 +0200
----------------------------------------------------------------------
.../cassandra/init/CassandraConfiguration.java | 36 ++++++++++++++++----
.../init/CassandraConfigurationTest.java | 24 +++++++++++--
.../cassandra/mail/CassandraAttachmentDAO.java | 10 +++---
...estCassandraMailboxSessionMapperFactory.java | 2 +-
.../mail/CassandraAttachmentDAOTest.java | 5 ++-
.../mail/CassandraAttachmentFallbackTest.java | 5 ++-
.../migration/AttachmentV2MigrationTest.java | 5 ++-
.../modules/mailbox/CassandraSessionModule.java | 3 ++
.../mailbox/CassandraSessionModuleTest.java | 1 +
.../modules/mailbox/cassandra.properties | 1 +
src/site/xdoc/server/config-cassandra.xml | 15 ++++++++
11 files changed, 90 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
index 17945e8..2121cff 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
@@ -19,16 +19,17 @@
package org.apache.james.backends.cassandra.init;
+import static java.lang.Math.toIntExact;
+
import java.util.Objects;
import java.util.Optional;
+import java.util.concurrent.TimeUnit;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
public class CassandraConfiguration {
- public static final CassandraConfiguration DEFAULT_CONFIGURATION = builder().build();
-
public static final int DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ = 100;
public static final int DEFAULT_EXPUNGE_BATCH_SIZE = 100;
public static final int DEFAULT_UPDATE_FLAGS_BATCH_SIZE = 20;
@@ -39,6 +40,8 @@ public class CassandraConfiguration {
public static final int DEFAULT_ACL_MAX_RETRY = 1000;
public static final int DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW = 100;
public static final int DEFAULT_BLOB_PART_SIZE = 100 * 1024;
+ public static final int DEFAULT_ATTACHMENT_V2_MIGRATION_READ_TIMEOUT = toIntExact(TimeUnit.DAYS.toMillis(1));
+ public static final CassandraConfiguration DEFAULT_CONFIGURATION = builder().build();
public static class Builder {
private Optional<Integer> messageReadChunkSize = Optional.empty();
@@ -51,6 +54,7 @@ public class CassandraConfiguration {
private Optional<Integer> aclMaxRetry = Optional.empty();
private Optional<Integer> fetchNextPageInAdvanceRow = Optional.empty();
private Optional<Integer> blobPartSize = Optional.empty();
+ private Optional<Integer> attachmentV2MigrationReadTimeout = Optional.empty();
public Builder messageReadChunkSize(int value) {
Preconditions.checkArgument(value > 0, "messageReadChunkSize needs to be strictly positive");
@@ -112,6 +116,12 @@ public class CassandraConfiguration {
return this;
}
+ public Builder attachmentV2MigrationReadTimeout(int value) {
+ Preconditions.checkArgument(value > 0, "attachmentV2MigrationReadTimeout needs to be strictly positive");
+ this.attachmentV2MigrationReadTimeout = Optional.of(value);
+ return this;
+ }
+
public Builder messageReadChunkSize(Optional<Integer> value) {
value.ifPresent(this::messageReadChunkSize);
return this;
@@ -162,6 +172,11 @@ public class CassandraConfiguration {
return this;
}
+ public Builder attachmentV2MigrationReadTimeout(Optional<Integer> value) {
+ value.ifPresent(this::attachmentV2MigrationReadTimeout);
+ return this;
+ }
+
public CassandraConfiguration build() {
return new CassandraConfiguration(aclMaxRetry.orElse(DEFAULT_ACL_MAX_RETRY),
messageReadChunkSize.orElse(DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ),
@@ -172,7 +187,8 @@ public class CassandraConfiguration {
modSeqMaxRetry.orElse(DEFAULT_MODSEQ_MAX_RETRY),
uidMaxRetry.orElse(DEFAULT_UID_MAX_RETRY),
fetchNextPageInAdvanceRow.orElse(DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW),
- blobPartSize.orElse(DEFAULT_BLOB_PART_SIZE));
+ blobPartSize.orElse(DEFAULT_BLOB_PART_SIZE),
+ attachmentV2MigrationReadTimeout.orElse(DEFAULT_ATTACHMENT_V2_MIGRATION_READ_TIMEOUT));
}
}
@@ -190,12 +206,13 @@ public class CassandraConfiguration {
private final int aclMaxRetry;
private final int fetchNextPageInAdvanceRow;
private final int blobPartSize;
+ private final int attachmentV2MigrationReadTimeout;
@VisibleForTesting
CassandraConfiguration(int aclMaxRetry, int messageReadChunkSize, int expungeChunkSize,
int flagsUpdateChunkSize, int flagsUpdateMessageIdMaxRetry, int flagsUpdateMessageMaxRetry,
int modSeqMaxRetry, int uidMaxRetry, int fetchNextPageInAdvanceRow,
- int blobPartSize) {
+ int blobPartSize, final int attachmentV2MigrationReadTimeout) {
this.aclMaxRetry = aclMaxRetry;
this.messageReadChunkSize = messageReadChunkSize;
this.expungeChunkSize = expungeChunkSize;
@@ -206,6 +223,7 @@ public class CassandraConfiguration {
this.fetchNextPageInAdvanceRow = fetchNextPageInAdvanceRow;
this.flagsUpdateChunkSize = flagsUpdateChunkSize;
this.blobPartSize = blobPartSize;
+ this.attachmentV2MigrationReadTimeout = attachmentV2MigrationReadTimeout;
}
public int getBlobPartSize() {
@@ -248,6 +266,10 @@ public class CassandraConfiguration {
return fetchNextPageInAdvanceRow;
}
+ public int getAttachmentV2MigrationReadTimeout() {
+ return attachmentV2MigrationReadTimeout;
+ }
+
@Override
public final boolean equals(Object o) {
if (o instanceof CassandraConfiguration) {
@@ -262,7 +284,8 @@ public class CassandraConfiguration {
&& Objects.equals(this.uidMaxRetry, that.uidMaxRetry)
&& Objects.equals(this.flagsUpdateChunkSize, that.flagsUpdateChunkSize)
&& Objects.equals(this.fetchNextPageInAdvanceRow, that.fetchNextPageInAdvanceRow)
- && Objects.equals(this.blobPartSize, that.blobPartSize);
+ && Objects.equals(this.blobPartSize, that.blobPartSize)
+ && Objects.equals(this.attachmentV2MigrationReadTimeout, that.attachmentV2MigrationReadTimeout);
}
return false;
}
@@ -271,7 +294,7 @@ public class CassandraConfiguration {
public final int hashCode() {
return Objects.hash(aclMaxRetry, messageReadChunkSize, expungeChunkSize, flagsUpdateMessageIdMaxRetry,
flagsUpdateMessageMaxRetry, modSeqMaxRetry, uidMaxRetry, fetchNextPageInAdvanceRow, flagsUpdateChunkSize,
- blobPartSize);
+ blobPartSize, attachmentV2MigrationReadTimeout);
}
@Override
@@ -287,6 +310,7 @@ public class CassandraConfiguration {
.add("flagsUpdateChunkSize", flagsUpdateChunkSize)
.add("uidMaxRetry", uidMaxRetry)
.add("blobPartSize", blobPartSize)
+ .add("attachmentV2MigrationReadTimeout", attachmentV2MigrationReadTimeout)
.toString();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
index 473a56e..efde00e 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
@@ -21,7 +21,6 @@ package org.apache.james.backends.cassandra.init;
import static org.assertj.core.api.Assertions.assertThat;
-import org.apache.james.backends.cassandra.init.CassandraConfiguration;
import org.assertj.core.api.JUnitSoftAssertions;
import org.junit.Rule;
import org.junit.Test;
@@ -39,7 +38,9 @@ public class CassandraConfigurationTest {
@Test
public void cassandraConfigurationShouldRespectBeanContract() {
- EqualsVerifier.forClass(CassandraConfiguration.class).verify();
+ EqualsVerifier.forClass(CassandraConfiguration.class)
+ .allFieldsShouldBeUsed()
+ .verify();
}
@Test
@@ -193,6 +194,22 @@ public class CassandraConfigurationTest {
}
@Test
+ public void attachmentV2MigrationReadTimeoutShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .attachmentV2MigrationReadTimeout(0);
+ }
+
+ @Test
+ public void attachmentV2MigrationReadTimeoutShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .attachmentV2MigrationReadTimeout(-1);
+ }
+
+ @Test
public void builderShouldCreateTheRightObject() {
int aclMaxRetry = 1;
int modSeqMaxRetry = 2;
@@ -204,6 +221,7 @@ public class CassandraConfigurationTest {
int messageReadChunkSize = 8;
int expungeChunkSize = 9;
int blobPartSize = 10;
+ int attachmentV2MigrationReadTimeout = 11;
CassandraConfiguration configuration = CassandraConfiguration.builder()
.aclMaxRetry(aclMaxRetry)
@@ -216,6 +234,7 @@ public class CassandraConfigurationTest {
.messageReadChunkSize(messageReadChunkSize)
.expungeChunkSize(expungeChunkSize)
.blobPartSize(blobPartSize)
+ .attachmentV2MigrationReadTimeout(attachmentV2MigrationReadTimeout)
.build();
softly.assertThat(configuration.getAclMaxRetry()).isEqualTo(aclMaxRetry);
@@ -228,6 +247,7 @@ public class CassandraConfigurationTest {
softly.assertThat(configuration.getMessageReadChunkSize()).isEqualTo(messageReadChunkSize);
softly.assertThat(configuration.getExpungeChunkSize()).isEqualTo(expungeChunkSize);
softly.assertThat(configuration.getBlobPartSize()).isEqualTo(blobPartSize);
+ softly.assertThat(configuration.getAttachmentV2MigrationReadTimeout()).isEqualTo(attachmentV2MigrationReadTimeout);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
index 532dea3..e3d05a5 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
@@ -24,7 +24,6 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.delete;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
-import static java.lang.Math.toIntExact;
import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.FIELDS;
import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.ID;
import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.PAYLOAD;
@@ -36,11 +35,11 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
import javax.inject.Inject;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.model.Attachment;
@@ -53,16 +52,16 @@ import com.google.common.base.Preconditions;
public class CassandraAttachmentDAO {
- public static final int SELECT_ALL_TIMEOUT = toIntExact(TimeUnit.DAYS.toMillis(1));
private final CassandraAsyncExecutor cassandraAsyncExecutor;
private final CassandraUtils cassandraUtils;
+ private CassandraConfiguration configuration;
private final PreparedStatement insertStatement;
private final PreparedStatement deleteStatement;
private final PreparedStatement selectStatement;
private final PreparedStatement selectAllStatement;
@Inject
- public CassandraAttachmentDAO(Session session, CassandraUtils cassandraUtils) {
+ public CassandraAttachmentDAO(Session session, CassandraUtils cassandraUtils, CassandraConfiguration configuration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.selectStatement = prepareSelect(session);
@@ -70,6 +69,7 @@ public class CassandraAttachmentDAO {
this.deleteStatement = prepareDelete(session);
this.insertStatement = prepareInsert(session);
this.cassandraUtils = cassandraUtils;
+ this.configuration = configuration;
}
private PreparedStatement prepareDelete(Session session) {
@@ -111,7 +111,7 @@ public class CassandraAttachmentDAO {
return cassandraUtils.convertToStream(
cassandraAsyncExecutor.execute(
selectAllStatement.bind()
- .setReadTimeoutMillis(SELECT_ALL_TIMEOUT)
+ .setReadTimeoutMillis(configuration.getAttachmentV2MigrationReadTimeout())
.setFetchSize(1))
.join())
.map(this::attachment);
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
index c276ce2..312accd 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
@@ -58,7 +58,7 @@ public class TestCassandraMailboxSessionMapperFactory {
new CassandraMailboxPathDAO(session, typesProvider),
new CassandraFirstUnseenDAO(session),
new CassandraApplicableFlagDAO(session),
- new CassandraAttachmentDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION),
+ new CassandraAttachmentDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION, CassandraConfiguration.DEFAULT_CONFIGURATION),
new CassandraAttachmentDAOV2(session),
new CassandraDeletedMessageDAO(session),
cassandraBlobsDAO, CassandraUtils.WITH_DEFAULT_CONFIGURATION,
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
index 3b00a1a..4f53c2f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
@@ -26,6 +26,7 @@ import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.Attachment;
@@ -52,7 +53,9 @@ public class CassandraAttachmentDAOTest {
public void setUp() throws Exception {
cassandra = CassandraCluster.create(new CassandraAttachmentModule(),
cassandraServer.getIp(), cassandraServer.getBindingPort());
- testee = new CassandraAttachmentDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ testee = new CassandraAttachmentDAO(cassandra.getConf(),
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ CassandraConfiguration.DEFAULT_CONFIGURATION);
}
@After
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
index 90ad116..7408840 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.ids.BlobId;
@@ -66,7 +67,9 @@ public class CassandraAttachmentFallbackTest {
cassandraServer.getBindingPort());
attachmentDAOV2 = new CassandraAttachmentDAOV2(cassandra.getConf());
- attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ CassandraConfiguration.DEFAULT_CONFIGURATION);
blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
attachmentMapper = new CassandraAttachmentMapper(attachmentDAO, attachmentDAOV2, blobsDAO);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
index 7bbbb39..1b92747 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
@@ -30,6 +30,7 @@ import java.util.stream.Stream;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.ids.BlobId;
@@ -67,7 +68,9 @@ public class AttachmentV2MigrationTest {
cassandraServer.getIp(),
cassandraServer.getBindingPort());
- attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ CassandraConfiguration.DEFAULT_CONFIGURATION);
attachmentDAOV2 = new CassandraAttachmentDAOV2(cassandra.getConf());
blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index 885e39a..fb08814 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -72,6 +72,7 @@ public class CassandraSessionModule extends AbstractModule {
private static final String CHUNK_SIZE_MESSAGE_READ = "chunk.size.message.read";
private static final String CHUNK_SIZE_EXPUNGE = "chunk.size.expunge";
private static final String BLOB_PART_SIZE = "mailbox.blob.part.size";
+ private static final String ATTACHMENT_V2_MIGRATION_READ_TIMEOUT = "attachment.v2.migration.read.timeout";
private static final String CASSANDRA_NODES = "cassandra.nodes";
@Override
@@ -157,6 +158,8 @@ public class CassandraSessionModule extends AbstractModule {
propertiesConfiguration.getInteger(CHUNK_SIZE_EXPUNGE, null)))
.blobPartSize(Optional.ofNullable(
propertiesConfiguration.getInteger(BLOB_PART_SIZE, null)))
+ .attachmentV2MigrationReadTimeout(Optional.ofNullable(
+ propertiesConfiguration.getInteger(ATTACHMENT_V2_MIGRATION_READ_TIMEOUT, null)))
.build();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
index 29c3853..da0358e 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
@@ -60,6 +60,7 @@ public class CassandraSessionModuleTest {
.messageReadChunkSize(8)
.expungeChunkSize(9)
.blobPartSize(10)
+ .attachmentV2MigrationReadTimeout(11)
.build());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties b/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
index 8d6c9fe..d41cb75 100644
--- a/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
+++ b/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
@@ -8,3 +8,4 @@ chunk.size.flags.update=7
chunk.size.message.read=8
chunk.size.expunge=9
mailbox.blob.part.size=10
+attachment.v2.migration.read.timeout=11
http://git-wip-us.apache.org/repos/asf/james-project/blob/b3c308e9/src/site/xdoc/server/config-cassandra.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/server/config-cassandra.xml b/src/site/xdoc/server/config-cassandra.xml
index b8dc965..c2980c9 100644
--- a/src/site/xdoc/server/config-cassandra.xml
+++ b/src/site/xdoc/server/config-cassandra.xml
@@ -171,6 +171,21 @@
</subsection>
+ <subsection name="From V3 to V4">
+
+ <p>Migration tag on git repository: <a href="https://github.com/apache/james-project/releases/tag/cassandra_migration_v3_to_v4">cassandra_migration_v3_to_v4</a></p>
+
+ <p>Goal is to store attachments in the blob tables.</p>
+
+ <p>Summary of available options for this migration:</p>
+
+ <dl>
+ <dt><strong>attachment.v2.migration.read.timeout</strong></dt>
+ <dd>Optional. Defaults to one day.<br/> Controls how many milliseconds before the read on attachment v1 time out.</dd>
+ </dl>
+
+ </subsection>
+
</section>
</body>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org