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/02/15 13:36:15 UTC
[12/20] james-project git commit: JAMES-1925 Avoid CassandraACLMapper
to instanciate CassandraAsyncExecutor on each request
JAMES-1925 Avoid CassandraACLMapper to instanciate CassandraAsyncExecutor on each request
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b1dad43c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b1dad43c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b1dad43c
Branch: refs/heads/master
Commit: b1dad43c51255f27ae1edc2f9b248c67f6e3dac5
Parents: 422209e
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Feb 14 13:27:01 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Feb 15 13:12:38 2017 +0100
----------------------------------------------------------------------
.../cassandra/mail/CassandraACLMapper.java | 8 ++++----
.../cassandra/mail/CassandraMailboxDAO.java | 4 ++--
.../cassandra/mail/CassandraMailboxMapper.java | 7 +++++--
.../cassandra/mail/CassandraACLMapperTest.java | 19 ++++++++++++++-----
4 files changed, 25 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b1dad43c/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index 18b406a..68698ca 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -66,16 +66,16 @@ public class CassandraACLMapper {
private static final Logger LOG = LoggerFactory.getLogger(CassandraACLMapper.class);
- public CassandraACLMapper(CassandraId cassandraId, Session session, int maxRetry) {
- this(cassandraId, session, maxRetry, () -> {});
+ public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, int maxRetry) {
+ this(cassandraId, session, cassandraAsyncExecutor, maxRetry, () -> {});
}
- public CassandraACLMapper(CassandraId cassandraId, Session session, int maxRetry, CodeInjector codeInjector) {
+ public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, int maxRetry, CodeInjector codeInjector) {
Preconditions.checkArgument(maxRetry > 0);
Preconditions.checkArgument(cassandraId != null);
this.cassandraId = cassandraId;
this.session = session;
- this.executor = new CassandraAsyncExecutor(session);
+ this.executor = cassandraAsyncExecutor;
this.maxRetry = maxRetry;
this.codeInjector = codeInjector;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b1dad43c/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
index 8b5868a..2efce2a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
@@ -140,7 +140,7 @@ public class CassandraMailboxDAO {
}
private CompletableFuture<Optional<SimpleMailbox>> mailbox(CassandraId cassandraId, CompletableFuture<Optional<Row>> rowFuture) {
- CompletableFuture<MailboxACL> aclCompletableFuture = new CassandraACLMapper(cassandraId, session, maxAclRetry).getACL();
+ CompletableFuture<MailboxACL> aclCompletableFuture = new CassandraACLMapper(cassandraId, session, executor, maxAclRetry).getACL();
return rowFuture.thenApply(rowOptional -> rowOptional.map(this::mailboxFromRow))
.thenApply(mailboxOptional -> {
mailboxOptional.ifPresent(mailbox -> mailbox.setMailboxId(cassandraId));
@@ -176,7 +176,7 @@ public class CassandraMailboxDAO {
private CompletableFuture<SimpleMailbox> toMailboxWithAclFuture(SimpleMailbox mailbox) {
CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
- return new CassandraACLMapper(cassandraId, session, maxAclRetry).getACL()
+ return new CassandraACLMapper(cassandraId, session, executor, maxAclRetry).getACL()
.thenApply(acl -> {
mailbox.setACL(acl);
return mailbox;
http://git-wip-us.apache.org/repos/asf/james-project/blob/b1dad43c/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 4314148..d88a6e7 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -39,6 +39,7 @@ import java.util.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
+import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.CassandraId;
import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
@@ -72,11 +73,13 @@ public class CassandraMailboxMapper implements MailboxMapper {
private final Session session;
private final int maxRetry;
private final CassandraTypesProvider typesProvider;
+ private final CassandraAsyncExecutor cassandraAsyncExecutor;
public CassandraMailboxMapper(Session session, CassandraTypesProvider typesProvider, int maxRetry) {
this.session = session;
this.maxRetry = maxRetry;
this.typesProvider = typesProvider;
+ this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
}
@Override
@@ -159,7 +162,7 @@ public class CassandraMailboxMapper implements MailboxMapper {
@Override
public void updateACL(Mailbox mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
- new CassandraACLMapper(cassandraId, session, maxRetry).updateACL(mailboxACLCommand);
+ new CassandraACLMapper(cassandraId, session, cassandraAsyncExecutor, maxRetry).updateACL(mailboxACLCommand);
}
@Override
@@ -176,7 +179,7 @@ public class CassandraMailboxMapper implements MailboxMapper {
row.getLong(UIDVALIDITY));
CassandraId mailboxId = CassandraId.of(row.getUUID(ID));
mailbox.setMailboxId(mailboxId);
- mailbox.setACL(new CassandraACLMapper(mailboxId, session, maxRetry).getACL().join());
+ mailbox.setACL(new CassandraACLMapper(mailboxId, session, cassandraAsyncExecutor, maxRetry).getACL().join());
return mailbox;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b1dad43c/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index ebff807..5e1d5a4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.cassandra.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
@@ -49,13 +50,15 @@ public class CassandraACLMapperTest {
public static final int MAX_RETRY = 100;
private CassandraACLMapper cassandraACLMapper;
private CassandraCluster cassandra;
+ private CassandraAsyncExecutor cassandraAsyncExecutor;
private ExecutorService executor;
@Before
public void setUp() {
cassandra = CassandraCluster.create(new CassandraAclModule());
cassandra.ensureAllTables();
- cassandraACLMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), MAX_RETRY);
+ cassandraAsyncExecutor = new CassandraAsyncExecutor(cassandra.getConf());
+ cassandraACLMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, MAX_RETRY);
executor = Executors.newFixedThreadPool(2);
}
@@ -67,12 +70,14 @@ public class CassandraACLMapperTest {
@Test(expected = IllegalArgumentException.class)
public void creatingACLMapperWithNegativeMaxRetryShouldFail() {
- new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), -1);
+ int maxRetry = -1;
+ new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, maxRetry);
}
@Test(expected = IllegalArgumentException.class)
public void creatingACLMapperWithNullMaxRetryShouldFail() {
- new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), 0);
+ int maxRetry = 0;
+ new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, maxRetry);
}
@Test
@@ -194,13 +199,17 @@ public class CassandraACLMapperTest {
private void awaitAll(Future<?>... futures)
throws InterruptedException, ExecutionException, TimeoutException {
for (Future<?> future : futures) {
- future.get(10l, TimeUnit.SECONDS);
+ future.get(10L, TimeUnit.SECONDS);
}
}
private Future<Boolean> performACLUpdateInExecutor(ExecutorService executor, SimpleMailboxACL.SimpleMailboxACLEntryKey key, SimpleMailboxACL.Rfc4314Rights rights, CassandraACLMapper.CodeInjector runnable) {
return executor.submit(() -> {
- CassandraACLMapper aclMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), MAX_RETRY, runnable);
+ CassandraACLMapper aclMapper = new CassandraACLMapper(MAILBOX_ID,
+ cassandra.getConf(),
+ new CassandraAsyncExecutor(cassandra.getConf()),
+ MAX_RETRY,
+ runnable);
try {
aclMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights));
} catch (MailboxException exception) {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org