Repository: james-project
Updated Branches:
  refs/heads/master dbc653d16 -> 50aacfe7f


MAILBOX-295 Add Cassandra TABLE creation options


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/432e1238
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/432e1238
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/432e1238

Branch: refs/heads/master
Commit: 432e123817f766f0b3edda95a1c50e82a337112e
Parents: dbc653d
Author: benwa <[email protected]>
Authored: Thu May 18 09:17:07 2017 +0700
Committer: benwa <[email protected]>
Committed: Fri May 19 17:30:31 2017 +0700

----------------------------------------------------------------------
 .../cassandra/utils/CassandraConstants.java     |  3 +++
 .../cassandra/modules/CassandraAclModule.java   |  6 +++++-
 .../modules/CassandraAnnotationModule.java      |  7 ++++++-
 .../modules/CassandraApplicableFlagsModule.java |  7 ++++++-
 .../modules/CassandraDeletedMessageModule.java  |  7 ++++++-
 .../modules/CassandraFirstUnseenModule.java     |  4 ++++
 .../modules/CassandraMailboxCounterModule.java  |  7 ++++++-
 .../modules/CassandraMailboxModule.java         | 11 ++++++++--
 .../modules/CassandraMailboxRecentsModule.java  |  7 ++++++-
 .../modules/CassandraMessageModule.java         | 16 ++++++++++++--
 .../modules/CassandraModSeqModule.java          |  7 ++++++-
 .../cassandra/modules/CassandraQuotaModule.java | 22 ++++++++++++++------
 .../modules/CassandraRegistrationModule.java    |  5 ++++-
 .../modules/CassandraSubscriptionModule.java    |  7 ++++++-
 .../cassandra/modules/CassandraUidModule.java   |  7 ++++++-
 .../cassandra/CassandraDomainListModule.java    | 12 +++++++----
 .../james/rrt/cassandra/CassandraRRTModule.java | 16 ++++++++------
 .../cassandra/access/CassandraAccessModule.java |  6 +++++-
 .../CassandraNotificationRegistryModule.java    |  7 ++++++-
 .../vacation/CassandraVacationModule.java       |  6 +++++-
 20 files changed, 137 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java
----------------------------------------------------------------------
diff --git 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java
 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java
index ec6f2df..b152088 100644
--- 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java
+++ 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java
@@ -21,4 +21,7 @@ package org.apache.james.backends.cassandra.utils;
 
 public interface CassandraConstants {
     int LIGHTWEIGHT_TRANSACTION_APPLIED = 0;
+
+
+    int DEFAULT_CACHED_ROW_PER_PARTITION = 10;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
index 71527a2..e788b7e 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
@@ -29,6 +29,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -45,7 +46,10 @@ public class CassandraAclModule implements CassandraModule {
                     .ifNotExists()
                     .addPartitionKey(CassandraACLTable.ID, timeuuid())
                     .addColumn(CassandraACLTable.ACL, text())
-                    .addColumn(CassandraACLTable.VERSION, bigint())));
+                    .addColumn(CassandraACLTable.VERSION, bigint())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
index 0dbe487..91740a2 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraAnnotationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -43,7 +44,11 @@ public class CassandraAnnotationModule implements 
CassandraModule {
                     .ifNotExists()
                     .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, 
timeuuid())
                     .addClusteringColumn(CassandraAnnotationTable.KEY, text())
-                    .addColumn(CassandraAnnotationTable.VALUE, text())));
+                    .addColumn(CassandraAnnotationTable.VALUE, text())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
index 57d6f24..0ad45c7 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
@@ -30,6 +30,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraApplicableFlagTable;
 import org.apache.james.mailbox.cassandra.table.Flag;
 
@@ -51,7 +52,11 @@ public class CassandraApplicableFlagsModule implements 
CassandraModule {
                     .addColumn(Flag.DRAFT, cboolean())
                     .addColumn(Flag.FLAGGED, cboolean())
                     .addColumn(Flag.SEEN, cboolean())
-                    .addColumn(Flag.USER_FLAGS, set(text()))));
+                    .addColumn(Flag.USER_FLAGS, set(text()))
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
index c9a156f..2e97e36 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 
 import com.datastax.driver.core.DataType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -43,7 +44,11 @@ public class CassandraDeletedMessageModule implements 
CassandraModule {
             SchemaBuilder.createTable(TABLE_NAME)
                 .ifNotExists()
                 .addPartitionKey(MAILBOX_ID, DataType.timeuuid())
-                .addClusteringColumn(UID, DataType.bigint())));
+                .addClusteringColumn(UID, DataType.bigint())
+                .withOptions()
+                .compactionOptions(SchemaBuilder.leveledStrategy())
+                .caching(SchemaBuilder.KeyCaching.ALL,
+                    
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
index 1e3d1b8..871f779 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraFirstUnseenTable;
 
 import com.datastax.driver.core.DataType;
@@ -42,6 +43,9 @@ public class CassandraFirstUnseenModule implements 
CassandraModule {
                 .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, 
DataType.timeuuid())
                 .addClusteringColumn(CassandraFirstUnseenTable.UID, 
DataType.bigint())
                 .withOptions()
+                .compactionOptions(SchemaBuilder.leveledStrategy())
+                .caching(SchemaBuilder.KeyCaching.ALL,
+                    
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
                 .clusteringOrder(CassandraFirstUnseenTable.UID, 
SchemaBuilder.Direction.ASC)));
         types = ImmutableList.of();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
index 9ecba5a..548bd8a 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxCountersTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -44,7 +45,11 @@ public class CassandraMailboxCounterModule implements 
CassandraModule {
                     .ifNotExists()
                     .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, 
timeuuid())
                     .addColumn(CassandraMailboxCountersTable.COUNT, counter())
-                    .addColumn(CassandraMailboxCountersTable.UNSEEN, 
counter())));
+                    .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
index e26e54c..3b44c7e 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathTable;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
 
@@ -47,13 +48,19 @@ public class CassandraMailboxModule implements 
CassandraModule {
                     .addPartitionKey(CassandraMailboxTable.ID, timeuuid())
                     .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, 
SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
                     .addColumn(CassandraMailboxTable.NAME, text())
-                    .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())),
+                    .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
             new CassandraTable(CassandraMailboxPathTable.TABLE_NAME,
                 SchemaBuilder.createTable(CassandraMailboxPathTable.TABLE_NAME)
                     .ifNotExists()
                     
.addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, 
SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
                     
.addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text())
-                    .addColumn(CassandraMailboxPathTable.MAILBOX_ID, 
timeuuid())));
+                    .addColumn(CassandraMailboxPathTable.MAILBOX_ID, 
timeuuid())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of(
             new CassandraType(CassandraMailboxTable.MAILBOX_BASE,
                 SchemaBuilder.createType(CassandraMailboxTable.MAILBOX_BASE)

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
index d2a41d1..65412c2 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxRecentsTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -43,7 +44,11 @@ public class CassandraMailboxRecentsModule implements 
CassandraModule {
                 
SchemaBuilder.createTable(CassandraMailboxRecentsTable.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, 
timeuuid())
-                    
.addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, 
bigint())));
+                    
.addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
index 8654913..aa45f52 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
@@ -33,6 +33,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageIdTable;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageIds;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageTable;
@@ -40,10 +41,13 @@ import org.apache.james.mailbox.cassandra.table.Flag;
 import org.apache.james.mailbox.cassandra.table.MessageIdToImapUid;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.datastax.driver.core.schemabuilder.TableOptions;
 import com.google.common.collect.ImmutableList;
 
 public class CassandraMessageModule implements CassandraModule {
 
+    public static final int CACHED_MESSAGE_ID_ROWS = 1000;
+    public static final int CACHED_IMAP_UID_ROWS = 100;
     private final List<CassandraTable> tables;
     private final List<CassandraType> types;
 
@@ -63,7 +67,11 @@ public class CassandraMessageModule implements 
CassandraModule {
                     .addColumn(Flag.RECENT, cboolean())
                     .addColumn(Flag.SEEN, cboolean())
                     .addColumn(Flag.USER, cboolean())
-                    .addColumn(Flag.USER_FLAGS, set(text()))),
+                    .addColumn(Flag.USER_FLAGS, set(text()))
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        SchemaBuilder.rows(CACHED_IMAP_UID_ROWS))),
             new CassandraTable(CassandraMessageIdTable.TABLE_NAME,
                 SchemaBuilder.createTable(CassandraMessageIdTable.TABLE_NAME)
                     .ifNotExists()
@@ -78,7 +86,11 @@ public class CassandraMessageModule implements 
CassandraModule {
                     .addColumn(Flag.RECENT, cboolean())
                     .addColumn(Flag.SEEN, cboolean())
                     .addColumn(Flag.USER, cboolean())
-                    .addColumn(Flag.USER_FLAGS, set(text()))),
+                    .addColumn(Flag.USER_FLAGS, set(text()))
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS))),
             new CassandraTable(CassandraMessageTable.TABLE_NAME,
                 SchemaBuilder.createTable(CassandraMessageTable.TABLE_NAME)
                     .ifNotExists()

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
index 3b90f16..9588642 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
@@ -29,6 +29,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -44,7 +45,11 @@ public class CassandraModSeqModule implements 
CassandraModule {
                 
SchemaBuilder.createTable(CassandraMessageModseqTable.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, 
timeuuid())
-                    .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, 
bigint())));
+                    .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, 
bigint())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
index 44fa861..a56aec7 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota;
 import org.apache.james.mailbox.cassandra.table.CassandraDefaultMaxQuota;
 import org.apache.james.mailbox.cassandra.table.CassandraMaxQuota;
@@ -43,22 +44,31 @@ public class CassandraQuotaModule implements 
CassandraModule {
     public CassandraQuotaModule() {
         tables = ImmutableList.of(
             new CassandraTable(CassandraCurrentQuota.TABLE_NAME,
-                    SchemaBuilder.createTable(CassandraCurrentQuota.TABLE_NAME)
+                SchemaBuilder.createTable(CassandraCurrentQuota.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraCurrentQuota.QUOTA_ROOT, text())
                     .addColumn(CassandraCurrentQuota.MESSAGE_COUNT, counter())
-                    .addColumn(CassandraCurrentQuota.STORAGE, counter())),
+                    .addColumn(CassandraCurrentQuota.STORAGE, counter())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
             new CassandraTable(CassandraMaxQuota.TABLE_NAME,
-                    SchemaBuilder.createTable(CassandraMaxQuota.TABLE_NAME)
+                SchemaBuilder.createTable(CassandraMaxQuota.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraMaxQuota.QUOTA_ROOT, text())
                     .addColumn(CassandraMaxQuota.MESSAGE_COUNT, bigint())
-                    .addColumn(CassandraMaxQuota.STORAGE, bigint())),
+                    .addColumn(CassandraMaxQuota.STORAGE, bigint())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
             new CassandraTable(CassandraDefaultMaxQuota.TABLE_NAME,
-                    
SchemaBuilder.createTable(CassandraDefaultMaxQuota.TABLE_NAME)
+                SchemaBuilder.createTable(CassandraDefaultMaxQuota.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraDefaultMaxQuota.TYPE, text())
-                    .addColumn(CassandraDefaultMaxQuota.VALUE, bigint())));
+                    .addColumn(CassandraDefaultMaxQuota.VALUE, bigint())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
index ee674d9..2c05ca3 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
@@ -42,7 +42,10 @@ public class CassandraRegistrationModule implements 
CassandraModule {
                 
SchemaBuilder.createTable(CassandraMailboxPathRegisterTable.TABLE_NAME)
                     .ifNotExists()
                     
.addUDTPartitionKey(CassandraMailboxPathRegisterTable.MAILBOX_PATH, 
SchemaBuilder.frozen(CassandraMailboxPathRegisterTable.MAILBOX_PATH))
-                    
.addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())));types = 
Collections.singletonList(
+                    
.addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.dateTieredStrategy())));
+        types = Collections.singletonList(
             new CassandraType(CassandraMailboxPathRegisterTable.MAILBOX_PATH,
                 
SchemaBuilder.createType(CassandraMailboxPathRegisterTable.MAILBOX_PATH)
                     .ifNotExists()

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
index 23773a2..8ec73fc 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
@@ -26,6 +26,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraSubscriptionTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -33,6 +34,7 @@ import com.google.common.collect.ImmutableList;
 
 public class CassandraSubscriptionModule implements CassandraModule {
 
+    public static final int PER_USER_CACHED_SUBSCRIPTIONS = 100;
     private final List<CassandraTable> tables;
     private final List<CassandraType> types;
 
@@ -42,7 +44,10 @@ public class CassandraSubscriptionModule implements 
CassandraModule {
                 
SchemaBuilder.createTable(CassandraSubscriptionTable.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraSubscriptionTable.USER, text())
-                    .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, 
text())));
+                    .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, 
text())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        SchemaBuilder.rows(PER_USER_CACHED_SUBSCRIPTIONS))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
index 54d922b..2df0029 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
@@ -29,6 +29,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -44,7 +45,11 @@ public class CassandraUidModule implements CassandraModule {
                 SchemaBuilder.createTable(CassandraMessageUidTable.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, 
timeuuid())
-                    .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())));
+                    .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.leveledStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = Collections.emptyList();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
index cc59ad5..a682bfe 100644
--- 
a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
+++ 
b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
@@ -26,6 +26,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -37,10 +38,13 @@ public class CassandraDomainListModule implements 
CassandraModule {
 
     public CassandraDomainListModule() {
         tables = ImmutableList.of(
-                new CassandraTable(CassandraDomainsTable.TABLE_NAME,
-                        
SchemaBuilder.createTable(CassandraDomainsTable.TABLE_NAME)
-                        .ifNotExists()
-                        .addPartitionKey(CassandraDomainsTable.DOMAIN, 
text())));
+            new CassandraTable(CassandraDomainsTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraDomainsTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraDomainsTable.DOMAIN, text())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
index cf681f1..1374d48 100644
--- 
a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
+++ 
b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
@@ -26,6 +26,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import 
org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -38,12 +39,15 @@ public class CassandraRRTModule implements CassandraModule {
 
     public CassandraRRTModule() {
         tables = ImmutableList.of(
-                new 
CassandraTable(CassandraRecipientRewriteTableTable.TABLE_NAME,
-                    
SchemaBuilder.createTable(CassandraRecipientRewriteTableTable.TABLE_NAME)
-                        .ifNotExists()
-                        
.addPartitionKey(CassandraRecipientRewriteTableTable.USER, text())
-                        
.addClusteringColumn(CassandraRecipientRewriteTableTable.DOMAIN, text())
-                        
.addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text())));
+            new CassandraTable(CassandraRecipientRewriteTableTable.TABLE_NAME,
+                
SchemaBuilder.createTable(CassandraRecipientRewriteTableTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraRecipientRewriteTableTable.USER, 
text())
+                    
.addClusteringColumn(CassandraRecipientRewriteTableTable.DOMAIN, text())
+                    
.addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
index 33439af..53fb2f3 100644
--- 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
+++ 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
@@ -27,6 +27,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.jmap.cassandra.access.table.CassandraAccessTokenTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -43,7 +44,10 @@ public class CassandraAccessModule implements 
CassandraModule {
                 SchemaBuilder.createTable(CassandraAccessTokenTable.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid())
-                    .addColumn(CassandraAccessTokenTable.USERNAME, text())));
+                    .addColumn(CassandraAccessTokenTable.USERNAME, text())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
index 8023829..c920eba 100644
--- 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
+++ 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
@@ -26,6 +26,7 @@ import java.util.List;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import 
org.apache.james.jmap.cassandra.vacation.tables.CassandraNotificationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -42,7 +43,11 @@ public class CassandraNotificationRegistryModule implements 
CassandraModule {
                 
SchemaBuilder.createTable(CassandraNotificationTable.TABLE_NAME)
                     .ifNotExists()
                     .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, 
text())
-                    
.addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text())));
+                    
.addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text())
+                    .withOptions()
+                    .compactionOptions(SchemaBuilder.dateTieredStrategy())
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
index 48d3f1d..4565b86 100644
--- 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
+++ 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
@@ -28,6 +28,7 @@ import 
org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
 import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.jmap.cassandra.vacation.tables.CassandraVacationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
@@ -49,7 +50,10 @@ public class CassandraVacationModule implements 
CassandraModule {
                     .addUDTColumn(CassandraVacationTable.TO_DATE, 
SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME))
                     .addColumn(CassandraVacationTable.TEXT, text())
                     .addColumn(CassandraVacationTable.SUBJECT, text())
-                    .addColumn(CassandraVacationTable.HTML, text())));
+                    .addColumn(CassandraVacationTable.HTML, text())
+                    .withOptions()
+                    .caching(SchemaBuilder.KeyCaching.ALL,
+                        
SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
         types = ImmutableList.of();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to